由于HTTP是一种无状态协议,每次请求完毕之后就立即断开了,当用户浏览购物网站挑选商品的时候,看到一件商品加入购物车,此过程被重定向到了REALSERVER1上面来,当把第二件商品加入购物车又被重定向到了REALSERVER2上面,最后结账的时候在REALSERVER2上面,只有一件商品,这显然是用户无法接受的,此时就需要一种持久连接机制,来把同一用户的HTTP请求在超时时间内都重定向到同一台REALSERVER,超时时间可以自己定义,比如说2个小时,在超时时间内服务器会不断追踪用户的访问请求,把某一用户的所有请求都转发到同一台REALSERVER上面,如果超时时间过后用户依然在访问,则默认按照每次两分钟的方式无限加长

这里的所有操作都以DR模型为例,试验环境参见

http://lymrg.blog.51cto.com/1551327/660925
对于LVS的持久连接来说常见的分为三种PCC,PPC和基于防火墙标记的持久连接,下面我们就来分别讨论

1)PCC用来实现把某个用户的所有访问在超时时间内定向到同一台REALSERVER,这种方式在实际中不常用

ipvsadm -A -t 912.168.0.1:0 -s wlc -p 600(单位是s)
ipvsadm -a -t 192.168.0.1:0 -r 192.168.1.2 -w 4 -g
ipvsadm -a -t 192.168.0.1:0 -r 192.168.1.3 -w 2 -g
此时测试一下会发现通过HTTP访问VIP和通过SSH登录VIP的时候都被定向到了同一台REALSERVER上面了

2)PPC用来把某个用户对同一服务的访问在超时时间内定向到同一台REALSERVER

ipvsadm -A -t 192.168.0.1:80 -s wlc -p 600
ipvsadm -a -t 192.168.0.1:80 -r 192.168.1.2 -w 4 -g
ipvsadm -a -t 192.168.0.1:80 -r 192.168.1.3 -w 2 -g

ipvsadm -A -t 192.168.0.1:22 -s wlc -p 300
ipvsadm -a -t 192.168.0.1:22 -r 192.168.1.2 -g
ipvsadm -a -t 192.168.0.1:22 -r 192.168.1.3 -g
此时再测试会发现某个用户在超时时间内对于某个服务的访问都会被重定向到同一台REALSERVER上面

3)基于防火墙标记的持久连接
对于电子商务网站来说,用户在挑选商品的时候使用的是80端口来浏览的,当付款的时候则是通过443的ssl加密的方式,当然当用户挑选完商品付款的时候我们当然不希望https的443跳转到另外一台REALSERVER,很显然应该是同一REALSERVER才对,这时候就要用到基于防火墙标记的持久连接,通过定义端口的姻亲关系来实现

1.首先两个REALSERVER要配置SSL,很明显证书应该也是一样的
2.定义端口的姻亲关系,给80和443端口打上同样的防火墙标记
3.配置实现基于防火墙标记的LVS

yum install mod_ssl 两个服务器上面都安装一下
在REALSERVER1上面。也就是192.168.1.2上面如下操作
cd /etc/pki/tls/certs/
make httpd.pem 此种SSL证书的生成方式只为测试,在实际操作中构建

SSL参见我博客前面的完整步骤
填写相关信息
主机名称一定要和VIP在互联网上面解析的DNS名称一致
cp httpd.pem /etc/httpd/
vi /etc/httpd/conf.d/ssl.conf
找到如下行启用并且修改
DocumentRoot "/var/www/html"
ServerName www.test.org:443这里修改为你得服务器名称
×××路径
SSLCertificateFile /etc/httpd/httpd.pem
SSLCertificateKeyFile /etc/httpd/httpd.pem

scp httpd.pem 192.168.1.3:/etc/httpd
scp /etc/httpd/conf.d/ssl.conf 192.168.1.3:/etc/httpd/conf.d/

iptables -t mangle -A PREROUTING -d 192.168.0.1 -p tcp --dport 80 -j MARK --set-mark 10 (0-99范围)
iptables -t mangel -A PREROUTING -d 192.168.0.1 -p tcp --dport 443 -j MARK --set-mark 10
ipvsadm -A -f 10 -s wlc -p 600
ipvsadm -a -f 10 -r 192.168.1.2 -g -w 4
ipvsadm -a -f 10 -r 192.168.1.3 -g -w 2