乐趣区

关于程序员:haproxy动态配置API

haproxy 动静配置 API

运行时 API 是为了帮忙 HAPROXY 创立残缺的配置和统计信息,所有命令将在运行时立刻失效。

如何应用运行时 API 呢?

有两种形式,能够应用 TCPUnix 套接字 进行拜访,咱们能够通过上面的配置来启用运行时 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 <acl> <pattern>
clear acl <acl>
del acl <acl> [<key>|#<ref>]
get acl <acl> <value>
show acl [<acl>]

frontend治理

前端治理,能够敞开前端服务,当系统维护时能够应用此办法敞开内部申请,防止内部申请生成谬误数据或者其余脏数据问题。

disable frontend <frontend>
enable frontend <frontend>
shutdown frontend <frontend>

show backend
set maxconn frontend <frontend> <value>

通过 disableenable办法还能够治理 backend 后端的health/server/agent

disable health <backend>/<server>
disable server <backend>/<server>
disable agent <backend>/<server>

disable是长期暂停,如果须要彻底进行须要应用 shutdown 敞开服务。

server 治理

show servers state [<backend>]

set server <backend>/<server> addr <ip4 or ip6 address>
set server <backend>/<server> agent [up | down]
set server <backend>/<server> health [up | stopping | down]
set server <backend>/<server> state [ready | drain | maint]
set server <backend>/<server> weight <weight>[%]
权重治理
get weight <backend>/<server>
set server <backend>/<server> weight <weight>[%]
退出移动版