首页 文章

HA Tomcat集群:崩溃后的起始节点

提问于
浏览
0

我想在nginx反向代理后面运行一个tomcat(v7)集群 . 在我的testenviroment中,我设置了tomcat集群(2个节点[A / B])与会话复制和nginx作为反向代理(循环) .

当两个节点(A和B)都在运行时,nginx将通过循环中继请求 .

  • 第一个请求=>节点A.

  • 第二个请求=>节点B.

  • 第3次请求=>节点A ......

一切正常,即使我停止一个tomcat节点(节点B) .

  • 第一个请求=>节点A.

  • 第二次请求=>节点A.

  • 第3次请求=>节点A ......

现在的问题是:当我启动一个节点B时(例如重启机器之后),nginx试图将每个第二个请求中继到节点B,但它需要几分钟才能启动(节点正在运行~300个应用程序所以它需要〜节点B上的tomcat正在回答此请求,但无法向客户端显示应用程序 . 所以每一个请求都会在超时时间结束......

有没有办法配置tomcat,停止应答请求,直到它完成启动程序?

1 回答

  • 0

    您需要适当地配置nginx运行状况检查 . 有几个扩展(例如https://github.com/yaoweibin/nginx_upstream_check_module)允许为helth endpoints 指定 url .

    一种可能的解决方案可能是:为所有应用添加 Health endpoints ,创建和部署 health-management-app ,这将要求所有应用的 Health 状况(准备就绪),并在获得所有已部署应用的肯定答案后立即返回状态 .

    这只是想法,但希望它会对你有所帮助 .

    附:这个想法借鉴了spring-boot-actuator框架 . 它具有/管理/ Health 终点,如果依赖于其他服务(例如mongodb或elasticsearch),则询问所有 Health 服务,并且只有在所有响应都是肯定的情况下才返回正状态 .

相关问题