Manage HAProxy backend servers using socket.
Display available backends.
$ echo "show backend" | \ sudo -u haproxy socat stdio unix-connect:/var/run/haproxy/admin.sock
# name bnfs MASTER
Display backend servers.
$ echo "show servers state bnfs" | \ sudo -u haproxy socat stdio unix-connect:/var/run/haproxy/admin.sock
1 # be_id be_name srv_id srv_name srv_addr srv_op_state srv_admin_state srv_uweight srv_iweight srv_time_since_last_change srv_check_status srv_check_result srv_check_health srv_check_state srv_agent_state bk_f_forced_id srv_f_forced_id srv_fqdn srv_port srvrecord srv_use_ssl srv_check_port srv_check_addr srv_agent_addr srv_agent_port 3 bnfs 1 nfs1 192.168.56.10 2 0 1 1 659 6 3 4 6 0 0 0 - 0 - 0 0 - - 0 3 bnfs 2 nfs2 192.168.56.11 2 0 1 1 824 6 3 4 6 0 0 0 - 0 - 0 0 - - 0
The sixth column defines current server operational state.
[...] srv_op_state: Server operational state (UP/DOWN/...). 0 = SRV_ST_STOPPED The server is down. 1 = SRV_ST_STARTING The server is warming up (up but throttled). 2 = SRV_ST_RUNNING The server is fully up. 3 = SRV_ST_STOPPING The server is up but soft-stopping (eg: 404). [...]
Display current backend servers.
$ echo "show servers state bnfs" | \ sudo -u haproxy socat stdio unix-connect:/var/run/haproxy/admin.sock | \ awk 'NR>2 { switch($6) { case "0": s="stopped"; break; case "1": s="starting"; break; case "2": s="running"; break; case "3": s="stopping"; break; }; if($2 != "") { printf "%10s/%-10s%s\n", $2, $4, s } }'
bnfs/nfs1 running bnfs/nfs2 running
Disable second server.
$ echo -e "disable server bnfs/nfs2" | \ sudo -u haproxy socat stdio unix-connect:/var/run/haproxy/admin.sock
Inspect current backend servers.
$ echo "show servers state bnfs" | \ sudo -u haproxy socat stdio unix-connect:/var/run/haproxy/admin.sock | \ awk 'NR>2 { switch($6) { case "0": s="stopped"; break; case "1": s="starting"; break; case "2": s="running"; break; case "3": s="stopping"; break; }; if($2 != "") { printf "%10s/%-10s%s\n", $2, $4, s } }'
bnfs/nfs1 running bnfs/nfs2 stopped
Enable second server and disable the first one.
$ echo -e "enable server bnfs/nfs2\ndisable server bnfs/nfs1" | \ sudo -u haproxy socat stdio unix-connect:/var/run/haproxy/admin.sock
$ echo "show servers state bnfs" | \ sudo -u haproxy socat stdio unix-connect:/var/run/haproxy/admin.sock | \ awk 'NR>2 { switch($6) { case "0": s="stopped"; break; case "1": s="starting"; break; case "2": s="running"; break; case "3": s="stopping"; break; }; if($2 != "") { printf "%10s/%-10s%s\n", $2, $4, s } }'
bnfs/nfs1 stopped bnfs/nfs2 running