From 01c6cc36706ad939ae539c7491118712dc342c4e Mon Sep 17 00:00:00 2001 From: Baptiste Assmann Date: Sun, 23 Aug 2015 11:45:29 +0200 Subject: [PATCH] DOC: load-server-state-from-file --- doc/configuration.txt | 118 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 2 deletions(-) diff --git a/doc/configuration.txt b/doc/configuration.txt index 4d6676f24..671a4c214 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -763,7 +763,8 @@ stats bind-process [ all | odd | even | [-] ] ... server-state-base Specifies the directory prefix to be prepended in front of all servers state - file names which do not start with a '/'. See also "server-state-file". + file names which do not start with a '/'. See also "server-state-file", + "load-server-state-from-file" and "server-state-file-name". server-state-file Specifies the path to the file containing state of servers. If the path starts @@ -774,7 +775,8 @@ server-state-file output of this command must be written in the file pointed by . When starting up, before handling traffic, HAProxy will read, load and apply state for each server found in the file and available in its current running - configuration. See also "server-state-base" and "show servers state". + configuration. See also "server-state-base" and "show servers state", + "load-server-state-from-file" and "server-state-file-name" ssl-default-bind-ciphers This setting is only available when support for OpenSSL was built in. It sets @@ -1642,6 +1644,7 @@ http-reuse X - X X http-send-name-header - - X X id - X X X ignore-persist - X X X +load-server-state-from-file X - X X log (*) X X X X log-format X X X - log-tag X X X X @@ -1732,6 +1735,7 @@ rspideny - X X X rspirep - X X X rsprep - X X X server - - X X +server-state-file-name X - X X source X - X X srvtimeout (deprecated) X - X X stats admin - - X X @@ -4145,6 +4149,97 @@ ignore-persist { if | unless } See also : "force-persist", "cookie", and section 7 about ACL usage. +load-server-state-from-file { global | local | none } + Allow seamless reload of HAProxy + May be used in sections: defaults | frontend | listen | backend + yes | no | yes | yes + + 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. The purpose of the "load-server-state-from-file" directive is + to tell haproxy which file to use. For now, only 2 arguments to either prevent + loading state or load states from a file containing all backends and servers. + The state file can be generated by running the command "show servers state" + over the stats socket and redirect output. + + The format of the file is versionned and is very specific. To understand it, + please read the documentation of the "show servers state" command (chapter + 9.2). + + Arguments: + global load the content of the file pointed by the global directive + named "server-state-file". + + local load the content of the file pointed by the directive + "server-state-file-name" if set. If not set, then the backend + name is used as a file name. + + none don't load any stat for this backend + + Notes: + - server's IP address is not updated unless DNS resolution is enabled on + the server. It means that if a server IP address has been changed using + the stat socket, this information won't be re-applied after reloading. + + - server's weight is applied from previous running process unless it has + has changed between previous and new configuration files. + + Example 1: + + Minimal configuration: + + global + stats socket /tmp/socket + server-state-file /tmp/server_state + + defaults + load-server-state-from-file global + + backend bk + server s1 127.0.0.1:22 check weight 11 + server s2 127.0.0.1:22 check weight 12 + + Then one can run : + + socat /tmp/socket - <<< "show servers state" > /tmp/server_state + + Content of the file /tmp/server_state would be like this: + + 1 + # + 1 bk 1 s1 127.0.0.1 2 0 11 11 4 6 3 4 6 0 0 + 1 bk 2 s2 127.0.0.1 2 0 12 12 4 6 3 4 6 0 0 + + Example 2: + + Minimal configuration: + + global + stats socket /tmp/socket + server-state-base /etc/haproxy/states + + defaults + load-server-state-from-file local + + backend bk + server s1 127.0.0.1:22 check weight 11 + server s2 127.0.0.1:22 check weight 12 + + Then one can run : + + socat /tmp/socket - <<< "show servers state bk" > /etc/haproxy/states/bk + + Content of the file /etc/haproxy/states/bk would be like this: + + 1 + # + 1 bk 1 s1 127.0.0.1 2 0 11 11 4 6 3 4 6 0 0 + 1 bk 2 s2 127.0.0.1 2 0 12 12 4 6 3 4 6 0 0 + + See also: "server-state-file", "server-state-file-name", and + "show servers state" + log global log
[len ] [ []] @@ -6896,6 +6991,25 @@ server
[:[port]] [param*] See also: "default-server", "http-send-name-header" and section 5 about server options +server-state-file-name [] + Set the server state file to read, load and apply to servers available in + this backend. It only applies when the directive "load-server-state-from-file" + is set to "local". When is not provided or if this directive is not + set, then backend name is used. If starts with a slash '/', then it is + considered as an absolute path. Otherwise, is concatenated to the + global directive "server-state-file-base". + + Example: the minimal configuration below would make HAProxy look for the + state server file '/etc/haproxy/states/bk': + + global + server-state-file-base /etc/haproxy/states + + backend bk + load-server-state-from-file + + See also: "server-state-file-base", "load-server-state-from-file", and + "show servers state" source [:] [usesrc { [:] | client | clientip } ] source [:] [usesrc { [:] | hdr_ip([,]) } ]