HAProxy 未连接到 MariaDB Galera 集群后端
HAProxy doesn't connect to MariaDB Galera cluster backend
我是 MariaDB galera 集群负载平衡的新手,我正在尝试使用 HAProxy 进行负载平衡。我已经设置了 MariaDB Galera 集群并且运行良好。
在 Haproxy 中,我为数据库集群创建了一个 VIP,如果我查看 HAProxy 统计页面,它会显示 VIP,并且所有三个节点都是绿色的。这就是我的配置方式:
#---------------------------------------------------------------------
# frontend_db_domain.com
#---------------------------------------------------------------------
frontend db_domain.com
bind ip:3306
mode tcp
option mysql-check user haproxy_check
default_backend back_db_domain.com
#---------------------------------------------------------------------
# backend_db_domain.com
#---------------------------------------------------------------------
backend back_db_domain.com
balance roundrobin
server db01.domain.com ip:3306 check
server db02.domain.com ip:3306 check
server db03.domain.com ip:3306 check
我配置了一个 wordpress 站点来使用 db.domain.com 的 VIP 地址,wordpress 显示 Error establishing a database connection
。如果我使用直接访问节点的数据库主机名或 ip,一切正常。
这是 HAProxy 日志中显示的内容:
Mar 24 04:07:27 localhost haproxy[22096]: 1.2.3.4:56022 [24/Mar/2022:04:07:16.987] domain.com~ back_domain.com/nginx01.domain.com 68/0/1/10095/10164 500 2842 - - ---- 3/1/0/0/0 0/0 "GET /webdesigns/website1/ HTTP/1.1"
这是 nginx 日志:
45.77.206.174 - - [24/Mar/2022:04:07:27 +0000] "GET /webdesigns/website1/ HTTP/1.1" 500 2539 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0" "1.2.3.4"
没有防火墙可以阻止所有这些主机之间的任何内容。它们都可以相互连接。这是数据库节点的配置方式:
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
#bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="test_cluster"
wsrep_cluster_address="gcomm://10.1.96.12,10.1.96.13,10.1.96.14"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="10.1.96.14"
wsrep_node_name="db03"
不确定我遗漏了什么,但我认为我在 HAProxy 方面配置错误但不确定它可能是什么。我还有其他 VIP,但它们用于 Web 服务器和类似的东西,一切正常。这是我遇到问题的第一个 VIP。我将不胜感激任何帮助。
谢谢!
cli ip a 检查你的 vip 是否在 haproxy 主机上工作\
所以,这就是我必须做的来解决这个问题。
从周围阅读来看,MariaDB 集群似乎要在 HAProxy 中工作,您必须在 TCP 模式下这样做。我拥有的原始 haproxy 对处于 HTTP 模式,因此 MariaDB 集群无法正常工作。
我不得不构建一个新的 haproxy 对并将其配置为 TCP 模式,并且集群按预期在 HAProxy 中工作。不幸的是,您似乎不能在 haproxy 中混合模式。
如果有人找到混合模式的方法,或者如果它出现在未来的版本中,那就太棒了。
谢谢!
我是 MariaDB galera 集群负载平衡的新手,我正在尝试使用 HAProxy 进行负载平衡。我已经设置了 MariaDB Galera 集群并且运行良好。
在 Haproxy 中,我为数据库集群创建了一个 VIP,如果我查看 HAProxy 统计页面,它会显示 VIP,并且所有三个节点都是绿色的。这就是我的配置方式:
#---------------------------------------------------------------------
# frontend_db_domain.com
#---------------------------------------------------------------------
frontend db_domain.com
bind ip:3306
mode tcp
option mysql-check user haproxy_check
default_backend back_db_domain.com
#---------------------------------------------------------------------
# backend_db_domain.com
#---------------------------------------------------------------------
backend back_db_domain.com
balance roundrobin
server db01.domain.com ip:3306 check
server db02.domain.com ip:3306 check
server db03.domain.com ip:3306 check
我配置了一个 wordpress 站点来使用 db.domain.com 的 VIP 地址,wordpress 显示 Error establishing a database connection
。如果我使用直接访问节点的数据库主机名或 ip,一切正常。
这是 HAProxy 日志中显示的内容:
Mar 24 04:07:27 localhost haproxy[22096]: 1.2.3.4:56022 [24/Mar/2022:04:07:16.987] domain.com~ back_domain.com/nginx01.domain.com 68/0/1/10095/10164 500 2842 - - ---- 3/1/0/0/0 0/0 "GET /webdesigns/website1/ HTTP/1.1"
这是 nginx 日志:
45.77.206.174 - - [24/Mar/2022:04:07:27 +0000] "GET /webdesigns/website1/ HTTP/1.1" 500 2539 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0" "1.2.3.4"
没有防火墙可以阻止所有这些主机之间的任何内容。它们都可以相互连接。这是数据库节点的配置方式:
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
#bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="test_cluster"
wsrep_cluster_address="gcomm://10.1.96.12,10.1.96.13,10.1.96.14"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="10.1.96.14"
wsrep_node_name="db03"
不确定我遗漏了什么,但我认为我在 HAProxy 方面配置错误但不确定它可能是什么。我还有其他 VIP,但它们用于 Web 服务器和类似的东西,一切正常。这是我遇到问题的第一个 VIP。我将不胜感激任何帮助。
谢谢!
cli ip a 检查你的 vip 是否在 haproxy 主机上工作\
所以,这就是我必须做的来解决这个问题。
从周围阅读来看,MariaDB 集群似乎要在 HAProxy 中工作,您必须在 TCP 模式下这样做。我拥有的原始 haproxy 对处于 HTTP 模式,因此 MariaDB 集群无法正常工作。
我不得不构建一个新的 haproxy 对并将其配置为 TCP 模式,并且集群按预期在 HAProxy 中工作。不幸的是,您似乎不能在 haproxy 中混合模式。
如果有人找到混合模式的方法,或者如果它出现在未来的版本中,那就太棒了。
谢谢!