没有足够的副本可用于一致性 SERIAL 查询(需要 2 个,但只有 1 个有效)
Not enough replica available for query at consistency SERIAL (2 required but only 1 alive)
各位专家,
我有以下配置的 3 节点集群 (Cassandra 2.1):
- Replication factor of 2
- Consistency level ONE
- Driver consistency level SERIAL
- SimpleStrategy
- GossipingPropertyFileSnitch
使用此配置,如果我关闭一个节点,我会收到以下错误:
Not enough replica available for query at consistency SERIAL (2 required but only 1 alive)
数据均匀分布在所有节点上,nodetool 状态正确显示 运行 2 个 cassandra 节点上有一个节点已关闭
有了 CONSISTENCY ONE 和 2 个节点 ups,为什么它需要两个副本节点都 up???
我还读到串行驱动器一致性 wrt WRITE 失败:
如果三个节点之一宕机,在以下情况下 Paxos 提交失败:
- CQL 查询配置的一致性级别 ALL
- 驱动程序配置的串行一致性级别 SERIAL
- 复制因子 3
如果我将复制因子设置为 3,这会起作用。但我认为没有必要这样做。
我是不是遗漏了什么?
您已经找到了 Cassandra 中 Paxos 协议的一颗隐藏宝藏。在幕后,Paxos 的工作方式是使用 QUORUM-like 一致性级别进行调用。
请注意,它在您的错误消息中抱怨 SERIAL 一致性级别,而不是您设置的一致性级别 ONE。在大多数情况下,LWT 会忽略设置的正常一致性级别。它遵循 SERIAL 或 LOCAL_SERIAL 一致性级别,几乎直接映射到 QUORUM 或 LOCAL_QUORUM 节点。
两个节点的法定人数是:两个。因此,当一个节点关闭时,您会收到此错误消息。
各位专家,
我有以下配置的 3 节点集群 (Cassandra 2.1):
- Replication factor of 2
- Consistency level ONE
- Driver consistency level SERIAL
- SimpleStrategy
- GossipingPropertyFileSnitch
使用此配置,如果我关闭一个节点,我会收到以下错误:
Not enough replica available for query at consistency SERIAL (2 required but only 1 alive)
数据均匀分布在所有节点上,nodetool 状态正确显示 运行 2 个 cassandra 节点上有一个节点已关闭
有了 CONSISTENCY ONE 和 2 个节点 ups,为什么它需要两个副本节点都 up???
我还读到串行驱动器一致性 wrt WRITE 失败: 如果三个节点之一宕机,在以下情况下 Paxos 提交失败:
- CQL 查询配置的一致性级别 ALL
- 驱动程序配置的串行一致性级别 SERIAL
- 复制因子 3
如果我将复制因子设置为 3,这会起作用。但我认为没有必要这样做。
我是不是遗漏了什么?
您已经找到了 Cassandra 中 Paxos 协议的一颗隐藏宝藏。在幕后,Paxos 的工作方式是使用 QUORUM-like 一致性级别进行调用。
请注意,它在您的错误消息中抱怨 SERIAL 一致性级别,而不是您设置的一致性级别 ONE。在大多数情况下,LWT 会忽略设置的正常一致性级别。它遵循 SERIAL 或 LOCAL_SERIAL 一致性级别,几乎直接映射到 QUORUM 或 LOCAL_QUORUM 节点。
两个节点的法定人数是:两个。因此,当一个节点关闭时,您会收到此错误消息。