关于LVS负载均衡tcp长连接分发的解决思路
虽然应用keepalived搞定了后端服务负载均衡和高可用性问题,但是在具体应用的时候,还是要注意很多问题。很多应用都用tcp或者http的长连接,因为建立tcp连接或者http连接开销比较大,而应用端其实是需要频繁跟server端通讯的,这时候保持长连接无疑是非常合适的。经过摸索lvs & keepalived 长连接的配置主要在三个地方:
一、client端的SoTimeout , 就java来说就是java.net.Socket的setSoTimeout方法设置的, setSoTimeout(0)就是表明超时时间无限大。这个值是为读取阻塞设置超时的。
二、lvs的设置:
查看是ipvsadm --list --timeout, 比如我的机器就会返回如下结果:
# ipvsadm --list --timeout
Timeout (tcp tcpfin udp): 7200 5 60
这就表明我的tcp session的timeout时间是7200秒。
设置timeout:
ipvsadm --set 7200 5 60
这个值如果设置太小,你的client将会收到 connection reset by peer此类的错误提示。
三、keepalived的配置:
就是virtual_server的persistence_timeout ,意思就是在这个一定时间内会讲来自同一用户(根据ip来判断的)route到同一个real
server。对于长连接类的应用,你肯定需要这么做。配置值最好跟lvs的配置的timeout一致。
四、具体实例如下:
virtual_server 172.19.1.19 5222 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 7200
protocol TCP
real_server 172.19.1.8 5222 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.19.1.9 5222 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
}
}
}
http://blog.chinaunix.net/uid-25723371-id-5749631.html
相关文章
- haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)
- 数据库水平切分的原理探讨、设计思路--数据库分库,分表,集群,负载均衡器
- Apache Kafka使用默认配置执行一些负载测试来完成性能测试和基准测试
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)
- nginx做负载均衡器以及proxy缓存配置
- 高负载均衡学习haproxy之关键词介绍
- EasyDarwin开源流媒体云平台设计与实现(分布式+负载均衡)
- 异构服务器的负载均衡及过载保护
- java:tomcat(负载均衡)nginx的应用配置
- nginx负载均衡中常见的算法及原理
- zookeeper 负载均衡 核心机制-实现原理 包含ZAB协议(滴滴,阿里面试)
- RabbitMQ---集群,Haproxy+Keepalive 实现高可用负载均衡,Federation Exchange和Federation Queue
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- cpu利用率和平均负载学习