我已经安装了 haproxy 2.6.6、socat 1.7.4.1,并且有一个可运行的 Exchange 负载均衡器。我希望能够关闭某个节点进行维护,但尝试使用 socat 执行此操作但没有成功。
在我的 haproxy.cfg 全局部分中我有:
stats socket /run/haproxy-master.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
当我使用此命令时
echo "disable server exch01" | sudo socat stdio unix-connect:/run/haproxy-master.sock
我明白了
unknown command, but maybe one of the following ones is a better match:
show cli level,
show cli sockets,
show proc,
show version,
help,
prompt,
quit
通过发送show cli level
它返回管理员
如果我使用 sudo 以 root 身份运行,我会得到更多命令,例如
@master,
@!,
@,
operator,
reload,
user,
prompt
但是我错过了禁用服务器等
所以它看起来像是一个权限问题,并且由于我是root,它可能与haproxy中统计套接字的启动有关?
我已经尝试了一切
答案1
我没有使用 Ubuntu 上的 sudo update install haproxy 来安装 haproxy,而是下载了最新版本的 haproxy(当时是 2.6.6),然后手动安装。这是一个糟糕的决定
该版本没有安装socat所需的/run/haproxy/admin.sock。
我重新开始并从 Ubuntu 安装,并且一切都正常运行。
可能是可下载版本中缺少一些库或我错过了一些先决条件任务。