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

时间:2017-11-05 08:37:48

标签: cassandra datastax datastax-enterprise scylla

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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

您可以在此处详细了解环形架构: http://docs.scylladb.com/architecture/ringarchitecture/