DOC: load-server-state-from-file

This commit is contained in:
Baptiste Assmann 2015-08-23 11:45:29 +02:00 committed by Willy Tarreau
parent e11cfcd2c9
commit 01c6cc3670

View File

@ -763,7 +763,8 @@ stats bind-process [ all | odd | even | <number 1-64>[-<number 1-64>] ] ...
server-state-base <directory> server-state-base <directory>
Specifies the directory prefix to be prepended in front of all servers state 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 <file> server-state-file <file>
Specifies the path to the file containing state of servers. If the path starts Specifies the path to the file containing state of servers. If the path starts
@ -774,7 +775,8 @@ server-state-file <file>
output of this command must be written in the file pointed by <file>. When output of this command must be written in the file pointed by <file>. When
starting up, before handling traffic, HAProxy will read, load and apply state 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 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 <ciphers> ssl-default-bind-ciphers <ciphers>
This setting is only available when support for OpenSSL was built in. It sets 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 http-send-name-header - - X X
id - X X X id - X X X
ignore-persist - X X X ignore-persist - X X X
load-server-state-from-file X - X X
log (*) X X X X log (*) X X X X
log-format X X X - log-format X X X -
log-tag X X X X log-tag X X X X
@ -1732,6 +1735,7 @@ rspideny - X X X
rspirep - X X X rspirep - X X X
rsprep - X X X rsprep - X X X
server - - X X server - - X X
server-state-file-name X - X X
source X - X X source X - X X
srvtimeout (deprecated) X - X X srvtimeout (deprecated) X - X X
stats admin - - X X stats admin - - X X
@ -4145,6 +4149,97 @@ ignore-persist { if | unless } <condition>
See also : "force-persist", "cookie", and section 7 about ACL usage. 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
# <field names skipped for the doc example>
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
# <field names skipped for the doc example>
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 global
log <address> [len <length>] <facility> [<level> [<minlevel>]] log <address> [len <length>] <facility> [<level> [<minlevel>]]
@ -6896,6 +6991,25 @@ server <name> <address>[:[port]] [param*]
See also: "default-server", "http-send-name-header" and section 5 about See also: "default-server", "http-send-name-header" and section 5 about
server options server options
server-state-file-name [<file>]
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 <file> is not provided or if this directive is not
set, then backend name is used. If <file> starts with a slash '/', then it is
considered as an absolute path. Otherwise, <file> 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 <addr>[:<port>] [usesrc { <addr2>[:<port2>] | client | clientip } ] source <addr>[:<port>] [usesrc { <addr2>[:<port2>] | client | clientip } ]
source <addr>[:<port>] [usesrc { <addr2>[:<port2>] | hdr_ip(<hdr>[,<occ>]) } ] source <addr>[:<port>] [usesrc { <addr2>[:<port2>] | hdr_ip(<hdr>[,<occ>]) } ]