共计 2210 个字符,预计需要花费 6 分钟才能阅读完成。
不论你用的什么调度算法,在一定时间内来之同一个客户的请求都会发给同一个服务器,默认连接超时是 360 秒,但这个值你可以自己定义,如果超时后,客户的连接依然存在,则默认以 2 分钟的方式依次增加。
持久连接的类型
(1)PCC 将某个客户的所用访问请求在超时时间内都定向到同一台 server 上 基于客户端的持久连接
(2)PPC 将某个客户的某个服务访问请求在超时时间内都定向到同一台 server 上 基于会话的持久连接
(3)Netfilter Mark 基于防火墙标志的持久连接
PCC例子
在 director 上配置
Ipvsadm -A -t 192.168.2.1:0 -s rr -p 360
Ipvsadm -a -t 192.168.2.1:0 -r 192.168.2.100 -g
Ipvsadm -a -t 192.168.2.1:0 -r 192.168.2.200 -g
查看
通过访问 vip 地址 192.168.2.1再次查看
连接一直处在 192.168.2.200 的server上
PPC的例子
当访问 80 端口使定向到 2.100,当访问22 端口是定向到 2.100 和2.200
ipvsadm -C —清空上述的配置
ipvsadm -A -t 192.168.2.1:22 -s rr -p
ipvsadm -A -t 192.168.2.1:80 -s rr -p
ipvsadm -a -t 192.168.2.1:22 -r 192.168.2.100 -g
ipvsadm -a -t 192.168.2.1:22 -r 192.168.2.200 -g
ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.100 -g
查看
访问 vip 的80端口 http://192.168.2.1/ 再次查看如下
访问 vip 的22端口 ssh://192.168.2.10:22 查看如下:
Netfilter Mark 例子
对于电子商务网站来说,用户在挑选商品的时候使用的是 80 端口来浏览的,当付款的时候则是通过 443 的ssl加密的方式,当然当用户挑选完商品付款的时候我们当然不希望 https 的443跳转到另外一台 REALSERVER,很显然应该是同一REALSERVER 才对 。通过 基于防火墙标记的持久连接 来实现
首先在两台 server 上搭建 CA 认证中心,并为 web 站点颁发证书,以实现https,关于这部分内容请参考前期的博文,这里就不写了。
1、在 iptables 添加规则,给客户的请求打上标签
iptables -t mangle -A PREROUTING -d 192.168.2.1 -i eth0 -p tcp -m multiport –dport 80,443 -j MARK –set-mark 10 —把从 eth0 进来的到 192.168.2.1 去的目标端口为 80,443 的打上标签10
2、虚拟规则
ipvsadm -C
ipvsadm -A -f 10 -s rr -p –f (firewallMark)
ipvsadm -a -f 10 -r 192.168.2.100 -g
ipvsadm -a -f 10 -r 192.168.2.200 -g
通过访问 vip 的端口 80 和443 http://192.168.2.1/、https://192.168.2.1/ 再看如下
如果后方的服务是 FTP 服务,怎么才能持久连接呢
这里的 FTP 服务是 PSAV 模式,其中 21 端口是控制端口,20端口是数据传输端口。
被动连接是 FTP 服务器从大于 1024 端口中选取一个作为回应端口号,因此我们要限制一下
这个回应端口号的范围。
vim /etc/vsftpd/vsftpd.conf
pasv_min_port=2000
pasv_max_port=2100
[root@localhost ~]# iptables -t mangle -A PREROUTING -i eth0 -d 192.168.2.1 -p tcp –dport 21 -j MARK –set-mark 10
[root@localhost ~]# iptables -t mangle -A PREROUTING -i eth0 -d 192.168.2.1 -p tcp –dport 2000:2100 -j MARK –set-mark 10
[root@localhost ~]# ipvsadm -A -f 10 -s rr -p
[root@localhost ~]# ipvsadm -a -f 10 -r 192.168.2.100 -g
[root@localhost ~]# ipvsadm -a -f 10 -r 192.168.2.200 -g
访问我的 VIP 的FTP服务
在用另一台 client 访问一下就会定向到 192.168.2.100 这台 ftp 服务器上。
上述的访问或登录都没截图,给人感觉贴上有点乱,但是都是验证过的!!!
相关阅读:
通过 LVS 实现 WEB 站点的 MySQL 高可用 http://www.linuxidc.com/Linux/2013-06/86390.htm
LVS+Apache+PHP+MySQL 读写分离 http://www.linuxidc.com/Linux/2012-12/77027.htm
MySQL LVS 负载均衡 http://www.linuxidc.com/Linux/2012-09/69862.htm
企业 Web 高可用集群实战之 LVS+Keepalived+MySQL HA http://www.linuxidc.com/Linux/2012-09/70097.htm