4

我正在使用 apache http 和 mod_jk 进行负载平衡。如果其中一个 tomcat 实例死亡,则使用粘性会话时,请求将成功重定向到另一个节点。如果由于某种原因应用程序死亡但 tomcat 还活着,那么请求会继续发送到具有死亡应用程序的节点。任何想法如何解决这个问题?

下面你可以罚款我worker.properties 文件。

worker.list=myworker

worker.myworker1.port=8009
worker.myworker1.host=host1
worker.myworker1.type=ajp13
worker.myworker1.lbfactor=1

worker.myworker2.port=8009
worker.myworker2.host=host2
worker.myworker2.type=ajp13
worker.myworker2.lbfactor=1

worker.myworker.type=lb
worker.myworker.balance_workers=myworker1,myworker2
worker.myworker.sticky_session=True

谢谢!

4

2 回答 2

2

通常,当应用程序在 Tomcat 仍在运行时不可用时,它会给出 404 错误。我认为有一个 worker 指令可以处理它,fail_on_status并且您可以将它用于 404 错误,并且可能不需要在该指令中包含 503 错误代码,这可能意味着 tomcat 已停止并且它是 mod_jk 的工作故障转移到其他工作节点。workers.properties对于以逗号分隔的其他错误代码,请尝试以下(附加到每个工作人员的行)。

worker.list=myworker

worker.myworker1.port=8009
worker.myworker1.host=host1
worker.myworker1.type=ajp13
worker.myworker1.lbfactor=1
#worker.myworker1.fail_on_status=-404,503
worker.myworker1.fail_on_status=-404

worker.myworker2.port=8009
worker.myworker2.host=host2
worker.myworker2.type=ajp13
worker.myworker2.lbfactor=1
#worker.myworker2.fail_on_status=-404,503
worker.myworker2.fail_on_status=-404

worker.myworker.type=lb
worker.myworker.balance_workers=myworker1,myworker2
worker.myworker.sticky_session=True
worker.myworker.sticky_session_force=True
于 2011-12-28T12:40:31.303 回答
1

mod_jk 无法 ping 心跳 URL 来确定节点健康状况。

一种解决方案是使用一个外部脚本来为你做这件事,如果应用程序不活跃,它应该重新启动 tomcat 实例。

于 2011-12-11T06:57:17.017 回答