我正在运行 HAProxy 以在 3 个 mysql galera 节点之间分散负载。不幸的是,HAProxy 显示 node2 永久离线,而其他节点工作正常。配置看起来不错,用户名、密码、端口一切都正常。我找不到原因。
这是 HAProxy 配置的相关部分:
listen mysql-galera-cluster
bind 10.0.0.10:3306
mode tcp
option mysql-check user haproxy_check
balance roundrobin
source 10.0.0.10
server db1 10.0.0.101:3307 check
server db2 10.0.0.102:3307 check
server db3 10.0.0.103:3307 check
在 db3 上我确实在 mysql.log 中得到了以下条目:
151111 17:48:06 1518 Connect [email protected] on
1518 Quit
在 db2 上没有这样的条目。但是日志可以工作,如果我尝试手动登录 ( mysql -h 10.0.0.102:3307 -u root -p
),我得到:
151111 17:30:48 342 Connect root@node1 on
342 Connect Access denied for user 'root'@'node1' (using password: YES)
那么为什么 HAProxy 不尝试检查 10.0.0.102?我尝试使用 10.0.0.103 进行同样的操作,结果完美。
提前感谢您对此提供的任何帮助!
答案1
我解决了这个问题。这与 HAProxy 配置无关,而是 keepalived 配置错误。db2 上配置了一个备份 keepalived,其中 eth0 配置为 10.0.0.10,而不是 eth1。更改此设置可修复此问题。
答案2
尝试增加两次连续健康检查之间的间隔。
例如:5s
server db1 10.0.0.101:3307 check inter 5s
server db2 10.0.0.102:3307 check inter 5s
server db3 10.0.0.103:3307 check inter 5s