LVS(Linux Virtual Server)即Linux虚拟服务器,是章文嵩博士主导的开源负载均衡项目,LVS本身并不提供服务,只是把特定的请求转发给相应的真实服务器(real server),从而实现集群环境中的负载均衡。

LVS工作模式

LVS工作模式主要有DR直接路由模式、NAT模式、TUN模式、FULL-NAT模式,这边我们主要讲DR模式和NAT模式。

DR模式

(1)客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址是VIP
(2)负载均衡器收到报文后,发现请求的是规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,将目标MAC地址改为RIP的MAC地址,并将此请求发给RS服务器
(3)RS发现请求报文中目的MAC是自己的,就会将此报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端

NAT模式

(1)客户端将请求发往前端的负载均衡器,此请求报文源地址是CIP(客户端IP),目标地址VIP(负载均衡器地址)
(2)负载均衡器接收到报文后,发现请求是规则里面存在的地址,那么它将客户端请求报文的目标IP地址改成了RS服务器的地址,并根据算法发送出去
(3)RS服务器发现报文的目标地址是自己的,所以就会响应请求,并将响应报文返回给负载均衡器
(4)负载均衡器接收到响应的报文,将源地址修改为本机地址并发送给客户端

LVS负载均衡算法

根据前面的介绍,我们了解LVS常用的两种工作模式的原理,但不管环境中采用哪种工作模式,调度算法是LVS的核心技术,下面列举了LVS常用的几种调度算法。
(1)RR
RR即轮询算法,是按依次循环的方式将请求均匀调度到不同的服务器,该算法最大的特点就是实现简单,轮询算法假设所有服务器处理请求的能力都一样,调度器会将所有的请求平均分配至真实服务器。
(2)WRR
WRR即加权轮询算法,主要是对轮询算法的一种优化,LVS会考虑每台服务器的性能,并给每台服务器添加一个权值,权值越大,处理的请求就越多,比如服务器A权值是1,服务器B权值是2,那么调度器调度至B的请求是A的2倍。
(3)LC
LC即最小连接调度算法,是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态的调度算法,它通过活跃的连接数来估计服务器的情况。
(4)WLC
WLC即加权最小连接调度算法,是最小连接调度的超集。各个服务器的权值表示处理性能,服务器缺省权值为1,系统管理员可以动态地设置权值。加权最小连接调度在调度新的连接时尽可能使服务器已建立连接数和权值成比例。