LVS集群:开源免费,具有高可用性,高稳定性,高可靠性
高可用性:lvs的负载均衡集群具有很高的处理能力,real server组中的某台node节点出问题了,不会影响整个集群的正常工作;而且具有超高负荷的服务能力,可支持上百万个并发连接数
缺点:在LB上容易出现单点故障,若只有一台LB机,虽然LB机的负载不是很高,但是一旦出现问题整个集群将无法再正常工作;解决这个问题的方法是:对LB机做一个热备机(双机热备),正常情况下LB机工作,当LB机出现问题的时候由热备机接管,继续工作(备用LB机通过heartbeat心跳监控主LB机的运行状态,当主LB机出现问题,备用LB机将接管主LB机的vip和服务继续工作)
heartbeat:主要用在主备LB机上,实现心跳检测和资源接管
lvs的组成:前端LB负载均衡机,后端的real server,以及共享存储数据的设备
LB负载均衡机:位于整个集群的最前端,LVS的核心模块IPVS就安装在LB机上,LB机类似于一个路由器,在上面有一个路由表,通过这个路由表把用户的请求交给real server ,同时在LB机上还安装一个监控模块Ldirectord(heartbeat软件包中包含了这个Ldirectord插件),此模块用来监控real server的健康状况,如果某台real server出现问题,则从集群中剔除,恢复正常后再加入集群
负载均衡方法有多种:基于DNS的,通过轮询解析域名的A记录来实现负载均衡;基于ip的负载均衡技术。 lvs采用的是基于ip的负载均衡技术
ip负载均衡技术:是通过IPVS模块来实现的,IPVS模块安装在LB负载机上,在LB负载机上虚拟出一个ip,及vip,客户访问的时候就是访问的这个vip,然后再由负载调度器通过某种调度算法选择一台real server,把客户的请求交给选定的real server
IPVS:是lvs集群系统的核心软件,主要用于当用户请求到达负载调度器后,如何将用户的请求分发给real server及real server处理完请求后如何将数据返回给用户
调度算法:轮询调度:将用户的请求平等的交给每台real server,这样会有一个问题就是如果real server性能不一样,就会出现性能高的机器处理请求快处于空闲状态,性能低的机器处理请求慢处于忙碌的状态
权重方式:根据real server性能的不同分配不同的权重,性能高的权重高,处理请求多;性能低的权重低,处理请求少
最少连接数:根据real server的连接数多少来分配请求,连接数少的优先去处理客户的请求,适用于每台real server性能相似的情况
集群中IPVS实现负载的方式有三种:NAT(网络地址转换),DR(直接路由),TUN(隧道)
NAT方式:当用户访问LB机上vip,请求到达负载调度器时,调度器会把目标ip和端口(即vip地址和端口号)改写成选定的real server的ip和端口号,然后把请求交给选定的real server,real server处理完请求后把数据交给LB机,然后调度器再把real server的ip和端口改会vip的地址和端口,最后把数据交给用户;这种方式访问请求和返回数据都会经过LB机,所以LB机会有很大的压力,容易出现瓶颈
DR方式:real server返回数据时不再经过LB机,而是直接将数据返回给用户(因此不但在LB机上设置vip,而且在每台real server上也要配置vip,real server处理完用户的请求后直接将数据返回给用户,用户收到请求数据后发现来源ip(real server上的vip)是之前自己发送的那个数据请求的目的ip地址,便接受这个数据请求)
real server上的vip:是绑定在lo接口上的:ifconfig lo:0 118.192.64.120 broadcast 118.192.64.120 netmask 255.255.255.255 up
总体描述:
LB负载均衡集群:只有一个LB负载均衡机
HA(High availability)的LB负载均衡集群:对LB机做双机热备
LB负载均衡集群具有高可用性,高稳定性,高可靠性;实现集群负载的方式有三种:NAT(网络地址转换),DR(直接路由),TUN(隧道);最常用的是DR直接路由方式,当用户访问LB机的vip,请求到达负载调度器后,负载调度器通过某种调度算法选择一台real server,把客户的请求交给选定的real server,real server处理完请求后把数据直接返回给用户,不再经过LB机了,这就需要在real server上绑定vip,这个vip绑定在lo接口上,lo是一个回旋地址,只用来做本地的测试,不进行网络间的数据传输;我们需要在LB机上安装IPVS模块来实现负载均衡,用于当用户请求到达负载调度器后,如何将用户的请求分发给real server及real server处理完请求后如何将数据返回给用户;同时我们还需要在LB机上安装heartbeat,使用heartbeat的一个插件Ldirectord来监控real server的健康状况,如果某台real server出现问题,则从集群中剔除,恢复正常后再加入集群;这种情况下只有一台LB机,在LB上容易出现单点故障,若只有一台LB机,虽然LB机的负载不是很高,但是一旦出现问题整个集群将无法再正常工作,因此我们可以对LB机做一个双机热备,通过刚才安装的heartbeat心跳监控LB机的运行状态,当主LB机出现问题,备用LB机将接管主LB机的vip和服务继续工作,从而实现高可用性