通过 HAProxy Xinetd 服务监控 MySQL 复制

通过 HAProxy Xinetd 服务监控 MySQL 复制

我已按照 Alex Williams 的教程(位于此处)设置了 MySQL 多主复制,并使用 HAProxy 作为负载均衡器; http://www.alexwilliams.ca/blog/2009/08/10/using-haproxy-for-mysql-failover-and-redundancy/

我正在使用此处找到的状态检查器; http://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/

以及在此处找到的复制检查器; http://forge.mysql.com/tools/tool.php?id=6

当我的 HAProxy 配置文件中有以下行时,Mysql 状态检查器工作正常:

server db02 192.168.15.119:3306 check port 9200 inter 1s weight 1 rise 1 fall 1

但是当我尝试用这一行测试检查复制脚本时:

server db02 192.168.15.119:3306 check port 9201 inter 1s weight 1 rise 1 fall 1

并尝试通过代理连接但失败了:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication  packet', system error: 0

当我从 HAProxy 机器 telnet 到该端口时,它工作正常:

# telnet 192.168.15.119 9201

Trying 192.168.15.119...
Connected to 192.168.15.119.
Escape character is '^]'.
Replication slave is running
Connection closed by foreign host.

有什么原因导致它无法工作,而我仍然可以通过 telnet 进行检查?这是 HAProxy 的限制吗?我认为不是,因为其他人似乎也使用过这种方法进行设置。这是配置问题还是权限问题?我很困惑,为什么其中一个可以正常工作,让我可以正常连接,而另一个却不行。

答案1

xinetd 运行的复制脚本应该返回 HTTP 200 或 503,这样 HAProxy 才能检测 MySQL 复制的健康状况。

相关内容