【发布时间】:2015-03-10 04:11:53
【问题描述】:
周末,我们开始在 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)
【问题讨论】:
-
请详细描述拓扑。