本文记录一套百万会话级的LVS软负载均衡系统,从加权最少链接均衡算法调整为源主机散列算法并增加会话保持时间的配置过程。
一、调整原由
业务侧为了提升平台的设备连接会话保持能力,希望将LVS软负载均衡系统的均衡算法从加权最少链接均衡算法wlc调整为源主机散列算法sh,并将会话保持时间从1秒增加到180秒。
二、调整分析
1、负载调度算法
LVS的lb_algo 是负载调度算法的选项,可以设置以下几种算法:
- rr(轮询调度算法):按照轮询的方式依次将请求调度到不同的服务器上,即每次选择下一个服务器进行调度。
- wrr(加权轮询算法):根据服务器的不同处理能力进行调度,权重大的服务器会收到更多的请求。
- lc(最少连接算法):动态地将网络请求调度到已建立的链接数最少的服务器上。
- wlc(加权最少连接算法):结合了最少连接和加权轮叫的算法,根据服务器的处理能力和当前连接数进行调度。
- lblc(基于局部性的最少连接算法):针对目标IP地址的负载均衡,主要用于Cache集群系统。
- sh(源主机散列算法):通过散列函数将源IP地址映射到不同的服务器上,以实现基于源IP地址的负载均衡。
- dh(目标主机散列算法):通过散列函数将目标IP地址映射到不同的服务器上,以实现基于目标IP地址的负载均衡。
2、会话保持时间
LVS的persistence_timeout 会话保持时间,主要作用是将来自同一个客户端IP的请求转发到同一个真实服务器(Real Server)的时间。通过设置persistence_timeout,可以在一定时间内保证所有来自同一个客户端的TCP请求都被发送到同一个真实服务器。这样可以确保会话的持续性,使得客户端和服务器之间的通信能够在同一台服务器上保持。
在设置的persistence_timeout 时间段内,当前IP地址下所有的TCP连接数据包都会被发送到同一个真实服务器。这样可以确保客户端与服务器之间的通信能够保持连续性,特别是在需要保持长时间会话的应用场景中,如数据库连接、文件传输等。
具体来说,设置多长的会话保持时间,主要还是根据后端会话的业务场景来定。
三、配置实操
1、原配置
[root@lvs-1 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lvs231
vrrp_skip_check_adv_addr
vrrp_garp_interval 0.001
vrrp_gna_interval 0.00001
}
vrrp_instance VI_1 {
state MASTER
interface ens192
virtual_router_id 231
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.231
}
}
virtual_server 192.168.1.231 9007 {
delay_loop 6
lb_algo wlc
lb_kind NAT