【发布时间】:2017-07-31 18:54:08
【问题描述】:
我了解到 Cassandra 试图跨不同的机架复制数据 - 不同的 DC 来处理故障转移...... 例如:假设我总共有 8 个节点集群,跨越 2 个不同的 DC,每个 DC 有 2 个机架。
节点 1 - DC1 机架 1 |节点 2 - DC1 机架 1 |节点 3 - DC1 机架 2 |节点 4 - DC1 机架 2 |节点 5 - DC2 机架 1 |节点 6 - DC2 机架 1 |节点 7 - DC2 机架 2 | 节点 8 - DC2 机架 2
现在,如果我的 RF 为 3,那么在写一行时, Cassandra 将在负责第 1 行令牌范围的节点(假设在本例中为节点 1)上存储该行的第一个副本。 所以第一个副本存储在假设:节点 1 在 DC 1,RACK 1 下 现在 Cassandra 需要再存储 2 个副本才能满足 RF =3 条件。
1) 假设要处理 Rack 故障并让本地读取它将第二个副本存储在同一 DC 但不同 RACK 的某个节点中。 因此,第二个副本将存储在 DC 1、RACK 2 中的节点 3/节点 4 中。 我的问题是 Cassandra 会选择 Node 3 还是 Node 4
2)为了处理 DC 故障,它将第 3 个副本存储在其他 DC(即 DC2)中。 现在有2个选项: a) 它必须在 DC2 中的 Rack 1 和 Rack 2 之间选择一个机架。 - 我的第二个问题是它在同一数据中心的多个机架中选择的依据/逻辑是什么。 b) 让我们想象一下,如果它在 DC 2 中选择机架 1,那么它必须在节点 5 或节点 6 之间进行选择以进行复制。 - 我的第三个问题是 Cassandra 在 Same Rack 中选择节点的依据是什么? (与第一个问题基本相同)
【问题讨论】:
-
最好在serverfault.com上提问
标签: cassandra-3.0