【问题标题】:Cassandra: 2 required but only 1 alive & 3 replica were required but only 2 acknowledged the writeCassandra:需要 2 个,但只需要 1 个活动和 3 个副本,但只有 2 个确认写入
【发布时间】:2021-08-20 15:54:42
【问题描述】:

我在将数据写入 Cassandra 时遇到两个错误,想知道它们之间的区别。

  1. 需要 3 个副本,但只有 2 个确认写入
  2. 需要 2 个,但只有 1 个活着

一致性级别为 LOCAL_QUORUM。

根据我的观察,当我遇到第一个异常时,我看到数据被写入其中一个节点,而在第二个异常中,我看不到任何节点中的数据。

我的观察是否正确,请帮助我。

【问题讨论】:

  • 你能指定密钥空间的复制因子吗,从这两条消息的外观来看,第一个看起来像 RF=5 第二个 RF=3。你能澄清一下吗?
  • 环中的节点总数为 4,RF 为 2,其中一个节点出现故障,我在应用程序日志中看到一些异常,即当我删除节点时第二条消息(需要 2 个但只有 1 个活动)从环中,当节点状态为(离开)时,我看到第一条消息(需要 3 个副本,但只有 2 个确认写入)。

标签: cassandra


【解决方案1】:

在不知道集群拓扑和键空间复制因子的情况下,提供一个明确的答案有点困难。完整的错误消息 + 完整的堆栈跟踪也需要了解。

LOCAL_QUORUM 一致性要求 3 个副本响应,这表明您在本地 DC 中有 4 个或 5 个节点 -- 4 或 5 的法定人数为 3。

在第二种情况下,当本地 DC 中有 2 个或 3 个节点时,LOCAL_QUORUM 需要 2 个副本。是的,2 个节点的仲裁仍然是 2 个节点,这意味着如果任一节点出现故障,您的应用程序将无法容忍中断。因此,我们建议每个 DC 中至少有 3 个节点用于生产集群。干杯!

【讨论】:

  • 您好 Erick,感谢您的回复,以下是集群详细信息。 DC1 - 4 个节点 Dc2 - 4nodes 拓扑 - 网络拓扑 复制因子 2 我观察到第二个异常(需要 2 个,但只有 1 个活着)当 DC1 中的一个节点出现故障时,在这种情况下,数据不会写入 Cassandra。当我们从集群中删除无响应的节点时,我们得到了第一个异常(需要 3 个副本,但只有 2 个确认写入),在这种情况下写入是成功的。只想了解这两种异常的区别
  • 不可能是RF:2,因为L_Q 的2 个副本只是1 个。RF:4 听起来更像它,因为L_Q 的4 个是3 个副本。对于第二个例外,即使节点出现故障,所需的副本也不会改变。我建议你检查你的配置,因为你给我的信息没有加起来。除非满足“所需副本”,否则写入不会成功。干杯!
  • 感谢埃里克提供的信息。
  • 我对此有点困惑,2 个副本的 L_Q 只是 1。---> N/2+1 --> 2/2+1 = 2 它将是 2 对(纠正我这里)
  • 你是对的。那是我的一个错字。干杯!
猜你喜欢
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
相关资源
最近更新 更多