HAProxy-后端MySQL服务器的运行状况检查和代理检查

时间:2020-06-23 06:53:00

标签: mysql haproxy

我有两个MySQL服务器,并且复制是双向配置的。与数据库的连接由HAProxy处理。任何时候,一个mysql服务器将成为主要服务器(接受所有连接),而另一个将成为备用服务器。截至目前,haproxy.cfg中的后端池位于以下

 # define frontend and backend servers
frontend  mysql-in
    bind *:3306
    default_backend    mysqlservers

 

backend mysqlservers
    mode               tcp
    server             mysqldb_01 X.X.X.1:3306 check 
    server             mysqldb_02 X.X.X.X.2:3306 check backup

但是此检查不知道从属延迟。我想让haproxy从属延迟知道,这样我就不会处于haproxy将数据库连接路由到我的备用节点的情况,该备用节点仍然需要在中继日志中应用一些事务。

偶然发现了这个博客,该博客解释了我们如何利用代理检查来使haproxy复制延迟有效。 https://blog.pythian.com/haproxy-mysql-lag-awareness-via-systemd/

listen mysql-secondary-slaves
bind :53307
option httpchk
option tcplog
mode tcp
server po-slave1 X.X.X.1:53306 check port 9876 inter 12000 rise 3 fall 3 on-marked-down shutdown-sessions
server po-slave1 X.X.X.2:53306 check port 9876 inter 12000 rise 3 fall 3 on-marked-down shutdown-sessions

现在,通过这种方法,haproxy通过运行在我的mysql主机中的代理检查mysql的运行状况和复制滞后。

我担心的是,如果数据库主机中作为服务运行的代理由于某种原因崩溃或关闭,该怎么办?我的代理人现在认为该主机中的MySQL服务不可用。

现在问我一个问题:

有没有办法对我的后端mysql服务器进行运行状况检查和代理检查,并且仅当两个条件都满足时,才让haproxy标记服务器的启动或关闭吗?

谢谢

0 个答案:

没有答案