gpt4 book ai didi

java - Cassandra:单节点集群中没有足够的副本错误

转载 作者:行者123 更新时间:2023-12-01 14:08:39 33 4
gpt4 key购买 nike

上周末,我们开始在 Cassandra 中看到错误。本质上,提示它无法将足够的节点聚集在一起以实现 SERIAL 一致性。

这似乎是 AWS vpn 跨区域的问题。因此,为简化起见,我删除了另一个节点(当时只有两个节点)。我通过从最后一个剩余节点的 cassandra.yaml 中删除种子来做到这一点:

seed_provider:
...
- seeds: "single node ip"

我也跑了 nodetool removenode在旧节点上(显示死状态)。

所以拓扑非常简单。应用程序是一个 Java 应用程序,它通过 Java API 连接到 Cassandra 节点。

以下是我现在看到的错误:
Caused by: com.datastax.driver.core.exceptions.UnavailableException: Not enough replica available for query at consistency QUORUM (2 required but only 1 alive)
at com.datastax.driver.core.Responses$Error$1.decode(Responses.java:45)
at com.datastax.driver.core.Responses$Error$1.decode(Responses.java:34)
at com.datastax.driver.core.Message$ProtocolDecoder.decode(Message.java:182)
at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:66)
... 21 more

这是与之前完全相同的错误,除了节点我们有 QUORUM我们在哪里 SERIAL前。

我只是尝试将复制因子设置为 1:
ALTER KEYSPACE my_keyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
并重新启动 cassandra。没变。

也刚跑 nodetool cleanup keyspace_name基于下面的答案。也没有变化。

为了清楚起见,拓扑是这样的:

Java 应用程序 -> 单个 Cassandra 节点

还在看: Not enough replica available for query at consistency QUORUM (2 required but only 1 alive)

最佳答案

你提到你删除了一个节点。鉴于您正在使用 QUORUM 并且它需要 2 个副本,我们可以假设您的复制因子为 2 或 3。您现在有多少个节点,您的复制因子是多少?根据您的问题,我认为您表示还剩 1 个,但我不确定。如果您只有 1 个节点并且您的 RF 是 2 或 3,您将永远无法满足仲裁一致性。

您可以 alter your replication factor到 1 来解决这个问题,即:

ALTER KEYSPACE keyspace_name WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };

如果你这样做,你还应该运行 nodetool cleanup keyspace_name在每个节点上获取以前的复制数据。

另一种选择是添加足够的节点,以帮助您通过复制因子满足 QUORUM 一致性级别。

关于java - Cassandra:单节点集群中没有足够的副本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28956038/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com