Hi Willy.
Am 26-12-2019 06:44, schrieb Willy Tarreau:
Hi Aleks,
On Tue, Dec 24, 2019 at 10:29:44AM +0100, Aleksandar Lazic wrote:
I have created a feautre request for the check rewrite as we have more
and
more requests for checks which are quite difficult to setup.
https://github.com/haproxy/haproxy/issues/426
Thanks for this. We definitely need to rework them for 2.2. At minima,
what I'd like to see, in order of realization:
- rewrite *all* health checks to internally use tcp-check sequences
only
so that we don't have to maintain this horribly broken mess anymore
and
can more easily implement new ones ;
Well, I think we will need also udp-check for example for DNS, QUIC and
some
other protocols.
- implement a new htx check mechanism that uses the muxes and that
will be
able to seamlessly deal with H1/H2/FCGI, and likely plug onto idle
connections; these ones will need to support adding headers and
probably
do more;
Full Ack.
- implement centralized check definitions that can be reused in
multiple
backends. E.g. tcp-checks sequences or htx check sequences should
only
be defined once. This implies that some of the headers will likely
need
to support variables so that a backend may defined a host header
for
example and the checks use it.
But we have already such a possibility IMHO, it's the named defaults
section,
isn't it.
If we can do all this it will be great.
Note that in your example above you're using %[host] for example,
though
the log-format syntax is only valid for traffic being processed, but I
do
get the idea anyway. For me it's the same principle as having variables
or
check parameters defined in the backend (or maybe even per server).
Yes, the log-format syntax was used to show that in some way a rewrite
from some
variables will be necessary.
It would be nice to be able to reuse the feature
(tcp|http)-(request|response)
for the checks.
And you know there will be some distributed setups where the status from
a backend
should be shared with different haproxy instances, maybe via peers
protocol, this
will be maybe only possible in the commercial version ;-).
Cheers,
Willy
Regards
Aleks