Não tenho certeza de qual versão você está usando, as necessidades a seguir HAProxy
>= 1.6~
:
Você pode querer dar uma olhada no carregamento diretiva server-state-from-file , que permite
seamless reloads of HAProxy.
This directive points HAProxy to a file where server state from previous running process has been saved. That way, when starting up, before handling traffic, the new process can apply old states to servers exactly has if no reload occured. [...]
(Isso é apenas um trecho, para mais detalhes, siga o link.)
Usando isso, sua configuração pode parecer (somente as partes relevantes mostradas):
global
server-state-file /var/lib/haproxy/server-state
stats socket /var/lib/haproxy/stats
defaults
load-server-state-from-file global
Seu comando reload poderia se parecer com o seguinte:
socat /var/lib/haproxy/stats - <<< \"show servers state\" > /var/lib/haproxy/server-state && systemctl reload-or-restart haproxy
Isto é:
- Conecte-se ao
stats
socket viasocat
, obtenha os estados dos servidores e / ou backends e grave no arquivo de estado. - Depois disso, se tudo correr bem, recarregue ou reinicie o
HAProxy
.