我尝试配置一个 apache 负载平衡器来管理服务器状态如何变为错误以及服务器状态如何变为正常。apache 版本是 2.4 。
我理解当请求收到多次超时时,服务器状态为错误。超时值由平衡器成员参数 timeout 定义,尝试次数由平衡器参数 maxattempts 定义。请参阅代理参数。
是对的吗 ?
现在为了更精确地管理服务器如何设置为错误,我想要使用:
- failonstatus 参数定义服务器针对哪些 http 代码设置错误
- 重试定义两次连接尝试之间的时间
为了更准确地检查服务器状态,我想使用模块 mod_proxy_hcheck。请参阅mod_proxy_check。
我的目标配置是:
ProxyHCExpr ok2 {%{REQUEST_STATUS} =~ /^[2]/}
<Proxy balancer://anUrl>
BalancerMember http://server1:8080 route=1 timeout=30 retry=12 hcmethod=HEAD hcexpr=ok2 hcinterval=10 hcpasses=2
BalancerMember http://server2:8080 route=2 timeout=30 retry=12 hcmethod=HEAD hcexpr=ok2 hcinterval=10 hcpasses=2
ProxySet lbmethod=bybusyness maxattempts=2 failonstatus=500,501,502,503
</Proxy>
采用这样的配置:
- 请求调度/平衡取决于服务器的待处理请求数量(参见mod_proxy
- 如果 http 请求代码为 500、501、502、503 之一,则平衡器成员/工作者/服务器设置错误
- 如果请求两次花费超过 30 秒的时间,且每次尝试间隔 12 秒,则平衡器成员/工作者/服务器设置错误
- 如果 / 上的 head 请求两次返回不同于 2XX 的代码,每次尝试间隔 10 秒,则平衡器成员/工作者/服务器设置错误
- 当服务器出现错误时,Apache 会等待 12 秒,然后再次向其发送请求,并在请求成功后更改服务器状态
是对的吗 ?
最后一个问题,如果 apache 在请求收到几次超时时检测到服务器出现错误,为什么会有 failontimeout 参数?