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

标签 apache load-balancing mod-proxy failover apache2.2

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

<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

关于Apache 2.2 mod_proxy 故障转移/负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37734944/

相关文章:

java - Apache 不遵守 If-Modified-Since

java - Apache fediz 1.2 - 上下文初始化失败

java - JSP 中的 while 循环执行 javascript 不起作用?

java - 将负载均衡器绕过不同 Web 应用程序的特定服务器

python - 找不到包 "libapache2-mod-proxy-html"Ubuntu 16.04

apache - 为什么显示我的PHP源代码?

java - Apache Tomcat 是Web服务器还是应用服务器

amazon-web-services - 确定 Amazon ELB 后面的客户端 IP 地址

apache - Tomcat 服务 URLs mod_proxy 和 apache 错误

Apache mod_proxy_ajp 模块过早地将流量发送到备用后端服务器