LB 集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有
nginx、lvs、keepalived ,商业的硬件负载设备 F5、Netscale。
LB 集群的架构如下图,原理也很简单,就是当用户的请求过来时,会直接发到分发器(Director Server)上,然后它把用户的请求根据预先设置好的算法,智能均衡地分发到后端的真正服务器(real server)上。如果不同的机器,可能用户请求到的数据不一样,为了避免这样的情况发生,所以用到了共享存储,这样保证所有用户请求的数据是一样的。
LVS 是一个实现负载均衡集群的开源软件项目,LVS 架构从逻辑上可分为调度层(Director)、server 集
群层(Real server)和共享存储。LVS 从实现上分为下面三种模式。
(1)NAT(调度器将请求的目标 ip 即 vip 地址改为 Real server 的 ip, 返回的数据包也经过调度器
,调度器再把源地址修改为 vip)。
(2) TUN (调度器将请求来的数据包封装加密通过 ip 隧道转发到后端的 real server 上,而 real
server 会直接把数据返回给客户端,而不再经过调度器)。
(3)DR(调度器将请求来的数据包的目标 mac 地址改为 real server 的 mac 地址,返回的时候也不经过调度器,直接返回给客户端)。参考资料 http://www.it165.net/admin/html/201401/2248.html
图中出现的几个 IP 概念,需要解释一下,其中 DIP(driector ip)为分发器的 IP,NAT 模式下它必须为公网 IP,要对外服务。VIP(virtual ip)为虚拟 IP,用在 TUN 和 DR 模式中,需要同时配置在分发器和后端真实服务器上。RIP(Real IP)为后端真实服务器的 IP,在 TUN 和DR 模式中,RIP 为公网 IP。要想把用户的请求调度给后端的 RS,是需要经过调度算法来实现的,那么关于 LVS 的调度算法,都有哪些?
(1)轮叫调度(Round Robin)(简称 rr),这种算法是最简单的,不管后端 RS 配置和处理能力,非常均
衡地分发下去。
(2)加权轮叫(Weighted Round Robin)(简称 wrr),比上面的算法多了一个权重的概念,可以给 RS 设
置权重,权重越高,那么分发的请求数越多,权重取值范围 0-100。
(3)最少链接(least connection)(LC),这个算法会根据后端 RS 的连接数来决定把请求分发给谁,比
如 RS1 连接数比 RS2 连接数少,那么请求就优先发给 RS1。
(4)加权最少链接(Weighted Least Connections)(WLC) ,比第三个算法多了一个权重的概念。