keepalived+lvs+nginx+tomcat轮询模式刷新很久才切换realserver
编辑:狂族晨曦 来源:系统运维,经验杂笔 日期:2016-09-08 阅读: 7,427 次 9 条评论 » 百度已收录
先森刚接触运维,当然要学习部署各种集群环境,从最开始的LVS+nginx搭建,到现在Keepalived+lvs+nginx+tomcat搭建,集群的搭建也开始慢慢的得心应手了。不过,前进的道路上总是荆棘遍布。
先森的LVS用的是DR模式下的RR轮询算法,这个算法会实现的效果是每个访问会轮流分布到后端服务器1、2、3..上面去,后端服务器相当于在和访问打车轮战。
keepalived+lvs+nginx+tomcat拓扑图
然而,先森环境部署好之后,要刷新很久之后,才换切换到另一个后端服务器,虽然这也是一定意义上的达到了目标,但心中总还是有个疙瘩。
那么为什么会出现这样的问题呢?
影响因素
经过先森的测试,影响刷新轮询的配置keepalived、Nginx、Tomcat分别有一个,也就是一共有三个配置会影响到。
keepalived配置
首先,在keepalived的配置文件中,存在一个会话保持时间的配置。
vim /etc/keepalived/keepalived.conf persistence_timeout 50 #50秒为默认值
会话保持时间
这里有个默认为50秒的会话保持时间。如果设置了这一项,那么久会等待50秒后才会切换realserver。
如果上面的这样配置已经删除或注释,但问题依旧存在,那么一定就是Nginx和Tomcat的配置问题了。
Nginx配置
编辑打开到nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
在http模块下面就存在影响刷新轮询的配置:
Nginx的配置
在nginx.conf中,有一项配置:
keepalive_timeout 65;
这是nginx默认的连接超时时间,默认为65秒。将数字改为0即可。或者把上图中65那行注释,0那行取消注释就好。
Tomcat配置
同样的,在Tomcat中也有相关配置。同样编辑打开Tomcat的配置文件:
vim /web/soft/tomcat/conf/server.xml
找到设置Http访问端口那一段:
Tomcat的配置
在server.xml中,设置外部访问端口那一段,有个connectionTimeout的设置,即连接超时时间:
connectionTimeout="20000"
这个值默认是2000毫秒,将其改为10毫秒左右即可。不可以改为0,设置为0表示永不超时。
警告
总体来说,上面的三个配置都是修改的会话保持时间。但是会话保持时间是不能随意修改的。
什么是会话保持呢?会话保持是指在负载均衡器上有一种机制,在作负载均衡的同时,还保证同一用户相关连的访问请求会被分配到同一台服务器上。
会话保持有什么作用呢?
举例说明一下如果有一个用户访问请求被分配到服务器A,并且在服务器A登录了,并且在很短的时间,这个用户又发出了一个请求,如果没有会话保持功能的话,这个用户的请求很有可能会被分配到服务器B去,这个时候在服务器B上是没有登录的,所以你要重新登录,但是用户并不知道自己的请求被分配到了哪里,用户的感觉就是登录了,怎么又要登录,用户体验很不好。
所以,切记的是,修改上面的三项会话保持时长的配置仅仅只是用于环境测试,如果在生产环境,一定要按照需求设置。
历史上的今天:
- 2015: 2015-09-08-六号线报社工作职能(0)
- 2015: WordPress添加友情链接功能(0)
转载请注明出处来自https://www.capjsj.cn/keepalived_lvs_nginx_tomcat.html
问下楼主 评论插件叫什么
@管家婆: 评论没有用插件,是WordPress原生的。
@狂族晨曦: 知道了 研究下WordPress
技术活。
好深奥,博主邦邦哒,一定很多学妹追求!
送几个66666666666666666666666
好复杂的集群
看起来好难啊
我记得tomcat里面keepalive_timeout参数才是决定轮询建立新请求的间隔的,timeout只是决定同一请求在多久后断开连接。这个和apache相类似。