【问题标题】:Multiple datacenter replication and local quorum?多数据中心复制和本地仲裁?
【发布时间】:2017-11-24 03:57:26
【问题描述】:

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

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

能够跨数据中心进行复制是非常酷的功能,但如果我在其中一个数据中心停机时丢失了整个集群,至少对我而言,这将毁掉整个好主意。

【问题讨论】:

    标签: cockroachdb


    【解决方案1】:

    CockroachDB 需要大部分 副本才能完全运行,这意味着> half,而不是>= half。为了在失去完整的数据中心或区域后幸存下来,您必须拥有 三个 DC/区域,而不是两个。尝试在三个区域中的每个区域中运行两个节点,而不是在两个区域中运行三个节点。

    是否有可能让这 2 个数据中心与他们的本地 quorum 2/3 一起工作

    不适用于单个表(因为如果每个数据中心都能够相互隔离,就无法保证一致性)。您已将数据配置为在所有六个副本之间复制,这意味着需要四个副本来建立仲裁。如果您希望每个数据中心能够独立于其他数据中心运行,则需要两个单独的表,每个表都配置为位于其中一个数据中心内。

    【讨论】:

    • 公式为(n - 1)/2,其中n为节点数。只要数字为 0 或更高,集群就会存活。而且,数字越高越好!
    【解决方案2】:

    感谢您的回答,只是为了澄清一些事情。但看起来你明白了我的意思和我想要完成的事情。 但据我了解,如果一个 DC 出现故障,我是否在 2 个不同的 DC 中有 2x3 节点。我有 3 个活动节点,我需要至少 4 个。 N/2 +1。 因此,如果我有 3x3,我可能会失去一个 DC,因为如果我有 2 个 DC,我将拥有 quorum。 最后一个问题,如果我没有将复制设置为 9,如果我在一个 DC 中丢失了 3 个节点,那么某些范围将不可用,对吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 2015-11-18
      • 2023-02-01
      • 1970-01-01
      相关资源
      最近更新 更多