Apache httpd工作人员重试

我有一个运行mod_proxy和mod_proxy_balancer的Apache httpd web服务器。 整个/ somedir被发送到2个工作机器,它们使用循环调度程序来处理请求。 每个工作机器都运行IIS,但我不认为这很重要。

我可以通过反复请求包含机器IP地址的单个页面来演示负载均衡器,并以可预测的循环方式从一个页面切换到另一个页面。

如果我closures其中一个IIS服务器并开始请求相同的页面,那么每个页面只包含已启动机器的IP地址。 但是,如果我启动IIS并且不运行我的IIS应用程序,则/ somedir将返回500(因为它应该)。

我已经将500添加到了failonstatus(Apache 2.4),所以当它遇到错误Apache将工作机器置于错误状态。 尽pipeApache仍然向客户端返回代理错误。 如何让Apache捕获代理失败,并以与连接失败相同的方式使用其他工作器重试。

更新

有几乎相同的问题在StackOverflow问,所以join他们在一起。

https://stackoverflow.com/questions/11083707/httpd-mod-proxy-balancer-failover-failonstatus-transperant-switching

    我已经与httpd邮件列表上的开发人员进行了交谈,他确认这个function尚未在当前的代码库中实现。 我也自己审查了代码。 mod_proxy_balancer中的状态机不能重试HTTP错误,但是只能在连接错误的情况下重试。 我试图自己实现它,但它太复杂,我可以很容易地使代码库不稳定。

    所以这个问题今天没有已知的解决scheme…

    以防有人再次failonstatus这个问题:自Apache 2.2.27以来, failonstatus指令就被实现了。

     <Proxy balancer://backends> BalancerMember http://10.1.1.11 BalancerMember http://10.1.1.12 ProxySet failonstatus=500 </Proxy> 

    日志:

     [Thu Apr 28 03:13:06.176916 2016] [proxy_balancer:error] [pid 3285:tid 140231873353472] [client 10.1.1.1:43608] AH01174: balancer://puppetmaster: Forcing worker (http://10.1.1.12) into error state due to status code 500 matching 'failonstatus' balancer parameter