HAProxy未连接到MariaDB加莱拉群集后端

i34xakig  于 2023-10-20  发布在  HAProxy
关注(0)|答案(3)|浏览(229)

我是MariaDB加莱拉集群负载平衡的新手,我正在尝试使用HAProxy来进行负载平衡。我已经设置了MariaDB加莱拉集群,它工作得很好。
在Haproxy中,我为DB集群创建了一个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站点使用VIP地址,即db.domain.com,WordPress显示Error establishing a database connection。如果我使用直接命中节点的db主机名或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,但他们的网络服务器和类似的东西,所有的工作正常。这是我第一次和VIP有过节我将感激任何和所有的帮助。
谢谢你,谢谢!

zf9nrax1

zf9nrax11#

所以,这就是我要做的来解决这个问题。
从阅读来看,似乎MariaDB集群要在HAProxy中工作,您必须在TCP模式下这样做。我拥有的原始haproxy对处于HTTP模式,因此MariaDB集群无法工作。
我必须构建一个新的haproxy对并将其配置为TCP模式,集群按预期在HAProxy中工作。不幸的是,似乎你不能在haproxy中混合模式。
如果有人找到了混合模式的方法,或者如果它出现在未来的版本中,那就太棒了。
谢谢你,谢谢!

oxf4rvwz

oxf4rvwz2#

对我来说,它有助于在前端和后端设置“模式tcp”:

#---------------------------------------------------------------------
# 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
  mode tcp
  server db01.domain.com ip:3306 check
  server db02.domain.com ip:3306 check
  server db03.domain.com ip:3306 check
ppcbkaq5

ppcbkaq53#

请检查您的vip是否在haproxy主机上工作\

相关问题