haproxy动态配置API
运行时API是为了帮助HAPROXY创建完整的配置和统计信息,所有命令将在运行时立即生效。
如何使用运行时API呢?
有两种方式,可以使用TCP和Unix套接字进行访问,我们可以通过下面的配置来启用运行时API:global
stats socket ipv4@127.0.0.1:9999 level admin
stats socket /var/lib/haproxy/stats mode 666 level admin
stats timeout 2m
如果未使用HAProxy Enterprise,则安装中的默认Unix套接字名称可能名为/var/run/haproxy.sock或者/var/lib/haproxy/stats,而不是/var/run/hapee-lb.sock。
而在启动了master-worker模式下,可能会绑定一个管理socket地址,通常是/var/run/haproxy-master.sock, 我们可以通过这个地址管理haproxy的服务,例如重新加载配置文件。
例如, 当前系统运行haproxy的命令为:╰─ ps -ef |grep haproxy | grep -v grep
haproxy 1452 20936 5 10:47 ? 00:00:01 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock -sf 20937
root 20936 1 0 9月09 ? 00:00:11 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock -sf 20937
运行API的命令行使用方法我们需要安装一个socat工具,接下来会使用此命令来操作运行时API。
当然我们也可以使用nc命令替换socat
接下来介绍的所有命令可以在 Unix Socket commands 这里找到,想要了解更多可以自己阅读一下。
下面只介绍几个简单命令
查看帮助help信息
下面是使用socat命令连接Unix套接字和tcp地址的方法:$ sudo socat readline /run/haproxy-master.sock
$ socat readline tcp4-connect:127.0.0.1:9999
> help
下面是使用nc命令连接Unix套接字和tcp地址的方法:$ sudo nc -U /run/haproxy-master.sock
$ nc 127.0.0.1 9999
> prompt
> help
当然可以通过管道方式传递参数:$ echo "help" | socat stdio /var/run/hapee-lb.sock
$ echo "help" | socat stdio tcp4-connect:127.0.0.1:9999
查看统计信息stat
执行的命令$ socat readline tcp4-connect:127.0.0.1:9999
> show stat
ACL规则管理add acl
clear acl
del acl [|#]
get acl
show acl []
frontend管理前端管理,可以关闭前端服务,当系统维护时可以使用此方法关闭外部请求,避免外部请求生成错误数据或者其他脏数据问题。disable frontend
enable frontend
shutdown frontend
show backend
set maxconn frontend
通过disable和enable方法还可以管理backend后端的health/server/agentdisable health /
disable server /
disable agent /
disable是临时暂停,如果需要彻底停止需要使用shutdown关闭服务。
server 管理show servers state []
set server / addr
set server / agent [ up | down ]
set server / health [ up | stopping | down ]
set server / state [ ready | drain | maint ]
set server / weight [%]
权重管理get weight /
set server / weight [%]