From bbe8959a5f6017aecd3ed2c2b8dfe7d5ca02ec24 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Mon, 17 Sep 2018 12:26:38 -0400 Subject: [PATCH] Add bit about the HAProxy config --- content/post/patroni-and-haproxy-agent-checks.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/content/post/patroni-and-haproxy-agent-checks.md b/content/post/patroni-and-haproxy-agent-checks.md index 3cd11bd..9bf2be5 100644 --- a/content/post/patroni-and-haproxy-agent-checks.md +++ b/content/post/patroni-and-haproxy-agent-checks.md @@ -119,6 +119,21 @@ WantedBy=multi-user.target This is a really straightfoward unit with one deviation - `StartLimitInterval=15` is used to prevent the daemon from restarting immediately on failure. In my experience (probably a n00b error), Python doesn't properly clean up the socket immediately, leading to the daemon blowing through its ~5 restart attempts in under a second and failing every time with an "Address already in use" error. This interval gives some breathing room for the socket to free up. And luckily, HAProxy won't change the state if the agent check becomes unreachable, so this should be safe. +### Enable it in HAProxy + +Now finally, configure your HAProxy backend to use the agent check. Here's my (live) config for a read-write backend: + +``` +backend mast-pgX_psql_readwrite + mode tcp + option tcpka + option httpchk OPTIONS /master + http-check expect status 200 + server mast-pg1 mast-pg1:5432 resolvers nsX resolve-prefer ipv4 maxconn 100 check agent-check agent-port 5555 inter 1s fall 2 rise 2 on-marked-down shutdown-sessions port 8008 + server mast-pg2 mast-pg2:5432 resolvers nsX resolve-prefer ipv4 maxconn 100 check agent-check agent-port 5555 inter 1s fall 2 rise 2 on-marked-down shutdown-sessions port 8008 + server mast-pg3 mast-pg3:5432 resolvers nsX resolve-prefer ipv4 maxconn 100 check agent-check agent-port 5555 inter 1s fall 2 rise 2 on-marked-down shutdown-sessions port 8008 +``` + ### Conclusion I hope that this provides some help to those who want to use Patroni fronted by HAProxy but don't want `DOWN` backends all the time! And of course, I'm open to suggestions for improvement or questions - just send me an email!