Apache Http使用mod_jk进行负载平衡故障转移
问题描述:
我使用apache http和mod_jk进行负载平衡。当使用粘性会话时,如果其中一个tomcat实例死亡,请求被成功重定向到其他节点。如果由于某种原因应用程序死了,但是tomcat仍然活着,那么这些请求就会继续到有死应用程序的节点。任何想法如何解决这个问题?Apache Http使用mod_jk进行负载平衡故障转移
下面你可以罚我的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
谢谢!
答
mod_jk无法ping通心跳URL来决定节点的健康状况。
一个解决方案是使用一个外部脚本,它会为你做,如果应用程序不活动,它应该重新启动tomcat实例。
答
通常,当tomcat仍在运行时应用程序不可用时,会出现404错误。我认为有一个工作人员指令要处理,并且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