This module provides for dynamic health checking of balancer members (workers). This can be enabled on a worker-by-worker basis. The health check is done independently of the actual reverse proxy requests.
This module requires the service of
The health check mechanism is enabled via the use of additional
A new BalancerMember status state (flag)
is defined via this module: "C
".
When the worker is taken offline due to failures as determined by the health
check module, this flag is set, and can be seen (and modified) via the
balancer-manager
.
Parameter | Default | Description | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
hcmethod | None | No dynamic health check performed. Choices are:
| ||||||||||||||||||||||||
hcpasses | 1 | Number of successful health check tests before worker is re-enabled | ||||||||||||||||||||||||
hcfails | 1 | Number of failed health check tests before worker is disabled | ||||||||||||||||||||||||
hcinterval | 30 | Period of health checks in seconds (e.g. performed every 30 seconds). Uses the time-interval directive syntax. | ||||||||||||||||||||||||
hcuri | Additional URI to be appended to the worker URL for the health check. | |||||||||||||||||||||||||
hctemplate | Name of template, created via | |||||||||||||||||||||||||
hcexpr | Name of expression, created via If not used, 2xx thru 3xx status codes imply success |
The following example shows how one might configured health checking for various backend servers:
In this scenario, http://www.example.com/
is health checked by sending a GET /status.php
request to that server and seeing that the returned page does not include the string Under maintenance. If
it does, that server is put in health-check fail mode, and disabled. This dynamic check is performed
every 30 seconds, which is the default.
http://www2.example.com/
is checked by sending a simple HEAD
request every
10 seconds and making sure that the response status is 2xx, 3xx or 4xx. http://www3.example.com/
is checked
every 5 seconds by simply ensuring that the socket to that server is up. If the backend is marked as
"down" and it passes 2 health check, it will be re-enabled and added back into the load balancer.
It takes 3 back-to-back health check failures to disable the server and move it out
of rotation. Finally, http://www4.example.com/
is
not dynamically checked at all.
The hcexpr
parameter.
If using a health check method (eg: GET
) which results in a response
body, that body itself can be checked via ap_expr
using the hc()
expression function, which is unique to this module.
In the following example, we send the backend a GET
request
and if the response body contains the phrase Under maintenance,
we want to disable the backend.
NOTE: Since response body can quite large, it is best if used against specific status pages.
The hctemplate
parameter.
If Apache httpd and APR are built with thread support, the health check
module will offload the work of the actual checking to a threadpool
associated with the Watchdog process, allowing for parallel checks.
The 0
, no threadpool
is used at all, resulting in serialized health checks.