描述: | 平衡器成员(工人)的动态健康检查
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>