在 2 节点 cassandra 集群中,如果 RF=1 并且一个节点关闭,我可以用 CL=1 写入但无法读取

In 2 node cassandra cluster if RF=1 and one node is down, I can write with CL=1 but can't read

我是 cassandra 的新手。

我有一个包含两个节点的集群。我已将复制因子设置为 1。现在,如果一个节点出现故障,我可以在 Consistency = ONE 的情况下无误地插入数据。插入后,如果我尝试进行相同操作,则会出现错误

Unavailable: code=1000 [Unavailable exception] message="Cannot achieve consistency level ONE" info={'required_replicas': 1, 'alive_replicas': 0, 'consistency': 'ONE'}

为什么cassandra没有从协调器节点读取数据?如果一个节点是 UP 那么 alive_replicas 应该是 1,不是吗?

我正在使用cqlsh客户端。

复制因子为1表示每条数据只存在一次(不是增加的副本数,而是总副本数)。拥有一个包含两个节点且 RF=1 的集群,大约 50% 的数据将位于节点 1 上,另一半将驻留在节点 2 上。

您可以使用命令验证这一点(检查 Owns 列下的百分比)

nodetool status your_keyspace_name

现在,如果您的一个节点出现故障,则只能访问存储在活动节点上的那些密钥。这适用于读取和写入。因此,影响活节点的操作将成功,而影响死节点的操作将失败。您可以使用命令

检查哪个节点负责任何给定的分区键
nodetool getendpoints your_keyspace your_table your_key

所以回答你的问题,我想成功的写入影响了活动节点,而失败的读取影响了已关闭的节点。