我想在nginx反向代理后面运行一个tomcat (v7)集群。在我的测试环境中,我使用会话复制设置了tomcat集群(2个节点A/B),并将nginx设置为反向代理(循环)。
当两个节点(A和B)运行时,nginx将通过循环传递请求。
一切正常工作,即使当我停止一个tomcat节点(节点B)。
现在的问题是:当我启动一个节点B(例如,在重新启动机器之后),nginx尝试将第二个请求转发到节点B,但是它需要几分钟才能启动(节点正在执行~300个应用程序,因此它需要20分钟来启动),而节点B上的tomcat正在响应这个请求,但是不能将应用程序显示给客户机。所以每一次请求都会以超时结束..。
是否有任何方法配置tomcat,在完成启动过程之前停止应答请求?
发布于 2016-10-13 13:54:30
您需要适当地配置nginx健康检查。有几个扩展(例如module)允许为helth端点指定url。
一个可能的解决方案可能是:在所有应用程序中添加健康端点,创建并部署一个health-management-app,它将要求所有应用程序保持健康(就绪),并在所有已部署的应用程序获得肯定答案后立即返回健康状态。
这只是一个想法,但希望它能帮助你。
这个想法是借鉴自弹簧启动-执行器框架。它具有/management/health端点,如果依赖于其他服务(例如mongodb或elasticsearch),则只在所有响应都为正的情况下才要求所有服务保持健康,并返回正状态。
https://stackoverflow.com/questions/30456640
复制相似问题