文章目录
参考阅读
一、 LVS持久化连接
- 类似于SH算法,即将同一源的IP的Client,发送给同一Server
- 优先于通用算法 SH DH RR LBLC
如何持久连接?
-
C每次访问负载器时,持久化时间加30,即为了保证持久
-
当持久化时间消耗殆尽后,以通用算法来计算
原理:内存分页分配一个缓存,记录C与RS的相关对应数据,保证每次连接可以优化
应用场景:LVS集群中
分类:
-
PCC 持久客户端连接
根据客户端来做持久,只要客户端相同,分配的服务器就相同;每一个客户端有一个模板
-
PPC 持久端口连接
根据端口来做持久,只要客户端请求的服务相同,分配的服务器就相同;每一个端口有一个模板
-
PFMC 持久防火墙标记连接
根据标记做持久
注意:以下操作都是在LVS-NAT模式下的配置
1.1 负载均衡器
1、删除之前添加的集群及集群子节点
[root@localhost ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 20.20.20.11:80 6 30 31 4204 2980
-> 10.10.10.12:80 3 15 15 2115 1470
-> 10.10.10.13:8080 3 15 16 2089 1510
[root@localhost ~]# ipvsadm -D -t 20.20.20.11:80
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@localhost ~]#
2、添加集群子节点,并查看持久化连接
[root@localhost ~]# ipvsadm -a -t 20.20.20.11:80 -r 10.10.10.12:80 -m
[root@localhost ~]# ipvsadm -a -t 20.20.20.11:80 -r 10.10.10.13:80 -m
[root@localhost ~]# ipvsadm -Ln --persistent-conn
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Weight PersistConn ActiveConn InActConn
-> RemoteAddress:Port
TCP 20.20.20.11:80 rr persistent 120
-> 10.10.10.12:80 1 0 0 0
-> 10.10.10.13:80 1 0 0 0
真实服务器上,注意在部署LVS-NAT模式的实验时,使用了端口映射,在这里关闭即可,因为负载均衡器上添加集群子节点时用的时80端口
[root@localhost ~]# vim /etc/httpd/conf
Listen 80
修改完成后保存,并重启服务
[root@localhost ~]# service httpd restart
停止 httpd: [确定]
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[确定]
[root@localhost ~]#
1.2 测试
访问负载均衡器,即20.20.20.11
可见跳转至RS2上,刷新几次后页面内容不会发生改变,这是因为集群部署了LVS持久化连接
查看ipvsadm状态可见,所有的连接服务都被定向至RS2上
此LVS集群配置的持久化时间是120s,那么120s后再次访问集群时,应该跳转至RS1上
可见与预期相符,查看状态;都跳转至RS1上,这说明LVS持久化时间到期后,执行了RR,即通用算法
二、PPC加强
注意,以上LVS持久化连接采用的是PPC,那么就可以设计两个不同的Web服务器,这里的不同仅仅时监听端口的不同,如生产环境中,有http,https这样的web服务
2.1 负载器上的配置
1、删除原来的集群,重新配置集群,并修改持久化时间
[root@localhost ~]# ipvsadm -D -t 20.20.20.11:80
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
2、增加集群及子节点
[root@localhost ~]# ipvsadm -A -t 20.20.20.11:80 -p 20 -s rr
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 20.20.20.11:80 rr persistent 20
[root@localhost ~]# ipvsadm -a -t 20.20.20.11:80 -r 10.10.10.12:80 -m
[root@localhost ~]# ipvsadm -a -t 20.20.20.11:80 -r 10.10.10.13:8080 -m
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 20.20.20.11:80 rr persistent 20
-> 10.10.10.12:80 Masq 1 0 0
-> 10.10.10.13:8080 Masq 1 0 0
2.2 真实服务器
RS1不用动,RS2修改主配置文件 ,监听8080端口;重启服务
2.3 测试
访问负载均衡器,即20.20.20.11
可见跳转至RS2上,刷新几次后页面内容不会发生改变,这是因为集群部署了LVS持久化连接
查看ipvsadm状态可见,所有的连接服务都被定向至RS2的8080服务上
此LVS集群配置的持久化时间是20s,那么20s后再次访问集群时,应该跳转至RS1上
可见与预期相符,查看状态;都跳转至RS1上,这说明LVS持久化时间到期后,执行了RR,即通用算法
三、 PCC加强
操作大同小异,只是添加集群时,配置集群的端口号为0
3.1 负载器上的配置
1、删除原来的集群,重新配置集群,并修改持久化时间
[root@localhost ~]# ipvsadm -D -t 20.20.20.11:80
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
2、增加集群及子节点
[root@localhost ~]# ipvsadm -A -t 20.20.20.11:0 -p 10 -s rr
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 20.20.20.11:0 rr persistent 10
[root@localhost ~]# ipvsadm -a -t 20.20.20.11:0 -r 10.10.10.12:80 -m
[root@localhost ~]# ipvsadm -a -t 20.20.20.11:80 -r 10.10.10.13:80 -m
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 20.20.20.11:0 rr persistent 10
-> 10.10.10.12:80 Masq 1 0 0
-> 10.10.10.13:80 Masq 1 0 0
3.2 真实服务器
修改RS2的监听端口为80即可,然后重启服务
3.3 测试
Windows下的VMnet网卡的IP为20.20.20.22 访问负载器跳转至RS1
查看ipvadm连接状态
此时一台客户端IP为20.20.20.23的Centos7的机器访问这个负载均衡器直接跳转至RS2
查看ipvsadm状态
由于部署的LVS持久化是PCC,那么在持久化时间内,Windows客户端都会与RS1进行绑定;Centos客户端都会与RS2进行绑定;当超过超过持久化时间后,执行通用算法
持久化时间到时后,测试网页,可见与预期相符
注意:在PPC的测试中,没有因为两个客户端,内容也大同小异,PPC是将来自同一客户端的同一个服务的请求,始终定向至此前选定的RS上,持久化时间到期后,执行通用的算法(RR、WRR等)