使用mod_jk的Apache Http负载均衡故障转移失败。

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

谢谢!

2个回答

2
通常情况下,在Tomcat仍在运行时应用程序不可用时会出现404错误。我认为有一个处理这种情况的工作指令,即fail_on_status,您可以使用它来处理404错误,并且可能不需要使用此指令包含503错误代码,这可能意味着Tomcat已停止,并且mod_jk的工作是故障转移到其他正常工作的节点。尝试以下workers.properties(每个worker都附加一行)也适用于其他以逗号分隔的错误代码。
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

1

mod_jk 无法通过心跳 URL 来判断节点的健康状况。

一个解决方案是使用外部脚本来执行此操作,如果应用程序未运行,则应重新启动 Tomcat 实例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接