我正在运行 2 台专用服务器,每台服务器上都运行着 HAProxy keepalived、MySQL(主/主服务器)和 Apache。
Apache 的负载平衡已经运行,但我无法运行 MySQL LB。
HAProxy 统计数据显示:DB2 关闭“haproxy_check@db2 访问被拒绝”
从一个教程中我了解到我必须准备mysql:
mysql -u root -p -e "INSERT INTO mysql.user (Host,User) values ('10.0.0.10','haproxy_check'); FLUSH PRIVILEGES;"
我的 haproxy 配置如下:
listen mysql-cluster
bind 10.0.0.10:3306
mode tcp
option mysql-check user haproxy_check
balance roundrobin
server db1 10.0.0.120:3307 check
server db2 10.0.0.130:3307 check
为什么 HAProxy 尝试从 10.0.0.130 而不是其 VIP 10.0.0.10 进行连接?
我当然可以授予 10.0.0.130 的访问权限,但这会破坏故障转移的想法。顺便说一句,这是可行的。
答案1
根据 HAProxy手动的,您可以使用source
关键字强制backend
或listen
阻止在连接服务器时使用特定的 IP。
你的listen
区块看起来会像这样:
listen mysql-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.120:3307 check
server db2 10.0.0.130:3307 check