我想在nginx反向代理后面运行一个tomcat(v7)集群。 在我的testenviroment中,我设置了tomcat集群(2个节点[A / B])与会话复制和nginx作为反向代理(循环)。
当两个节点(A和B)都在运行时,nginx将通过循环中继请求。
一切正常,即使我停止了一个tomcat节点(节点B)。
现在的问题是:当我启动一个节点B时(例如重启机器后),nginx正试图将每个第二个请求中继到节点B,但它需要几分钟才能启动(节点正在运行~300个应用程序所以它需要〜20分钟才能启动)而节点B上的tomcat正在回答此请求,但无法将应用程序显示给客户端。所以每一个请求都会在超时时间结束......
有没有办法配置tomcat,在完成启动过程之前停止回复请求?
答案 0 :(得分:0)
您需要适当地配置nginx运行状况检查。有一些扩展(例如https://github.com/yaoweibin/nginx_upstream_check_module)允许为helth端点指定url
。
一种可能的解决方案可能是:
为所有应用添加健康端点,创建并部署health-management-app
,这将要求所有应用的健康状况(准备就绪),并在获得所有已部署应用的肯定答案后立即恢复状态。
这只是想法,但希望它能帮到你。
P.S。这个想法借鉴了spring-boot-actuator框架。它具有/管理/健康终点,如果依赖于其他服务(例如mongodb或elasticsearch),则询问所有健康服务,并且只有在所有回复都是肯定的情况下才会返回正面状态。