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

Amazon ec2 如何使用Amazon AutoScaling设置Percona Xtradb群集?,amazon-ec2,percona,xtradb,Amazon Ec2,Percona,Xtradb,我想使用自动缩放组在ec2中创建一个由3台Percona Xtradb+应用服务器组成的集群,这样,如果某台服务器因某种原因出现故障,它可以关闭,ASG将重新启动服务器,从其他2台工作服务器获取所有当前数据 为了实现这一点,我创建了3个实例(A、B和C),在初始启动时,实例A测试实例B和C的端口4567,如果其中任何一个端口打开,则使用适当的wsrep_cluster设置启动Xtradb,并从运行的实例获取SST 如果在两个实例上都关闭了该端口,那么A将以wsrep_cluster=gcomm:

我想使用自动缩放组在ec2中创建一个由3台Percona Xtradb+应用服务器组成的集群,这样,如果某台服务器因某种原因出现故障,它可以关闭,ASG将重新启动服务器,从其他2台工作服务器获取所有当前数据

为了实现这一点,我创建了3个实例(A、B和C),在初始启动时,实例A测试实例B和C的端口4567,如果其中任何一个端口打开,则使用适当的
wsrep_cluster
设置启动Xtradb,并从运行的实例获取SST

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


问题是,如果实例B和C正在运行,但A在启动时无法连接到它们,则会出现“大脑分裂”。我如何避免这种情况

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

您可能需要服务发现,比如concur或etcd,以自动化的方式作为集群状态的“真相来源”,就像您试图实现的那样。在每个节点启动时,请联系Consor并查找代表任何节点的密钥对。如果没有,请引导,然后向发现服务注册。每一个节点,一旦上线,应该有一个定期更新的srv光盘说:“我仍然在这里”

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