Apache 2.2 mod_proxy故障转移/负载平衡



我正在使用mod_proxy_balancer来管理后端服务器(tcServers)的故障转移。当其他后端服务(如 NFS)失败时,后端服务器可能会返回错误代码而不是超时,我们希望此类服务器也被标记为故障节点。因此,我们使用失败状态指令。

<Proxy balancer://awstestbalancer>
    ProxySet failonstatus=503 
    BalancerMember https://host:port/context/ retry=30
    # the hot standby
    BalancerMember https://host:port/context/ status=+H retry=0
</Proxy>
ProxyPass /context balancer://awstestbalancer
ProxyPassReverse /context balancer://awstestbalancer

目前,故障转移在一个故障中完美运行。当主动节点发生故障时,用户会收到 503 错误,并且从下一个请求中,备用服务器将接管。

不过,我甚至不希望一个请求失败。无法在不向客户端返回错误的情况下mod_proxy故障转移?如果主动节点失败,我希望mod_proxy针对同一请求尝试备用,而不仅仅是来自后续请求!

我也尝试了以下设置,但它们不起作用。使用 APACHE 2.2.59

<Proxy balancer://awstestbalancer>
BalancerMember https://host:port/context route=tcserver1 loadfactor=1
BalancerMember https://host:port/context route=tcserver2 loadfactor=1
ProxySet lbmethod=bybusyness
ProxySet nofailover=Off
ProxySet stickysession=JSESSIONID
</Proxy>
ProxyPass /context balancer://awstestbalancer
ProxyPassReverse /context balancer://awstestbalancer

<Proxy balancer://awstestbalancer>
BalancerMember https://host:port/context route=tcserver1 loadfactor=1 ping=5
BalancerMember https://host:port/context route=tcserver2 loadfactor=1 ping=5
ProxySet lbmethod=bytraffic
ProxySet nofailover=On
ProxySet stickysession=JSESSIONID
</Proxy>
ProxyPass /context balancer://awstestbalancer
ProxyPassReverse /context balancer://awstestbalancer
Thanks!!!
Sid

以下配置将起作用。 如果后端位于 AWS 上,并且其状态经常更改,则可以尝试减少连接超时。

<Proxy balancer://awstestbalancer>
    BalancerMember https://host:port/context/ connectiontimeout=5
    BalancerMember https://host:port/context/ connectiontimeout=5
</Proxy> 
ProxyPass /context balancer://awstestbalancer failonstatus=500,501,502,503,504
ProxyPassReverse /context balancer://awstestbalancer

最新更新