LVS的持久连接
一.持久连接说明
1.持久连接的实现机制:
无论使用什么算法,LVS持久连接都能实现在一点时间内,将来自于同一个客户端请求派发至此前选定的realserver。
持久连接依赖于持久连接模板(内存缓冲区:记录每一个客户端及分配的realserver的映射关系),每个新的连接请求,无论客户端的连接状态无论是否断开,只要客户端曾经访问过,LVS就会在持久连接模板中记录信息.经常用于SSL,建立一个SSL连接,需要交换SSL密钥,当启用持久性连接时,只需要做一次验证即可。
2.持久连接模板:
当使用LVS持久连接时,director使用一个连接跟踪(持久连接模板)使所有来自同一客户端的连接被标记为相同的realserver;而当客户端向集群服务器请求连接时,director会查看持久连接模板,是否realserver已经被标记为这种类型的连接,若没有,director重新为每次连接创建一个正常连接的跟踪记录表(持久连接模板)。
3.持久连接类型:
3.1 PCC(persistent client connections):持久的客户端连接(零端口的持久连接),使来自于同一个客户端对所有服务的请求,始终定向至此前选定的realserver;
3.2 PPC(persistent port connections):持久的端口连接,使来自于同一个客户端对同一个服务的请求,始终定向至此前选定的realserver。
3.3 Persistent Netfilter Marked Packet persistence:基于防火墙标记的持久性连接,使来自于同一客户端对指定服务的请求,始终定向至此算定的realserver基于指定的端口,它可以将两个毫不相干的端口定义为一个集群服务,例如:合并http telnet为同一个集群服务。
二.实现持久连接
1.PPC持久端口连接:来自于同一个客户端只对web服务的请求,会始终定向至此前选定的realserver(单一的服务才进行持久连接)
1.1不加-p选项
[root@www ~]# ipvsadm -A -t 192.168.85.130:80 -s rr
[root@www ~]# ipvsadm -a -t 192.168.85.130:80 -r 192.168.85.140 -g
[root@www ~]# ipvsadm -a -t 192.168.85.130:80 -r 192.168.85.143 -g
测试:此时通过本机浏览器连接,先显示RS2页面,立即刷新后再显示RS1页面;
1.2.加上-p选项
[root@www ~]# ipvsadm -A -t 192.168.85.130:80 -s rr -p 600
[root@www ~]# ipvsadm -a -t 192.168.85.130:80 -r 192.168.85.140 -g
[root@www ~]# ipvsadm -a -t 192.168.85.130:80 -r 192.168.85.143 -g
测试:此时通过本机浏览器连接,先显示RS2页面,立即刷新后也是RS2页面而不是RS1页面;
1.3.查看持久连接信息
[root@www ~]# ipvsadm -L -n --persistent-conn
2. pcc持久客户端连接:来自于同一个客户端对所有服务的请求,会始终定向至此前选定的real(所有服务进行持久连接)
2.1
[root@www ~]# ipvsadm -A -t 192.168.85.130:80 -s rr -p 800
[root@www ~]# ipvsadm -a -t 192.168.85.130:80 -r 192.168.85.140 -g
[root@www ~]# ipvsadm -a -t 192.168.85.130:80 -r 192.168.85.143 -g
此时通过web,ssh,ftp等服务测试会发生持久连接;
3. PNMPP 持久防火墙标记连接
通过pcc可以将所有服务进行持久连接,那么能否对有限个服务(如只对web和ssh)进行持续连接呢?这个就可以用PNMPP了;
3.1
######192.168.85.130是VIP;
[root@www ~]# iptables -t mangle -A PREROUTING -d 192.168.85.130 -i eth0 -p tcp --dport 80 -j MARK --set-mark 3
[root@www ~]# iptables -t mangle -A PREROUTING -d 192.168.85.130 -i eth0 -p tcp --dport 23 -j MARK --set-mark 3
[root@www ~]# ipvsadm -A -f 3 -s rr -p 600
[root@www ~]# ipvsadm -a -f 3 -r 192.168.85.140 -g
[root@www ~]# ipvsadm -a -f 3 -r 192.168.85.143 -g
[root@www ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 3 rr persistent 600
-> 192.168.85.140:0 Route 1 0 0
-> 192.168.85.143:0 Route 1 0 0
此时测试会发现只有web和SSH服务会发生持久连接,而其他服务依旧是轮询;
阅读(832) | 评论(0) | 转发(0) |