63 lines
1.5 KiB
Plaintext
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
|
||
|
|