我们使用当前配置(略微模糊)来平衡 2 个 Web 服务器和 4 个应用程序(Tomcat)服务器,使用 JSESSIONID;每个 Web 服务器的 mod_proxy 配置完全相同
<Proxy balancer://mycluster>
BalancerMember ajp://192.168.0.1:8009 route=app0
BalancerMember ajp://192.168.0.2:8009 route=app1
BalancerMember ajp://192.168.0.3:8009 route=app2
BalancerMember ajp://192.168.0.4:8009 route=app3
ProxySet stickysession=JSESSIONID
ProxySet lbmethod=byrequests
</Proxy>
我们发现,如果某个应用服务器完全无法访问(无论是通过移除 VMWare 中的 NIC 还是关闭该服务器),某些 Web 服务器在 60 秒重试后仍会路由到该服务器。这当然会给已路由到该现已停止运行的应用服务器的用户带来问题。
但是,如果我们只是关闭应用服务器上的 Tomcat,mod_proxy 会在 60 秒内将它们从池中移除,并正确地将流量转移到正在运行的服务器。当然,如果我们通过 balancer-manager 手动将其移除,它会立即停止路由,但手动干预是不可接受的。
我已经查看了文档,但没有发现任何未设置的参数会导致这种情况发生。我无法想象 mod_proxy 竟然如此愚蠢,竟然将这种行为作为默认行为。在这个特定配置中,我们可能遗漏了什么?
我希望这不是一个非常明显和突出的错误配置,因此非常感谢任何帮助。