多个数据中心复制和本地仲裁?

时间:2017-06-21 09:57:30

标签: cockroachdb

我从6个节点创建了一个集群。 Eu west1中有3个节点,EU west2中有3个节点 我为每组节点设置了位置,例如: - locality = region = europe,datacenter = west1 我还将副本设置为6,以便在每个节点上包含所有范围和所有数据。 如果数据中心之间的连接丢失整个集群发生故障,会发生什么? 我试图在其中一个数据中心中杀死3个节点,并且群集无法运行,因为大多数节点已关闭且仲裁小于4。 是否可以使2个数据中心与其本地仲裁2/3一起使用

我还玩了一些复制设置,如果我从6中杀死3个节点,有时群集是健康的,我能够写入群集。有时我只能从群集中读取。群集正在使用5个和3个节点的副本从6个网络中复制。仍然使用此付费,但如果有人可以给我更多信息将非常有帮助。

能够跨数据中心进行复制是一个非常酷的功能,但如果我丢失了整个群集,当其中一个数据中心发生故障时,至少对我来说毁了整个好主意。

2 个答案:

答案 0 :(得分:0)

CockroachDB要求多数的副本完全正常运行,这意味着> half,而不是>= half。为了避免丢失完整的数据中心或区域,您必须拥有三个 DC /区域,而不是两个。尝试在三个区域中的每个区域中运行两个节点,而不是在两个区域中运行三个节点。

  

是否可以使2个数据中心与其本地仲裁2/3

一起使用

不适用于单个表(因为如果每个数据中心能够独立于另一个数据中心,则无法保证一致性)。您已配置要在所有六个副本中复制的数据,这意味着需要四个副本才能创建法定数量。如果您希望每个数据中心能够独立于另一个数据中心运行,则需要两个单独的表,每个表都配置为位于其中一个数据中心内。

答案 1 :(得分:0)

感谢您的回答只是为了清楚一点。但看起来你得到了我的观点以及我想要完成的事情。 但据我所知,如果一个DC发生故障,我在2个不同的DC中有2x3节点。我有至少4个法定人数的3个活节点。 N / 2 +1。 因此,如果我有3x3,我可以丢失一个DC,因为如果我有2个DC现场,我将有一个法定人数。 最后一个问题,如果我没有将复制设置为9,如果我在一个DC中放松了3个节点某些范围将无法使用吗?