如何使用 Cassandra 复制因子 1 管理节点故障?

How to Manage Node Failure with Cassandra Replication Factor 1?

我有一个三节点 Cassandra (DSE) 集群,我不关心数据丢失,所以我将我的 RF 设置为 1。我想知道 Cassandra 如何响应 read/write 请求,如果节点出现故障(我现在的请求中有 CL=ALL)。

理想情况下,如果数据存在,我希望这些请求能够成功 - 仅在剩余的可用节点上,直到我替换死节点。这个键空间本质上是一个非常大的缓存;数据丢失我可以替换。

(免责声明:我是 ScyllaDB 员工)

假设您的分区键足够唯一,当使用 RF=1 时,您的 3 个节点中的每一个都包含 1/3 的数据。顺便说一句,在这种情况下,CL=ONE/ALL 基本上与您的数据只有 1 个副本且没有高可用性 (HA) 相同。

来自 2 个 up 节点的 "existing" 数据请求将会成功。尽管如此,当 3 个节点之一出现故障时,1/3 的客户端请求(针对现有数据)将不会成功,因为基本上 1/3 的数据不可用,直到故障节点出现(注意 nodetool repair 在使用 RF=1 时无关紧要),所以我想从快照恢复(如果有的话)是唯一的选择。

当节点关闭时,一旦您执行 nodetool decommission,令牌范围将在 2 个运行节点之间重新分配,但这仅适用于新的写入和读取。

您可以在此处阅读有关环形架构的更多信息: http://docs.scylladb.com/architecture/ringarchitecture/