我想在部署应用程序期间远程控制我的 HAproxy。例如,在停止“app-server1”上的应用程序之前,我想指示 HA-proxy禁用后端服务器“app-server1”。当应用程序再次运行时,我想发出使能够命令。
使用“stats socket ...”,我创建 UNIX 套接字或 TCP 套接字。对于远程访问,它必须是 TCP 套接字。然而,这显然会打开一个漏洞,而我想要缓解这个漏洞。
我可以限制对管理套接字的访问吗,例如通过客户端 IP 列表、SSL 或其他?
由于我在搜索时找到的关于这个主题的信息量有限,我想知道是否有另一种适合我的用例的推荐远程操作方式?
我确实为此使用了脚本,但允许脚本通过 SSH 访问运行 HA-proxy 的服务器并不是一个选项。
答案1
定义一个指向 localhost 上的统计套接字的后端服务器。然后将统计套接字设置为仅绑定在 127.0.0.1 上。最后,将所需的 ACL 添加到前端定义。
统计套接字现在被限制仅接受来自本地主机的连接,而前端代理负责处理远程客户端。
global
daemon
stats socket 127.0.0.1:1999
...
frontend stats-frontend
bind *:2000
default_backend stats-backend
acl ...
acl ...
backend stats-backend
mode tcp
server stats-localhost localhost:1999