Hi,
this series comprises of several components
I have combined them because they depend on each other.
It should be possible to review the components
in order without particular regard for subsequent components.
That is, it should be possible to review small subsets of this series.
A. Patches 0-1 are cleanup patches
DOC: Clarify documentation of option lb-agent-chk
CLEANUP: Make parameters of srv_downtime and srv_getinter const
B. Patches 2 - 12 add support for a secondary agent health check
In this mode, a non-agent health check is run as the primary
health check and a secondary agent health check is also run.
MEDIUM: Split up struct server's check element
MEDIUM: Move {,fast,down}inter to struct check
MEDIUM: Move result element to struct check
MEDIUM: Paramatise functions over the check of a server
MEDIUM: cfgparse: Factor out check initialisation
MEDIUM: Add state to struct check
MEDIUM: Add name element to struct check
MEDIUM: Move health element to struct check
MEDIUM: Add helper for task creation for checks
MEDIUM: checks: Add supplementary agent checks
C. Patches 13 - 15 add support for the agent-hdr option to http-check.
This allows agent information to be passed in the HTTP header
returned as part of an http check. In this way an HTTP health
check and an agent check can be run simultaneously as part
of the same health check.
MEDIUM: Add helper for agent check events.
MEDIUM: Parser to allow matching of HTTP header
MEDIUM: Add http-check agent-hdr option
D. Patches 16 - 20 enhance the behaviour of agent checks.
These behavioural changes were requested by loadbalancer.org.
They reflect differences be their desired implementation and
my supplied implementation and solutions to problems they
encountered during testing.
MEDIUM: Add DRAIN state and report it on the stats page
MEDIUM: Log agent fail, stopped or down as info
MEDIUM: Do not mark a server as down if the agent is unavailable
MEDIUM: Set rise and fall of agent checks to 1
MEDIUM: Add set agent pause|unpause unix socket command
E. Patches 21 - 23 add support for checking using an
external short-lived process
This is not strictly related to the agent health check work,
but common code paths are touched making many of the preceding
patches dependencies for the external health check patches.
MEDIUM: Break out check establishment into establish_chk()
MEDIUM: Add external check
Key Changes since v5 (posted on the 31st July)
* Use the same command-line arguments for external checks as are
used by ldirectord agent checks to allow check-programs
to be shared between ldirectord and haproxy.
Changes to "MEDIUM: Add external check"
* Correct usage of srv->check_common.xprt in ssl_sock_prepare_srv_ctx()
Changes to ""MEDIUM: Split up struct server's check element"
Key Changes since v4 (posted on the 20th July)
* Move the initialisation of the type field of struct check
into init_check(). This means that it is uninitialised for server->agent
if agent-port is not set and thus a task for the agent check will not be
erroneously started start_checks().
Base
Based on 9f09521f2d2deacfb4b1b10b23eb5525b9941c62
("BUG/MEDIUM: unique_id: HTTP request counter must be unique!")
which is 55 commits after v1.5-dev19.
Availability
To aid review I have made this series available in git at:
https://github.com/horms/haproxy.git agent-check-20130822
Overall Diffstat:
doc/configuration.txt | 140 ++++-
include/common/defaults.h | 2 +
include/proto/checks.h | 4 +-
include/proto/server.h | 4 +-
include/types/checks.h | 4 +
include/types/proxy.h | 3 +
include/types/server.h | 69 ++-
src/cfgparse.c | 222 ++++++--
src/checks.c | 1303 +++++++++++++++++++++++++++++++--------------
src/dumpstats.c | 55 +-
src/haproxy.c | 6 +
src/proto_http.c | 6 +-
src/server.c | 16 +-
src/ssl_sock.c | 2 +-
14 files changed, 1313 insertions(+), 523 deletions(-)
--
1.8.3.2