我在3节点MariaDB集群前使用HaProxy 1.5.0。 HaProxy使用自定义查询/ xinet服务检查每个数据库节点是否具有同步状态。 当由于某种原因检查失败(例如节点被desynced或成为捐赠者)时,haproxy中相应的后端被标记为down,但我仍然可以在haproxy统计控制台中看到它上面的活动会话,以及DB进程列表中的查询(这是可能的,因为MariaDB服务仍然启动并接受查询,即使群集状态未同步)。 我想知道为什么HaProxy在后端关闭时不会关闭活动连接,并将它们发送到其他活动后端? 当MariaDB服务在给定节点上完全停止时(无可能会话),我得到了这种预期的行为。 是否有特定的选项允许这个?选项redispatch看起来很有希望但它适用于连接关闭时(不是我的情况)并且它已经在我的配置中处于活动状态。 谢谢你的帮助。
答案 0 :(得分:7)
以下是我们用于获得相同行为的设置:
default-server port 9200 [snip] on-marked-down shutdown-sessions
on-marked-down shutdown-sessions
选项,告诉HAProxy在标记为关闭时关闭与后端服务器的所有连接。
当然,如果您不使用默认服务器指令,则可以将其添加到每个服务器:)