On Thu, Oct 22, 2015 at 3:59 AM, James Brown <[email protected]> wrote: > Hello haproxy@: > > My name is James Brown; I wrote a small piece of software called hacheck > (https://github.com/Roguelazer/hacheck) which is designed to be a healthcheck > proxy for decentralized load balancer control (remove a node from a load > balancer without knowing where the load balancers are; helpful once you > start to have a truly, stupidly large number of load balancers). > > I am interested in using agent-checks instead of co-opting the existing > httpchk mechanism; unfortunately, it looks like there's no convenient way to > multiplex multiple services onto a single agent-port and reasonably > disambiguate them. For example, it'd be great if I could have a server which > runs one agent-check responder and can `MAINT` any of a dozen (or a hundred) > different services running on this box. > > I've attached a small patch which adds a new server parameter (agent-send) > which is a static string which will be sent to the agent on every server. > This allows me to generate configs that look like > > backend foo > server web1 10.1.2.1:8001 agent-check agent-port 3334 agent-send > "foo/web1\n" > server web2 10.1.2.2:8001 agent-check agent-port 3334 agent-send > "foo/web2\n" > > backend bar > server web1 10.1.2.1:8002 agent-check agent-port 3334 agent-send > "bar/web1\n" > server web2 10.1.2.2:8002 agent-check agent-port 3334 agent-send > "bar/web2\n" > > And have a single service (running on port 3334) which can easily MAINT or > UP either "foo" or "bar" depending on the value that it receives. > > The patch seems to work in my limited testing (that is to say, HAProxy sends > the string and doesn't segfault or leak infinite amounts of RAM). > > Does this sound useful to anyone else? Is it worth upstreaming the patch? I > welcome your thoughts. > -- > James Brown > Engineer > EasyPost
Hi James, This is interesting. That said, I'm suggesting an improvement: use the log format varialble. So your configuration would become: backend foo default-server agent-send "%b/%s\n" server web1 10.1.2.1:8001 agent-check agent-port 3334 server web2 10.1.2.2:8001 agent-check agent-port 3334 Baptiste

