我有一个具有 4 个节点的 galera 集群。一台服务器(主服务器)中有 2 个,另一台服务器(从属服务器)中有 2 个。
集群通过“Max Scale”进行控制。
所有设置看起来都是正确的,因为复制工作正常,SHOW STATUS LIKE 'wsrep_cluster_size'
报告所有节点的正确大小,关闭主节点并成功转移到下一个节点等。
maxscale 服务器状态报告:(为简单起见,进行了总结)
Master, Synced, Running | Slave, Synced, Running | Slave, Synced, Running
如果我在“server-master”中同时执行停止两个容器,则主数据库将成功分配给“slave”中的第一个容器。
maxscale 服务器状态报告:
Down | Down | Master, Synced, Running | Slave, Synced, Running
问题是:如果我关闭服务器主控,
maxscale 服务器状态报告:
Down, Down, Running, Running
尝试连接集群时,连接失败。一段时间后,所有节点均报告Down
。
我不明白为什么关闭服务器不能按预期工作。
更新
我发现如果我关闭“server-master”中的第二个节点,然后关闭服务器,“master”被成功分配给“server-slave”,然而几分钟后所有节点都会关闭。:/
Servers: Ubuntu Servers 16.04 x64
MaxScale version: 2.0.5
LXD version: 2.13
Galera version (3): 25.3.20-xenial
Guide followed: https://www.digitalocean.com/community/tutorials/how-to-configure-a-galera-cluster-with-mariadb-10-1-on-ubuntu-16-04-servers
答案1
它与 galera 集群行为相关。
- 你关闭 1 个节点上的 mysql,在关闭该节点上的 mysql 之前,发送离开请求并正常离开集群。你的集群检测到 2 个节点已离开,并且仍可使用 2 个节点。
- 您关闭主机,mysql 被杀死,当然无法发送离开请求。集群检测到 2 个节点已死,只剩下 2 个节点,<= 集群总大小的 50%。集群处于故障状态,无法接受连接。
因此,您无法从客户端连接到 maxscale ---> 集群。
參考文獻:http://galeracluster.com/documentation-webpages/weightedquorum.html