名词解析
vs:virtual server
rs:real server,后面真实的服务器
director:调度器
balancer:负载均衡器
客户端向调度器发送请求时:
客户端的ip=cip(client ip)
接收客户端请求的ip=vip(virtual server ip)
真实服务器的ip=rip(real server ip)
1.DR模式(直接路由)
DR模式性能最佳,但必须要求在一个vlan中。
数据包流向:client–>vs–>rs–> client
DR模式下收到客户端请求,lvs会将vs的mac地址修改为某一台rs的mac地址(注:ip地址是逻辑地址,mac地址才是真正的通信地址,所以我们才可以通过修改mac地址发送到指定的rs),然后这个数据包会被转发到相应的rs处理(此时源ip和目标ip未变)。如数据帧流向所示,客户端请求由lvs接收,但返回的时候不经过lvs,而是直接向源ip返回,由真实服务器直接返回给用户。
优点:效率最高,负载均衡器只用分发请求,应答包通过单独的路由返回给客户端,提高了服务器并发能力。
缺点:负载均衡器的网卡必须和物理网卡在同一网段上
2.NAT模式(多目标DNAT)
NAT模式下收到客户端请求,lvs会做目的地址转换(DNAT),将目标ip改为rs的ip。rs接收到该数据包直接进行处理,返回响应时,目标ip即为cip,源ip即为rs的ip。然后,rs的数据包通过lvs中转,lvs进行源地址转换(SNAT),将数据包的源地址(rip)改为vip发送至客户端(rip不会直接响应cip),整个过程对于客户端来说是不可见的。
缺点:扩展性有限。高负载模式下,director可能成为瓶颈
优点:支持任意操作系统,节点服务器使用私有IP地址,与负载调度器位于同一个物理网络,安全性比DR模式和TUN模式要高。
3.TUNNEL(隧道)模式
隧道模式下,vs 收到客户端请求,封装数据包,使源 ip 成为 vip,目标 ip 成为
rip,当 rs 收到数据包时,进行解封装,还原数据包,处理后,利用 vip 发出响应
从 rip 所在的接口发出,直接达到客户端。
优点:实现了异地容灾,避免了一个机房故障导致网站无法访问。
缺点:RS配置复杂
4.FULLNAT模式
FULLNAT模式可以解决lvs和rs跨vlan的问题,从此lvs和rs不再存在vlan上的从属关系,可以作到多个lvs对应多个rs,解决水平扩容的问题。
FULLNAT在NAT模式上做了如下改进:
在DNAT时,源地址从客户端的ip被替换成了lvs内网ip。而内网ip之间,可以通过多个交换机跨vlan通信。当rs返回经过处理的数据包时,会将这个数据包返回到lvs的内网ip上,此时lvs进行源地址转换(SNAT),把数据包的目的地址从lvs内网ip替换为客户端ip。
lvs负载均衡的核心是调度器,而调度器的核心是各种调度策略。下面是lvs的八种调度算法介绍:
1.轮叫调度
调度器通过外部请求的顺序轮流的分配到集群中的真实服务器上,对每台服务器都是均等的。但是这样调度器不会考虑服务器上实际的连接数和系统负载,导致服务器处理请求慢,系统负载增大。
2.加权轮叫
调度器通过一个算法根据真实服务器的不同处理能力来分配访问请求,这样可以保证服务器的处理能力。
3.最少连接
调度器将访问请求自动的分配到已建立连接最少的服务器上,如果在集群中每台服务器的性能差不多的话,则这种算法可以较好的均衡负载。
4.加权最少连接
主要用于集群中服务器性能差异大的情况下,调度器可以优化负载性能,具有较高权值的服务器可以将承受较大的活动连接。
5.基于局部性的最少连接
主要是针对目标IP地址的负载均衡,将请求的目标IP地址找到离其最近的服务器进行使用,如果服务器不存在或者满载的话,就会继续寻找下一个服务器。
6.带复制的基于局部性的最少连接
主要是针对目标IP地址的负载均衡,根据请求的目标IP地址找出该地址所对应的服务器,如果服务器不存在或者满载的话,就会继续寻找下一个服务器。当服务器有一段时间没有被修改,则会从最忙的服务器组中删除。
7.目标地址散列
根据请求的目标IP地址从静态分配的散列表中超出对应的服务器,如果找到可用的服务器且没有满载,则返回空。
8.源地址散列
根据请求的源IP地址从静态分配的散列表中超出对应的服务器,如果找到可用的服务器且没有满载,则返回空。