【问题标题】:2 and 3 node Cassandra cluster setup2 和 3 节点 Cassandra 集群设置
【发布时间】:2017-12-06 02:06:26
【问题描述】:

我有 2 个问题。

1- 我需要 2 个节点集群。如果 1 个节点消失,我必须读写。
我想我需要= 复制因子:2 一致性:1
但这当然不应该是任何数据的丢失。

2- 我需要 3 个节点的集群,并且节点可能会随着时间的推移而增加。我应该能够使用此设置添加更多节点。
我想我需要= 复制因子:3 一致性:2

问题是:我的配置正确吗?

感谢您的回答。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    tldr;使用 3 节点集群进行写入/读取仲裁。

    请记住:Write Consistency + Read Consistency > Replication factor 以确保您的数据是一致的。

    您也可以同时使用 3 节点集群。或者,在您的第一个设置中(2 个节点)与 1 个节点“集群”相同。因为您要么写入 ALL,要么读取不一致。

    设置 1:

    对于 RF 2 中的设置 1,您需要:

    • Write(2) + Read(1) 如果某个节点出现故障,您将无法再写入集群。
    • Read(2) + write(1) 如果某个节点出现故障,您将无法再从集群中读取数据并且您丢失了数据。
    • Write(2) + Read(2) 与 3 节点集群相同的努力。为什么是 2?

    这些都不是理想的,2 节点集群相对于 1 节点“集群”的唯一优势是,如果您正在向所有节点写入数据,则至少在节点死亡时不会丢失数据。

    设置 2:

    理想情况下,您使用法定人数,否则您更有可能遭受中断。

    • Write(2) + Read(2) > RF Quorum(选项 1)使 1 个节点死亡,您的集群正常运行。
    • Write(3) + Read(1) > RF Write 3 允许您仅从 1 个节点读取数据,如果节点断开连接,则会以写入失败为代价来加快读取速度。
    • Write(1) + Read(3) > RF Read 3 如果节点出现故障,以丢失数据为代价加快写入速度。

    【讨论】:

      【解决方案2】:
      1. 您应该记住,您的每台服务器都将保存 100% 的数据。因此,就速度而言,您可能不会获得太多收益。否则,读取和写入的 CL 均为 1 不会导致数据丢失。另外,不要忘记提示,如果有 1 个节点已关闭并启动它。

      2. 对于这个,您也可以使用 QUORUM。这意味着一半的副本加 1 应该响应该操作。

      另外,我建议阅读Configuring data consistencyReplication, High Availability and Consistency in Cassandra

      【讨论】: