Apache 负载均衡器未故障转移到热备用

Apache 负载均衡器未故障转移到热备用

发现当主服务器的应用程序响应 500 错误时,我们的 Apache 负载均衡器没有故障转移到热备用服务器。

这就是我们的代理设置方式

   <Proxy balancer://hotspare>

        BalancerMember ajp://node1:8463 loadfactor=100 retry=30
        BalancerMember ajp://node2:8463 status=+H retry=0
        BalancerMember ajp://node3:8463 status=+H retry=0

        ProxySet lbmethod=bytraffic
   </Proxy>

它实际上仅在节点 1 关闭时才会发生故障转移。有人能解释一下这种行为吗?

答案1

如果您希望在后端服务器返回 HTTP 错误代码(例如 500)时进行故障转移,则必须使用“ failonstatus”选项。

参考可以在这里找到:https://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

failonstatus - 单个或逗号分隔的 HTTP 状态代码列表。如果设置,当后端返回列表中的任何状态代码时,将强制工作器进入错误状态。工作器恢复的行为与其他工作器错误相同。适用于 Apache HTTP Server 2.2.17 及更高版本。

否则,只有当后端根本没有响应时才会发生故障转移(就像您已经提到的那样)。

相关内容