分享

lvs持久性

 guli3057 2014-09-24

http是一种无状态的协议,但是此时如果用户访问一个购物网站,如果网站不
能确认用户的话,则用户访问一个网页就得验证一次,否则在购物车里买的东西
发现付了钱了,东西没了。此时就需要一种机制来定义用户访问的持久性。

持久连接类型
pcc :持久客户端连接,在服务没有超时的时候,一个用户访问的所有服务都被定向到一个

realserver上
ppc :端口持久连接,用户只有在访问特定端口的时候才做定向连接。
PNMP : 持久防火墙标记的连接:指定用户的姻亲关系。如,定义80与443定义在姻亲关系,如果用户

访问80被定向到第一台realserver

此时在昨天实验的基础上进行,两台realserver的ip为172.16.99.11和172.16.99.12,二者都在lo上配置

了vip172.16.99.68
director为vip:172.16.99.68 dip为:172.16.99.10
他们之间建立的lvs-dr模型

port:0表示所有服务的端口。(0端口)



PCC:实现将客户端发起的请求,在定义时间内定向到那他realserver上。此种方法现在用的不多了。
使用0作为端口。
ipvsadm -C    清除以前的定义
ipvsadm -A -t 192.168.0.220:0 -s rr -p

此时定义到0端口,此时他转发所有请求,只要不超时,后续操作都被定向到那个realserver上
ipvsadm -A -t 172.16.100.1:0 -s wlc -p 300
ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.11 -w 4 -g
ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.12 -w 2 -g
此时你再访问,就始终定义到那台主机,不超时的情况下,只要访问就定义到那台。
此时你使用网页访问的话,打开的网页就不会跳转了,始终被定义到你访问的那台realserver上了。
之前我定义的是两个网页不同,一个为www1 ,一个为www2,此时你再访问,它只显示www2并且在你访问

期间不会改变,
过300秒之后再访问的话,有可能改变,如此时是www1,则需要再过300秒才有可能改变。

 


PPC:实现将客户的web请求,在定义的时间内重定向到那台realserver上。而ssh服务,在定义时间内,

则与web服务可以
定向到同一台也可以定向到不同的realserver上。这种方法比较常用
指定超时时间为600秒
ipvsadm -E -t 172.16.99.68:80 -s wlc -p 600
ipvsadm -a -t 172.16.99.68:80 -r 172.16.99.11 -g
ipvsadm -a -t 172.16.99.68:80 -r 172.16.99.12 -g
包正在超时时间内,对所有的80端口访问都在一台realserver上,只要不超时,对所有的22好端口
访问都在同一台realserver上。
ipvsadm -A -t 172.16.99.68:22 -s rr -p 300
ipvsadm -a -t 172.16.99.68:22 -r 172.16.99.11 -g
ipvsadm -a -t 172.16.99.68:22 -r 172.16.99.12 -g

此时通过访问,在300秒之内,你的访问,都会被重定向到后台的某个realserver上。


基于防火墙标记的访问机制
一个用户访问,当经过input的时候,ipvs重定向到postrouting,不经过本机内部的prerouting。

如访问80端口的防火墙标记的
iptables -t mangle -A PREROUTING -d 172.16.99.68 -p tcp --dport 80 -j MARK --set-mark 10

-f 指定标记是谁的
此时只需要指定防火墙标记就好了,不用再指定端口。
ipvsadm -A -f 10 -s wlc
ipvsadm -a -f 10 -r 172.16.99.11 -g -w 4
ipvsadm -a -f 10 -r 172.16.99.12 -g -w 2

此时使用防火墙标记的主要目的是将443端口和80端口,实现姻亲关系的。

其中两台realserver要配置证书,此时两台主机要使用它同一个证书。如果不用同一个,访问一个就得验

证一个,会带来麻烦的。
此时在两台realserver上安装mod_ssl使其能够支持ssl
yum install mod_ssl -y
cd /etc/pki/tls/certs/
make httpd.pem(里面包含证书和私钥,这样做只是为了快速实现生成密钥,在做的时候不建议这样用)
主机名要与访问主机名一样,一定要一样,否则会出错。
www.
www@

拷贝证书
cp httpd.pem /etc/httpd/
cd /etc/httpd/conf.d/
vim ssl.conf
定义端口,
开启
DocumentRoot '/var/www/html'
ServerName www.:443

SSLCertificateFile /etc/httpd/httpd.pem
SSLCertificateKeyFile /etc/httpd/httpd.pem

:wq

service httpd restart
此时通过网页访问试试,会出现验证的页面。
https://172.16.99.11

拷贝配置到第二台realserver上。
此时使用的是本地相对路径,因为此时我正在此目录中。可以把目录写全。/etc/httpd/httpd.pem
另外一个/etc/httpd/conf.d/ssl.conf
yum install mod_sll -y
scp httpd.pem 172.16.99.12:/etc/httpd
scp conf.d/ssl.conf 172.16.99.12:/etc/httpd/conf.d
此时把所有的证书信息都拷贝到另外一台realserver上了。
在上面直接service httpd restart就好了。
此时访问
https://172.16.99.12
是否出现验证的页面呢?


director上
iptables -t mangle -A PREROUTING -d 172.16.99.68 -p tcp --dport 443 -j MARK --set-mark 10
ipvsadm -E -f 10 -s wlc -p 300

此时你使用http访问,和使用https都是访问的同一个网页。
这就实现了端口的姻亲关系。
 

本文出自 “蜗牛也是牛” 博客,请务必保留此出处http://abliq.blog.51cto.com/3353566/661608

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多