![带有 Roundrobin 的 HAProxy 仅在 3 个 MySQL 服务器中的 2 个上工作,为什么?](https://linux22.com/image/63042/%E5%B8%A6%E6%9C%89%20Roundrobin%20%E7%9A%84%20HAProxy%20%E4%BB%85%E5%9C%A8%203%20%E4%B8%AA%20MySQL%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%E7%9A%84%202%20%E4%B8%AA%E4%B8%8A%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
再会。
我正在跟进本文配置 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"
我缺少什么?请帮我。
提前致谢。