任何人都知道如何configuration热备用(+ H)mod_proxyfunction,以便在closures期间立即发生接pipe(即使没有一个用户接收502)错误?
我们不是在寻找真正的负载均衡,我们只是希望辅助服务器在我们closures主服务器的时候接pipe。
问题是,无论什么时候主服务器出现故障,我都可以在第二台服务器实际接pipe之前,发送一个无效的请求,导致502 HTTP错误到达terminal用户。
Listen 80 <VirtualHost 127.0.0.1:80> ServerName domain.com ProxyPass / balancer://balance/ <Proxy balancer://balance/> BalancerMember http://primary_ip:80 BalancerMember http://secondary_ip:80 status=+H </Proxy> </VirtualHost>
如果您首先明确禁用主要平衡器成员(在closures主要服务器之前),则Apache将高兴地将请求路由到次要平衡器成员。 收购立即发生。
要做到这一点,首先使用config启用平衡器pipe理器:
<Location /lb> SetHandler balancer-manager </Location>
然后,您可以通过访问/ lb以交互方式或编程方式启用/禁用平衡器成员。
与karmawhore的评论相反,像这样的热备份设置与健康检查没有任何关系。
Apache不支持对此进行必要的健康检查。 即使进行了健康检查,在检查请求可能无效的情况下也有一个窗口。
你可以写一些重复testing一个小的静态文件来强制代理识别平衡器失败。
我记得一个老的mod_perl解决scheme:
http://search.cpan.org/~mgregoro/Apache-HealthCheck-0.01/lib/Apache/HealthCheck.pm
我认为你可以使用ErrorDocument指令。 如果你指定了你正在寻找的错误代码,而不是静态页面(比如/missing.html),你可以指定一个PHP页面来处理你的redirect。 就像是:
ErrorDocument 502 /redir.php
然后在redir.php中有这样的东西:
<?php header("Location: ...page that was asked for..."); ?>