带有 Roundrobin 的 HAProxy 仅在 3 个 MySQL 服务器中的 2 个上工作,为什么?

带有 Roundrobin 的 HAProxy 仅在 3 个 MySQL 服务器中的 2 个上工作,为什么?

再会。

我正在跟进本文配置 HAProxy 以在 3 个 MySQL 服务器之间进行循环平衡(db1、db2、db3)在 MariaDB Galera 集群中(工作完美)

但是我有一个问题。在本教程中有一个“测试负载平衡和故障转移”区域,我必须在其中执行命令mysql -h 127.0.0.1 -u haproxy_root -p -e "show variables like 'server_id'"才能看到相同的结果以及服务器名称。多次执行相同的命令将显示循环在db1和之间跳跃db2,反之亦然......它永远不会传递到db3。我正在到处阅读,循环应该在所有服务器之间跳转,但就我而言,它只能在 db1 和 db2 之间工作,为什么不在 db3 中工作?

检查我的 HAProxy 配置:

global
    log 127.0.0.1 local0 notice
    user haproxy
    group haproxy

defaults
    log global
    retries 2
    timeout connect 3000
    timeout server 5000
    timeout client 5000

listen mysql-cluster
    bind 0.0.0.0:3306
    mode tcp
    option mysql-check user haproxy_check
    balance roundrobin
    server db1 172.28.109.10:3306 check
    server db2 172.28.109.11:3306 check
    server db3 172.28.109.12:3306 check

listen 127.0.0.1:8080
    mode http
    stats enable
    stats uri /
    stats realm Strictly\ Private
    stats auth monitor_user:password

这 3 个服务器在我的 MariaDB Galera Cluster 配置文件中正确声明,并且它们之间的行为完美。在这里检查其中的一部分:

wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://171.28.109.10, 171.28.109.11, 171.28.109.12"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='171.28.109.10'
wsrep_node_name='db1'
wsrep_sst_method=rsync
wsrep_sst_auth="user:password"

我缺少什么?请帮我。

提前致谢。

相关内容