小编Jon*_*ese的帖子

Apache代理负载平衡后端服务器故障检测

这是我的场景(由我的前任设计):

两台Apache服务器为许多混合后端Web服务器(Apache,IIS,Tomcat等)提供反向代理服务.有些网站我们有多个后端Web服务器,在这种情况下,我们会做类似的事情:

<Proxy balancer://www.example.com>
    BalancerMember http://192.168.1.40:80
    BalancerMember http://192.168.1.41:80
</Proxy>
<VirtualHost *:80>
    ServerName www.example.com:80
    CustomLog /var/log/apache2/www.example.com.log combined
    <Location />
        Order allow,deny
        Allow from all
        ProxyPass balancer://www.example.com/
        ProxyPassReverse balancer://www.example.com/
    </Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中,我在代理服务器的配置中有一个站点(www.example.com),并且该站点被代理到两个后端服务器192.168.1.40和.41中的一个或另一个.

我正在对此进行评估以确保我们对所有Web服务都具有容错能力(出于这个原因,我已经将两个反向代理服务器放入共享IP群集中),并且我想确保负载 - 平衡的后端服务器也具有容错能力.但是我无法弄清楚mod_proxy_balancer模块中是否内置了后端故障检测(以及避免故障后端服务器的逻辑)......

因此,如果192.168.202.40发生故障,Apache会检测到这一点(我会理解它是否首先需要一个失败的请求)并自动将所有请求路由到另一个后端192.168.202.41?或者它会继续在失败的后端和操作后端之间平衡请求吗?

我在mod_proxymod_proxy_balancer的Apache文档中找到了一些线索,似乎表明可以检测到故障("maxattempts =放弃之前的最大故障转移尝试次数.","failonstatus =单个或以逗号分隔的HTTP列表状态代码.如果设置,当后端返回列表中的任何状态代码时,这将强制工作人员进入错误状态."),但经过几天的搜索,我发现没有确凿的说法肯定它(或在至少"应该")检测后端故障和恢复.

我会说大多数搜索结果使用AJP协议将流量传递给后端服务器,这显然支持故障检测 - 但我的后端是Apache,IIS,Tomcat和其他人的混合物,我就是相当肯定他们中的许多人不支持AJP.它们也是Windows 2k3/2k8和Linux(主要是Ubuntu Lucid)盒子的混合体,运行各种不同的应用程序,具有各种不同的要求,因此像Backhand和LVS这样的附加模块对我来说不是一个选择.

我还试图通过创建一个像这样的新测试站点来实验测试这个功能:

<Proxy balancer://test.example.com>
    BalancerMember http://192.168.1.40:80
    BalancerMember http://192.168.1.200:80
</Proxy>
<VirtualHost *:80>
    ServerName test.example.com:80
    CustomLog /var/log/apache2/test.example.com.log combined
    LogLevel debug
    <Location />
        Order allow,deny
        Allow from all
        ProxyPass balancer://test.example.com/
        ProxyPassReverse balancer://test.example.com/
    </Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

其中192.168.1.200是未运行任何Web服务器的虚假地址,用于模拟后端故障.对于一堆不同的客户端机器,测试站点没有问题,但即使将LogLevel设置为调试,我也没有看到任何记录,表明它检测到其中一个后端服务器已关闭......我想100%确定我可以在不影响生产站点的情况下将负载均衡的后端用于维护(当然一次一个).

apache failover reverse-proxy load-balancing detection

14
推荐指数
1
解决办法
5万
查看次数