gpt4 book ai didi

java - HA Tomcat 集群 : starting node after crash

转载 作者:行者123 更新时间:2023-11-28 23:30:46 25 4
gpt4 key购买 nike

我想在 nginx 反向代理后面运行一个 tomcat (v7) 集群。在我的测试环境中,我设置了具有 session 复制功能的 tomcat 集群(2 个节点 [A/B]),并将 nginx 设置为反向代理(循环法)。

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

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

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

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

现在的问题是:当我启动节点 B 时(例如,重启机器后),nginx 试图将每 2 个请求中继到节点 B,但它需要几分钟才能启动(节点承载约 300 个应用程序,所以它需要大约 20 分钟才能启动),而节点 B 上的 tomcat 正在响应此请求但无法向客户端显示应用程序。所以每第二个请求都会以超时结束......

有什么办法可以配置tomcat,让它在完成启动程序之前停止响应请求?

最佳答案

您需要适当配置nginx健康检查。有几个扩展(例如 https://github.com/yaoweibin/nginx_upstream_check_module )允许为健康端点指定 url

一个可能的解决方案是:将健康端点添加到您的所有应用程序,创建并部署一个 health-management-app ,它将向您的所有应用程序请求健康(就绪)并在从所有已部署的应用程序获得肯定答复后立即返回健康状态.

只是一个想法,希望对你有帮助。

附言这个想法是从 spring-boot-actuator 框架中借用的。它有/management/health 端点,在依赖于其他服务(例如 mongodb 或 elasticsearch)的情况下,它会询问所有服务的健康状况,并且只有在所有响应都是肯定的情况下才返回肯定状态。

关于java - HA Tomcat 集群 : starting node after crash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30456640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com