Apache 负载均衡器是否可以发现它的某个均衡器成员是否已关闭?

Apache 负载均衡器是否可以发现它的某个均衡器成员是否已关闭?

我需要知道 apache 是否可以明智而自动地检测它的一个 balanerMembers 是否已关闭,从而免除其处理请求?

PS 后端服务器不会产生心跳。

谢谢

评论:我在 apache 2.4.7 中使用 mod_proxy。示例站点的配置如下。我的问题是,当其中一个后端服务器无响应时,我的负载平衡器仍会向死机的后端服务器发送请求,并且客户端会抱怨。以下配置有什么问题:

<Proxy balancer://X_Balancer>
    BalancerMember http://firsthost.sth/ status=-SE
    BalancerMember http://anotherhost.sth/ status=-SE
    ProxySet lbmethod=bybusyness
</Proxy>
<VirtualHost IPofloadbalancer:80>
    ServerName domainname
    SSLProxyEngine On
    Include /*/modsecurity.conf
    <location />
        ProxyPass balancer://X_Balancer/
        ProxyPassReverse balancer://X_Balancer/
    </location>
</VirtualHost>

答案1

如果你使用 mod_proxy在 Apache 2.2 中,您的配置选项有限,但 Apache 会检测无响应的 balancerMembers 并将请求分发给任何剩余的 balancerMembers。

阿帕奇2.4已经有了更多的选择,但是对于更高级的选项,通常最好使用更专业的负载平衡器软件。

根据您的评论:这取决于 balancerMember 停止响应的方式。如果仍然可以建立连接,但没有错误代码且没有响应,则设置timeoutfailontimeout选项可能会有所帮助。

<Proxy balancer://X_Balancer>
    BalancerMember http://firsthost.sth/ status=-SE timeout=5 retry=60
    BalancerMember http://anotherhost.sth/ status=-SE timeout=5 retry=60
    ProxySet lbmethod=bybusyness failontimeout=on
</Proxy>

timeout=5连接超时(以秒为单位)。Apache httpd 等待后端发送/发送数据的秒数。
failontimeout=on如果设置,请求发送到后端后 IO 读取超时将强制工作器进入错误状态。工作器恢复的行为与其他工作器错误相同。

答案2

BalancerMember http://firsthost.sth/ connectiontimeout=5 retry=5 ping=2 <br>
BalancerMember http://anotherhost.sth/ connectiontimeout=5 retry=5 ping=2

按照上述方向尝试一下!查看 ajp 协议的变更。

相关内容