You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置跨两台服务器的4个Docker化Galera集群节点?

跨两台服务器各部署2个Docker化Galera节点的参数配置方案

场景前提

服务器A(servera.com)、服务器B(serverb.com)各运行2个MariaDB/Galera Docker容器,需组成统一集群:

  • 服务器A容器:mariadb-a1、mariadb-a2,分别将Galera默认端口(4567、4568、4569)映射到宿主机的4567/4568/4569和45670/45680/45690
  • 服务器B容器:mariadb-b1、mariadb-b2,分别映射端口到4567/4568/4569和45670/45680/45690
  • 两台服务器防火墙开放上述映射端口,确保跨服务器网络互通

核心参数配置逻辑

1. wsrep_node_address 统一设置

所有节点的该参数直接配置为自身Docker容器名称,比如mariadb-a1、mariadb-a2等。

  • 同服务器内的节点可通过Docker本地网络直接用容器名通信
  • 跨服务器节点通过宿主机端口映射访问对方容器,无需修改此参数

2. wsrep_cluster_address 分节点配置

集群初始化仅允许一个节点使用空地址,其余节点需指向集群内已启动的节点地址:

(1)集群初始化节点(服务器A的mariadb-a1)
wsrep_cluster_address = "gcomm://"
wsrep_cluster_name    = "galera-cluster-radius"
wsrep_node_name       = "mariadb-a1"
wsrep_node_address    = "mariadb-a1"

启动此节点完成集群初始化后,可将wsrep_cluster_address改为包含所有节点的地址(可选,不影响后续节点加入)。

(2)服务器A的第二个节点(mariadb-a2)
wsrep_cluster_address = "gcomm://mariadb-a1"
wsrep_cluster_name    = "galera-cluster-radius"
wsrep_node_name       = "mariadb-a2"
wsrep_node_address    = "mariadb-a2"

同服务器内直接用容器名连接已初始化的节点。

(3)服务器B的第一个节点(mariadb-b1)
wsrep_cluster_address = "gcomm://servera.com:4567"
wsrep_cluster_name    = "galera-cluster-radius"
wsrep_node_name       = "mariadb-b1"
wsrep_node_address    = "mariadb-b1"

跨服务器连接服务器A上mariadb-a1的宿主机映射端口,也可指定多个集群节点地址提升容错性,比如:

wsrep_cluster_address = "gcomm://servera.com:4567,servera.com:45670"
(4)服务器B的第二个节点(mariadb-b2)
wsrep_cluster_address = "gcomm://mariadb-b1"
wsrep_cluster_name    = "galera-cluster-radius"
wsrep_node_name       = "mariadb-b2"
wsrep_node_address    = "mariadb-b2"

同服务器内用容器名连接本地已加入集群的节点。


关键注意事项

  • 所有节点的wsrep_cluster_name必须完全一致,否则无法加入同一集群
  • 同一服务器的多个Galera节点必须映射不同的宿主机端口,避免端口冲突
  • 仅集群第一个启动的节点使用gcomm://空地址,其余节点必须指定集群内已存在的节点地址

内容的提问来源于stack exchange,提问作者Maxwell Chandler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 10:41:33