keepalived persistence_timeout参数意义 LVS Persistence 参数的作用

来源:互联网 发布:淘宝手办哪家好 编辑:程序博客网 时间:2024/06/13 21:15
persistence_timeout 300  单位秒
这个参数的意义是保持客户端的请求在这个时间段内全部发到同一个真实服务器。


正常情况下LVS会保证同一个TCP链接数据包会发往同一个真实服务器。
例如:(192.168.80.1:49165 192.168.80.120:8080 192.168.80.136:8080)LVS会记录这个TCP链接的【原IP与端口,目标IP与端口】,后续的数据包会发送到192.168.80.136:8080。

但是如果设置了persistence_timeout那么在这个时间段内,当前IP地址下所有的TCP链接数据包都会被发送到同一个真实服务器。假设客户端使用5个端口 建立了5个TCP链接,那么这5个链接会被发往相同的后端服务器,反之亦然。


我们使用命令查看IPVS的规则,可以看到-p 300 已经被设置进去了。
[root@bogon ~]# ipvsadm -S -n
-A -t 192.168.80.120:8080 -s rr -p 300
-a -t 192.168.80.120:8080 -r 192.168.80.135:8080 -i -w 1
-a -t 192.168.80.120:8080 -r 192.168.80.136:8080 -i -w 1


然后客户端请求LVS服务器。我们通过ipvsadm -L -n -c命令查看转发规则。发现所有的TCP链接都指向了一个后端服务器。
我们注意看(TCP 02:36  NONE        192.168.80.1:0     192.168.80.120:8080 192.168.80.136:8080)
就是它记录这当前客户端的IP地址,这样无论后续多少TCP请求都会被发到同一个后端服务器。
TCP 00:16  FIN_WAIT    192.168.80.1:49165 192.168.80.120:8080 192.168.80.136:8080
TCP 00:16  FIN_WAIT    192.168.80.1:49168 192.168.80.120:8080 192.168.80.136:8080
TCP 00:16  FIN_WAIT    192.168.80.1:49169 192.168.80.120:8080 192.168.80.136:8080
TCP 02:36  NONE        192.168.80.1:0     192.168.80.120:8080 192.168.80.136:8080
TCP 00:16  FIN_WAIT    192.168.80.1:49167 192.168.80.120:8080 192.168.80.136:8080
TCP 00:16  FIN_WAIT    192.168.80.1:49170 192.168.80.120:8080 192.168.80.136:8080


为什么要这么做?是因为:
官方解释:http://www.linuxvirtualserver.org/docs/persistence.html 
我翻译了一部分。
有些Web服务可能用到HTTP Cookie,它是将数据存储在客户的浏览器来追踪和标识客户的机制。使用HTTP Cookie后,来同一客户的不同连接存在相关性,这些连接必须被发送到同一Web服务器。一些Web服务使用安全的HTTPS协议,它是HTTP协议加 SSL(Secure Socket Layer)协议。另有些Web服务可能使用安全的HTTPS协议,它是HTTP协议加SSL协议。当客户访问HTTPS服务(HTTPS的缺省端口为 443)时,会先建立一个SSL连接,来交换对称公钥加密的证书并协商一个SSL Key,来加密以后的会

话。在SSL Key的生命周期内,后续的所有HTTPS连接都使用这个SSL Key,所以同一客户的不同HTTPS连接也存在相关性。针对这些需要,IPVS调度器提供了持久服务的功能,它可以使得在设定的时间内,来自同一IP地 址的不同连接会被发送到集群中同一个服务器结点,可以很好地解决客户连接的相关性问题。


0 0
原创粉丝点击