我正在使用 HAProxy 为 LDAP 服务器执行自动故障转移,但我不希望自动故障恢复。
场景是我有 2 个节点,s1 和 s2。我希望所有流量都流向 s1,除非它发生故障;当它发生故障时,我希望所有流量都流向 s2。当 s1 恢复正常时,我不想自动将流量路由回它,因为当 s2 处于活动状态时,会在其上创建一些条目。我希望确保在再次激活 s1 之前已同步所有数据。
我正在像这样配置 HAProxy:
backend bk_app
stick-table type ip size 1 nopurge
stick on dst
option httpchk
server s1 10.37.226.118:80 check
server s2 10.37.226.113:80 check backup
这似乎有效,即使 s1 再次恢复正常,连接仍继续转到 s2。
我的问题是 - 如何从命令行清除 stick-table,换句话说,如何将流量重定向回 s1?
我看到一些建议说,如果我强制 s2 发生故障,HAProxy 会将流量重定向回 s1。这似乎有效,但是当 s2 恢复正常时,HAProxy 会再次将流量重定向回 s2,换句话说,stick-table 仍然有效。
我看到一些建议说我只需要重新启动 HAProxy,这样就可以完美地工作,但这似乎是核选项!是否有某种命令行选项可以清除 stick-table?
答案1
您可以使用套接字命令清除表,即 echo "clear table Abuse key 192.168.64.12" | socat unix-connect:/var/run/haproxy.stat stdio
文档在这里: http://haproxy.tech-notes.net/9-2-unix-socket-commands/