如何使用Amazon AutoScaling设置Percona Xtradb群集?

时间:2014-04-22 09:14:25

标签: amazon-ec2 percona xtradb

我想使用AutoScaling组在ec2中创建3个Percona Xtradb +应用程序服务器的集群,这样如果某个服务器由于某种原因失败,它可以关闭,然后ASG重新启动服务器获取所有当前数据其他2个工作服务器。

为了实现这个,我做了3个实例(A,B和C),并在初始启动实例A上测试实例B和C的端口4567,如果在其中任何一个端口打开,Xtradb启动时正确的wsrep_cluster设置,从正在运行的实例中获取SST。

如果该端口在两个实例上都关闭,则A以wsrep_cluster=gcomm://开头,因此它成为集群的“原点”,认为实例B和C根本就没有启动过,等待它们稍后连接。 / p>

问题是,如果实例B和C正在运行,但A在启动时无法连接到它们,那么“裂脑”将会发生。我该如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

如果在A启动时A无法与B和C对话,则A将进行引导。您真的不会分裂大脑。您将有两个单独的群集。您将在B / C上拥有现有数据,而在A上则没有数据。

您可能需要服务发现(例如Consul或etcd),才能像您要实现的那样以自动化的方式充当集群状态的“事实来源”。在启动每个节点时,请与Consul联系,并查找代表任何节点的密钥对。如果不存在,请进行引导,然后向发现服务注册。每个节点一旦联机,都应该定期更新srv光盘,说“我还在这里”。

当所有节点都关闭并且ASG必须重建所有节点时,就会出现真正的问题。在这种情况下,数据来自哪里?不会有。这是这种自动化配置的最大缺点之一。最好对节点何时脱机进行适当的监视,以便您采取更明智的操作。