无论使用哪种算法,LVS的持久连接都实现在一定时间内,将来自同一客户端的多种请求派发至此前选定的real-server.
持久连接模板(内存缓冲区):
记录每一个客户端及分配给它的RS.
查看当前的持久连接:
ipvsadm -L -persistent-conn
ipvsadm -L -c
设置持久连接:
ipvsadm -A|-E ... -p timeout
默认timeout为300S.
在基于SSL会话的连接中,最需要使用持久连接.
PPC(持久端口连接):将来自于同一个客户端对同一个集群服务的请求,始终定向至此前选定的real-server.
ipvsadm -A -t myvip:80 -s rr -p 600
//仅将80端口定义为集群服务
ipvsadm -a -t myvip:80 -r myrip1 -g -w 2
ipvsadm -a -t myvip:80 -r myrip2 -g -w 2
ipvsadm -A -t myvip:22 -s rr -p 600
//仅将80端口定义为集群服务
ipvsadm -a -t myvip:22 -r myrip1 -g -w 2
ipvsadm -a -t myvip:22 -r myrip2 -g -w 2
[root@mytest ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.7.100:80 rr persistent 300
-> 10.0.7.101:80 Local 1 0 13
-> 10.0.7.108:80 Route 2 0 13
-> 10.0.7.109:80 Route 3 0 12
TCP 10.0.7.100:23 rr
-> 10.0.7.109:23 Route 1 0 0
-> 10.0.7.108:23 Route 1 0 0
由于上面的80端口和22端口属于2个不同的集群服务,访问80端口的持久连接不一定是访问22的端口连接,为了使访问2个端口的服务同时访问到一台服务器,可以使用PCC或PNMPP.
PCC(持久客户端连接):将来自于同一个客户端的请求,始终定向至此前选定的real-server.
ipvsadm -A -t myvip:0 -s rr -p 300
//将所有端口定义为集群服务
ipvsadm -a -t myvip:0 -r myrip1 -g -w 2
ipvsadm -a -t myvip:0 -r myrip2 -g -w 2
[root@mytest ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.7.100:0 rr persistent 300
-> 10.0.7.109:0 Route 1 0 0
-> 10.0.7.108:0 Route 1 0 0
PNMPP(持久防火墙标记连接):
iptables -t mangle -A PREROUTING -d myvip -i eth0:0 -p tcp --dport 80 -j MARK --set-mark 8
iptables -t mangle -A PREROUTING -d myvip -i eth0:0 -p tcp --dport 23 -j MARK --set-mark 8
ipvsadm -A -f 8 -s rr -p 300
ipvsadm -a -f 8 -r myrip1 -g -w 2
ipvsadm -a -f 8 -r myrip2 -g -w 2
[root@mytest ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 8 rr
-> 10.0.7.109:0 Route 1 0 0
-> 10.0.7.108:0 Route 1 0 0
linux文件系统同步rsync+inotify,为解决大文件同步效率问题,可以使用sersync