lvs&keepalived 虚拟ip问题
公司要求集群环境搭建,测试环境已搭建完毕(一切正常),到仿真上现在遇到了一个很棘手的问题,先大致说下整个情况:
Centos6.4
2台Nginx分别负载相同两台tomcat;
2台MariaDB主备;
2台redis+sentinel主备;
lvs+keepalived和Nginx装一起做主备,下面分别负载2台Nginx(端口80),2台mariadb(端口3306),2台redis-sentinel(端口26379)。
如图:
现在遇到的问题(为表诉完整,说得有点多):
虚拟ip的3306端口和26379端口始终都能正常访问能telnet通;
但是虚拟ip的80端口一会儿通一会儿不通,试了很多台客户端访问都是一样的(排除我们配置的问题,用的测试环境已经成功的配置),两台真实ip80端口都能正常访问;
然后怀疑是网络的问题,找网工看了,查了防火墙session(貌似有很多层),一层一层查上去,发现请求已经过去了但没有回来,网工只能做到这儿了,然后让我查一下服务端抓一下包什么的;
然后在客户端装了Wirshark,服务端装了Tcpdump,同时抓包,客户端telnet 虚拟ip80端口发现: 客户端请求已经到了服务器,但是服务器却没有返回(这儿有两种情况:1、服务端接到请求并有返回,客户端没有收到返回的请求,这说明请求在返回的路上断了,是网络的原因;2、服务端接到请求没有返回,那就是服务端的问题了),确定是服务端的问题。
接着就是各种测试,什么selinux啊,什么改虚拟ip,能想到的都试了,网上查到手段都试了,keepalived的日志也正常;
还有一个奇葩问题,将keepalived配置里的80端口改为8080或其它端口,发现8080端口却根本访问不通(连时断时续都没有),依然是80端口可以时断时续的访问(还带缓存的?还是根本没生效?软件问题?)。
PS:搞得我现在都懵圈了,测试环境一切都正常,就仿真出这事儿,关键是3306和26379都通,就80时断时续(不是不通),真实服务的80也始终都正常,根据出现的那个奇葩问题,怀疑是不是lvs&keepalived本身软件的问题,打算周一重新下源码安装(原本用的镜像文件中自带的),还是系统有什么特别的设置?(关键所有系统都是一样的啊)
哪位大神遇到过这种问题,或有什么建议,给指点指点解决的方向什么的。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
https://my.oschina.net/zwzbubi/blog/687774
这儿解释了原因https://my.oschina.net/zwzbubi/blog/687774,解决的方案目前采用的是通过脚本检查服务状态,只起一个keepalived,因为nginx这两台我们是放在DMZ区的,只能给两台。最好的方案是把keepalive单独放两台,别个nginx放一起。
您好 你是怎么解决了呢 问题出在哪呢 我这也出现了类似的问题,不知道该怎么解决
回复@工作QQ: 解决了
解决了吗?我也遇到了