我有一个MariaDB Galera星系团。如果某些节点失败,我不能盲目地重新启动它们,我必须首先确定一个好的wsrep_cluster_address。
如果我可以在一个健康的节点上保留一个保持不变的虚拟IP,我可以在其他节点上使用这个IP作为wsrep_cluster_address吗?因此,在节点失败的情况下,连接节点总是有一个正确的wsrep_cluster_address?或者是否有任何其他解决方案可以实现自动重新连接?
我觉得只要至少有一个健康的节点(或Primary Component?),就可以保持集群正常运行,并自动重新加入节点。向上。
(注意:我知道不需要指定wsrep上所有主机的Galera集群._集群_地址中的答案,但不幸的是,组播不是一种选择。)
发布于 2016-10-05 17:52:54
您可以在wsrep_cluster_address中放置多个地址,例如,gcomm://10.1.1.1,10.1.1.2,10.1.1.3,而Galera集群将智能地检测到它。
我使用Percona XtraDB集群(也基于Galera集群)在生产环境中运行服务器(> 10)集群:
wsrep_cluster_address中。wsrep_cluster_address中。在四年内,这些集群出现了电源故障(所有三台服务器)、硬件故障、软件缺陷,而且它们运行得很好。
发布于 2016-10-13 21:14:39
我试过了,是的,似乎很管用。
每个节点的eth0上有一个动态IP。
节点的主机名为:mari0、mari1、mari2,这些名称是可解析的。(可能不需要,但.)
所有3个节点上的wsrep_cluster_address='gcomm://1.2.3.4'。(注意:第一个节点必须使用wsrep_cluster_address='gcomm://'启动,集群运行后,wsrep_cluster_address`应该更改为vIP。)
节点上保留的vIP。
! Configuration File for keepalived
vrrp_script chk_mysqld {
script "pidof mysqld"
interval 2
}
vrrp_instance VI_1 {
state [MASTER|BACKUP]
interface eth0
virtual_router_id 52
priority [PRIO]
advert_int 1
authentication {
auth_type AH
auth_pass [password]
}
virtual_ipaddress {
1.2.3.4
}
track_script {
chk_mysqld
}
}(不是最好的,而是有效的)
在第一个节点启动后,vIP被放置在它上。之后,我启动了剩下的2个节点。
节点加入集群,keepaliveds进入BACKUP状态。
service mysql stop将节点从集群中删除,service mysql start将节点添加到集群中。
我还没有测试以这种方式向集群添加第4和第5节点,但它也应该可以工作。
https://dba.stackexchange.com/questions/151303
复制相似问题