您的位置:首页 > 其它

LVS的持久连接

2014-04-16 17:49 274 查看
LVS的某些调度算法是可以实现地址绑定session的,在一段时间内始终将源IP从定向至同一个RS,但是有些算法是不能实现此功能的,就需要外生性的机制来帮助,让所有的算法都可以实现session绑定,这就是LVS的持久连接,不论什么算法,都可以通过持久连接,在一定的时间范围内,将来至于同一个源地址的请求时钟定向至同一台RS.
实现原理:当使用LVS启用持久连接后,会在LVS服务器的内存中,记录一个会话连接,记录源IP连接RS的对应地址,会把这些记录保存在一个模板中,为每一条对应的记录设定一个计时器,当用户的请求经过LVS的时候,LVS会先检查这个连接模板,如模板中有记录,就不考虑调度算法了,直接使用模板中的记录为源IP定向到指定的RS,如果模板表中没有记录,或者记录超时了,才从新去计算该源IP应该转给哪台RS.可以使用命令 ipvsadm –L –c 显示tcp连接(不是连接模板),如下图所示:
如果没有指定时间,系统记录的是tcp的超时时间


图1:超时倒计时;图2:连接状态;图3:访问的源地址;图4:VIP;图5:被定向的地址
超时断开方式:如果超时就断开,同一个源IP再来访问时,会重新调度算法.如果超时时间快结束时,源IP再次访问,会重新计时
持久连接类型
PCC:在一定时间内,将来自同一个客户端发往VIP的所有请求统统定向至同一RS;不论端口,不论服务;把多有的服务都当作集群服务.如前端客户端第一次请求的是http服务,LVS定向至RS1,第二次请求ssh服务,LVS会查找自己的连接模板,然后把请求也定向至RS1.



172.16.21.1:0表示所有的端口



如此一来LVS本机就收不任何请求了,任何请求都会被转到RS去,所以PCC的受理范围太大了
PPC:在一定事件内,将来自于同一个客户端发往某VIP的指定端口的请求统统定向至同一RS;如前端客户端第一次请求的是http服务,LVS定向至RS1,第二次请求ssh服务,LVS会认为这是新的请求,然后使用调度算法,具体会被转发至哪一台主机,就看算法了.






运气很好,他们不一样
PFMC:在一定时间内,将来至于同一客户端的请求的被绑定在一起的端口(如80和443绑定在一起),统统定向至同一台RS,基于防火墙标记,将两个或两个以上的端口绑定为同一个服务.
这里偷懒暂时占用个占位符
首先要给定义为同一组的服务打上相同的标记,由于是集群服务,并且集群服务是工作在INPUT链上,所以需要在INPUT链之前就要打标,也就是PRE_ROUTING链上就需要打标,命令如下
1: iptables -t mangle -A PREROUTING -d VIP -p tcp --dport CS_Port -j MARK --set-mark # (0-99)


打标:





只要目标ip是172.16.21.1:80的tcp协议,就打标为10

只要目标ip是172.16.21.1:443的tcp协议,就打标为10

添加LVS规则





增加持久连接





提示:小规模的站点中,不建议使用LVS,LVS的控制能力太弱,虽然他的转发性能很好.只有并发性非常多的时候才使用LVS
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: