Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5451150
  • 博文数量: 348
  • 博客积分: 2173
  • 博客等级: 上尉
  • 技术积分: 7900
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-24 17:26
个人简介

雄关漫道真如铁,而今迈步从头越。

文章存档

2022年(4)

2020年(6)

2019年(2)

2018年(2)

2017年(34)

2016年(49)

2015年(53)

2014年(47)

2013年(72)

2012年(79)

分类: LINUX

2016-08-30 17:21:24

一、关于LVS的持久性连接
1、把同一个client的请求信息记录到lvs的hash表里,保存时间使用persistence_timeout控制,单位为秒。persistence_granularity 参数是配合persistence_timeout的,在某些情况特别有用,他的值是子网掩码,表示持久连接的粒度,默认是255.255.255.255,也就是单独的client ip,如果改成,255.255.255.0就是client ip一个网段的都会被分配到同一个real server。
2、一个连接创建后空闲时的超时时间,这个时间为3种:
a、tcp的空闲超时时间;
b、lvs收到客户端tcp fin的超时时间;
c、udp的超时时间.
二、如何查看这些值
1、ipvsadm可以查看连接空闲的超时时间(红色标记):
#ipvsadm -l
#服务端
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 122.225.32.142:http rr persistent 10
-> 122.225.32.137:http Route 1 0 1
-> 122.225.32.136:http Route 1 0 0
#客户端
# ipvsadm -l –timeout //查看tcp tcpfin udp的超时时间
Timeout (tcp tcpfin udp): 900 120 300
三、我们可以通过ipvsadm工具来查看他们是如何工作的
# ipvsadm -Lcn
IPVS connection entries
pro expire state source virtual destination
TCP 00:57 NONE 110.184.96.173:0 122.225.32.142:80 122.225.32.136:80
TCP 01:57 FIN_WAIT 110.184.96.173:54568 122.225.32.142:80 122.225.32.136:80
当一个client访问vip的时候,ipvs或记录一条状态为NONE的信息,红色的值的初始值是persistence_timeout的值,然后根据时钟主键变小,在以下记录存在期间,同一client ip连接上来,都会被分配到同一个后端。
FIN_WAIT的值就是tcp tcpfin udp的超时时间,当NONE的值为0时,如果FIN_WAIT还存在,那么NONE的值会从新变成60秒,再减少,直到FIN_WAIT消失以后,NONE才会消失,只要NONE存在,同一client的访问,都会分配到统一real server。
四、如何设置这些值?
#服务端设置
persistence_timeout可以通过以下两种方法设置
1、 ipvsadm -A -t 192.168.20.154:80 -s rr -p 60
注意:上面命令中红色标记的80端口,表示同一客户端访问服务器的80端口,会被定义到同一个real server,如果把80端口改为0,那么同一客户端访问服务器的任何服务都会被转发到同一real server。
2、修改keepalived配置文件在虚拟服务器配置下面加入 persistence_timeout 60
#客户端设置
3、tcp tcpfin udp的配置
#ipvsadm –set tcp tcpfin udp
# ipvsadm –set 120 50 50 //实例
建议:tcpfin的值最好小于persistence_timeout的值,这样比较方便计算。
参考资料
Persistence Handling in LVS:
阅读(2540) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~