redis+tomcat集群问题

来源:6-12 单点登录Redis存储Session及SessionId问题说明与集群实战-2

_收藏从未停止

2018-03-28

  我刚刚做集群测试单点登陆的时候发现,我启动了两个Tomcat,然后有一个我停掉了。然后我在用nginx集群的那个域名去访问,结果发现当他访问到9080的时候(也就是那个停掉的服务,页面会一直旋转,隔一会才会转发到8080).那这样不是很慢嘛,两个服务器,挂了一台,当请求访问到挂的那台服务器上的时候,不能马上转发,而是要等待一会才会转发?老师请问这个怎么解决?


写回答

4回答

Geely

2018-03-31

你好,同学,很好的一个问题,课程中都采用一台机器,是为了模拟这个环境。

是这样的,实际生产环境的时候会使用keepalive,来做心跳检查,我们会新增心跳检查的一个url,检测http 请求是否是200,如果例如Atomcat现在在发布,在重启过程中,那就是不是200,所以这个时候ng把这个节点剔除掉。B的tomcat还能在线上提供服务。


所以例如大型集群,有100台机器的话,我们现在单位的线上环境主要的门户是有260台机器,肯定不能所有机器同时发布重启tomcat。而是采用group的概念,每组1-20台一起重启,更新最新代码,然后重启好之后,心跳检查好之后,会自动把节点放进来。然后21-40台机器继续发布

6
0

loubobooo

2018-04-01

本地一般是不会做集群测试,可以直接调线上的测试环境的服务器。针对挂掉这个问题,geely大佬回答的挺好的了,一般我们也是会在Nginx再加一层高可用,也就是KeepAlive(心跳检测机制),来解决挂掉的问题。

0
0

_收藏从未停止

提问者

2018-03-29

本地测试

0
0

polo哦

2018-03-29

是本地测试吗~如果线上应该是没有问题的,我测的线上就是8080挂了,然后都访问9080速度没啥区别

0
0

Java企业级电商项目架构 Tomcat集群与Redis分布式

Tomcat集群+Redis分布式+代码重构+源码原理解析

2685 学习 · 947 问题

查看课程