我有一个多DC(AWS区域)Cassandra集群。客户端程序连接到具有4个节点且RF = 2的区域之一。但是,当该DC /区域中只有一个节点关闭时,客户端会不断收到此错误:
(com.datastax.driver.core.exceptions.UnavailableException:没有足够的副本可用于一致性LOCAL_QUORUM的查询(需要2个但只有1个存活))
以下是更多详情:
我很难理解发生了什么:本地环应该有完整的数据副本。 RF = 2应该给我足够的缓冲以防止一个节点向下。出了什么问题?
答案 0 :(得分:3)
4个节点,RF = 2
这意味着每个数据都在群集中的2个节点上。
带有RF 2仲裁的实际上是2个节点。因此,如果一个节点出现故障 正如你所描述的那样,在大约50%的时间内会被当地的法定人数错过。
RF是群集中相同数据的副本数,而不是您可以丢失的节点数。
问题在于法定人数,如果您使用一致性级别1,则可以容忍一个节点。
另请看这个页面:
https://www.ecyrd.com/cassandracalculator/
如果不使用本地仲裁,客户端将转到其他数据中心获取数据(使用TWO,THREE等)