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

Reply via email to