同一台服务器上的 MySQL 与 HAProxy - 如何从 VIP 连接

同一台服务器上的 MySQL 与 HAProxy - 如何从 VIP 连接

我正在运行 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关键字强制backendlisten阻止在连接服务器时使用特定的 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

相关内容