| 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 |
| |