关于 keepalived+lvs 中参数 persistence_timeout 的说明
2024-10-06 21:06:41
在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
最新文章
- .Net Core 之 图形验证码 本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。
- Gradle使用小结
- php配置中的register_globals用法
- Python中如何读取xml的数据
- sqoop中,如果数据中本身有换行符,会导致数据错位
- 【Django】Django 文件下载最佳实践
- asp.net中当服务器出错时显示指定的错误页面
- Codeforces gym 100685 F. Flood bfs
- DDL_数据库模式定义语言
- smali文件语法参考
- Swift中元组(Tuples),结构体(Struct),枚举(Enums)之间的区别
- PHP冒泡排序法
- Django 笔记(四)模板标签 ~ 自定义过滤器
- 洛谷P4064 加法 [JXOI2017] 贪心
- JS通过类名判断是否都必填
- 1 php protocolbuffers安装
- JVM源码分析之堆外内存完全解读
- C# 小叙 Encoding (一)
- egret请求参数
- 电脑清缓存(C盘占空间)