关于 keepalived+lvs 中参数 persistence_timeout 的说明
Posted linuxlc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 keepalived+lvs 中参数 persistence_timeout 的说明相关的知识,希望对你有一定的参考价值。
在keepalived+lvs的配置文件keepalived.conf中有一个选项persistence_timeout
该选项的作用:在一定时间内使来自于同一个Client的所有TCP请求被负载到同一个RealServer上。
查看已设置的persistence_timeout
时间:
ipvsadm -S -n
查看Client连接到Server端的请求负载情况:
ipvsadm -L -n -c
#当设置了persistence_timeout 时间后,指定时间内来自同一Client的请求会被发送到同一个RealServer
说明(官方):http://www.linuxvirtualserver.org/docs/persistence.html
#大体意思
在C/S架构中,Client和Server间的多个连接有时存在着关联性
比如FTP主动模式的20和21两个端口:21默认为监听端口;20则为数据传输端口
#20端口的开启是建立在21端口进行了有效的用户确认和文件交互确认后才会开启的,是Server主动连接Client所告知的端口
但是在FTP的被动模式下,是Server主动将自己开放的随机数据端口告知Client,然后Client再去和Server的新端口建立新的TCP连接
假如`persistence_timeout`该选项注释掉,那么Client和Server间建立的新的TCP连接有可能被负载到另外一台RealServer上去,此时Client和Server之间处于半连接状态,所以当有此选项时,就不会出现此问题了。
此选项对于连接关联性是一个很好的解决方案,但是会造成轻微的负载不均衡(官方原文:slight load imbalance)
注意:
此选项设置时间过长会导致严重的负载不均衡,当然不光是因为时间的原因,还有比如某些网络设置了代理服务,此时负载会将来自于该网络内所有的用户请求当做来自于同一Client
以上是关于关于 keepalived+lvs 中参数 persistence_timeout 的说明的主要内容,如果未能解决你的问题,请参考以下文章
keepalived入门与掌握之keepalive+lvs实例部署