haproxy/examples/seamless_reload.txt

63 lines
1.5 KiB
Plaintext

Reloading HAProxy without impacting server states
=================================================
Of course, to fully understand below information please consult
doc/configuration.txt to understand how each HAProxy directive works.
In the mean line, we update HAProxy's configuration to tell it where to
retrieve the last know trustable servers state.
Then, before reloading HAProxy, we simply dump servers state from running
process into the locations we pointed into the configuration.
And voilà :)
Using one file for all backends
-------------------------------
HAProxy configuration
*********************
global
[...]
stats socket /var/run/haproxy/socket
server-state-file global
server-state-base /var/state/haproxy/
defaults
[...]
load-server-state-from-file global
HAProxy init script
*******************
Run the following command BEFORE reloading:
socat /var/run/haproxy/socket - <<< "show servers state" > /var/state/haproxy/global
Using one state file per backend
--------------------------------
HAProxy configuration
*********************
global
[...]
stats socket /var/run/haproxy/socket
server-state-base /var/state/haproxy/
defaults
[...]
load-server-state-from-file local
HAProxy init script
*******************
Run the following command BEFORE reloading:
for b in $(socat /var/run/haproxy/socket - <<< "show backend" | fgrep -v '#')
do
socat /var/run/haproxy/socket - <<< "show servers state $b" > /var/state/haproxy/$b
done