9.4. Master CLI
- The master CLI is a socket bound to the master process in master-worker mode.
- This CLI gives access to the unix socket commands in every running or leaving
- processes and allows a basic supervision of those processes.
- The master CLI is configurable only from the haproxy program arguments with
- the -S option. This option also takes bind options separated by commas.
Example:
# haproxy -W -S 127.0.0.1:1234 -f test1.cfg
# haproxy -Ws -S /tmp/master-socket,uid,1000,gid,1000,mode,600 -f test1.cfg
# haproxy -W -S /tmp/master-socket,level,user -f test1.cfg
- The master CLI introduces a new 'show proc' command to surpervise the
- processes:
Example:
$ echo 'show proc' | socat /var/run/haproxy-master.sock -
#<PID> <type> <relative PID> <reloads> <uptime> <version>
1162 master 0 5 0d00h02m07s 2.0-dev7-0124c9-7
# workers
1271 worker 1 0 0d00h00m00s 2.0-dev7-0124c9-7
1272 worker 2 0 0d00h00m00s 2.0-dev7-0124c9-7
# old workers
1233 worker [was: 1] 3 0d00h00m43s 2.0-dev3-6019f6-289
- In this example, the master has been reloaded 5 times but one of the old
- worker is still running and survived 3 reloads. You could access the CLI of
- this worker to understand what's going on.
- When the prompt is enabled (via the "prompt" command), the context the CLI is
- working on is displayed in the prompt. The master is identified by the "master"
- string, and other processes are identified with their PID. In case the last
- reload failed, the master prompt will be changed to "master[ReloadFailed]>" so
- that it becomes visible that the process is still running on the previous
- configuration and that the new configuration is not operational.
- The master CLI uses a special prefix notation to access the multiple
- processes. This notation is easily identifiable as it begins by a @.
- A @ prefix can be followed by a relative process number or by an exclamation
- point and a PID. (e.g. @1 or @!1271). A @ alone could be use to specify the
- master. Leaving processes are only accessible with the PID as relative process
- number are only usable with the current processes.
Examples:
$ socat /var/run/haproxy-master.sock readline
prompt
master> @1 show info; @2 show info
[...]
Process_num: 1
Pid: 1271
[...]
Process_num: 2
Pid: 1272
[...]
master>
$ echo '@!1271 show info; @!1272 show info' | socat /var/run/haproxy-master.sock -
[...]
- A prefix could be use as a command, which will send every next commands to
- the specified process.
Examples:
$ socat /var/run/haproxy-master.sock readline
prompt
master> @1
1271> show info
[...]
1271> show stat
[...]
1271> @
master>
$ echo '@1; show info; show stat; @2; show info; show stat' | socat /var/run/haproxy-master.sock -
[...]
- You can also reload the HAProxy master process with the "reload" command which
- does the same as a `kill -USR2` on the master process, provided that the user
- has at least "operator" or "admin" privileges.
Example:
$ echo "reload" | socat /var/run/haproxy-master.sock
- Note that a reload will close the connection to the master CLI.