| 描述: | 平衡器成员(工人)的动态健康检查
mod_proxy |
|---|---|
| 状态: | 延期 |
| 模块标识符: | proxy_hcheck_module |
| 源文件: | mod_proxy_hcheck.c |
| 兼容性: | 在Apache 2.4.21及更高版本中可用 |
此模块提供对平衡器成员(工人)的动态运行状况检查。可以逐个工人启用此功能。运行状况检查与实际的反向代理请求无关。
此模块需要的服务mod_watchdog。
运行状况检查机制通过使用其他BalancerMember参数启用
,这些参数以标准方式通过ProxyPass以下方式配置:
通过以下模块定义新的BalancerMember 状态状态(标志):“ C”。当由于运行状况检查模块确定的故障使工作人员下线时,将设置此标志,并可以通过查看和修改此标志
balancer-manager。
| 参数 | 默认 | 描述 | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 方法 | 没有 | 没有执行动态运行状况检查。选择是:
| ||||||||||||||||||||||||
| 通行证 | 1个 | 重新启用工作程序之前成功进行的健康检查测试的次数 | ||||||||||||||||||||||||
| hcfails | 1个 | 禁用工作人员之前健康检查失败的次数 | ||||||||||||||||||||||||
| 间隔 | 30 | 健康检查周期(以秒为单位)(例如,每30秒执行一次) | ||||||||||||||||||||||||
| 胡里 | 要附加到工作人员URL的其他URI,以进行健康检查。 | |||||||||||||||||||||||||
| 模板 | 通过创建的模板名称,ProxyHCTemplate用于为此工作人员设置健康检查参数 | |||||||||||||||||||||||||
| hcexpr | 通过创建的表达式名称ProxyHCExpr,用于检查响应标头的运行状况。如果未使用,则2xx至3xx状态代码表示成功 | |||||||||||||||||||||||||
以下示例显示了如何配置各种后端服务器的运行状况检查:
ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
<Proxy balancer://foo>
BalancerMember http://www.example.com/ hcmethod=GET hcexpr=in_maint hcuri=/status.php
BalancerMember http://www2.example.com/ hcmethod=HEAD hcexpr=ok234 hcinterval=10
BalancerMember http://www3.example.com/ hcmethod=TCP hcinterval=5 hcpasses=2 hcfails=3
BalancerMember http://www4.example.com/
</Proxy>
ProxyPass "/" "balancer://foo"
ProxyPassReverse "/" "balancer://foo"
在这种情况下,http://www.example.com/通过GET /status.php
向该服务器发送请求并查看返回的页面不包含字符串Under maintenance来检查运行状况。如果是这样,则该服务器将进入运行状况检查失败模式,并被禁用。此动态检查每30秒执行一次,这是默认设置。
http://www2.example.com/通过HEAD每10秒发送一次简单请求并确保响应状态为2xx,3xx或4xx来检查。http://www3.example.com/仅通过确保该服务器的套接字已启动即可每5秒检查一次。如果后端被标记为“关闭”,并且通过了2次健康检查,它将被重新启用并重新添加到负载均衡器中。要使服务器禁用并将其移出旋转,需要进行3次连续的运行状况检查失败。最后,http://www4.example.com/根本不进行动态检查。
| 描述: | 创建一个命名条件表达式,用于根据其响应确定后端的运行状况 |
|---|---|
| 句法: | ProxyHCExpr name {ap_expr expression} |
| 内容: | 服务器配置,虚拟主机 |
| 状态: | 延期 |
| 模块: | mod_proxy_hcheck |
该ProxyHCExpr指令允许创建一个命名条件表达式,该表达式检查后端服务器的响应标头以确定其运行状况。然后可以通过hcexpr
参数将此平衡条件分配给平衡器成员。
ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
ProxyPass "/apps" "balancer://foo"
<Proxy balancer://foo>
BalancerMember http://www2.example.com/ hcmethod=HEAD hcexpr=ok234 hcinterval=10
</Proxy>
如果使用运行状况检查方法(例如GET:)来生成响应主体,则可以ap_expr使用hc()
该模块独有的表达式函数来检查该主体本身。
在以下示例中,我们向后端发送一个GET请求,并且如果响应正文中包含短语Under maintenance,则我们希望禁用后端。
ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
ProxyPass "/apps" "balancer://foo"
<Proxy balancer://foo>
BalancerMember http://www.example.com/ hcexpr=in_maint hcmethod=get hcuri=/status.php
</Proxy>
注意:由于响应主体可能很大,因此最好将其用于特定状态页面。
| 描述: | 创建一个命名模板以设置各种健康检查参数 |
|---|---|
| 句法: | ProxyHCTemplate name parameter=setting [...] |
| 内容: | 服务器配置,虚拟主机 |
| 状态: | 延期 |
| 模块: | mod_proxy_hcheck |
该ProxyHCTemplate指令允许创建一个命名的健康检查参数集(模板),然后可以通过该hctemplate
参数将其分配给平衡器成员。
ProxyHCTemplate tcp5 hcmethod=tcp hcinterval=5 ProxyPass "/apps" "balancer://foo" <Proxy balancer://foo> BalancerMember http://www2.example.com/ hctemplate=tcp5 </Proxy>