【问题标题】:Possible to take half of Cassandra nodes down without affecting the application?可以在不影响应用程序的情况下关闭一半的 Cassandra 节点吗?
【发布时间】:2020-01-17 09:31:32
【问题描述】:

如果有一个 4 节点 Cassandra 集群,是否可以将 Cassandra 配置为关闭一半节点(在本例中为两个节点)而不影响应用程序?

如果 Cassandra 取消写入队列,节点可以关闭多长时间?

【问题讨论】:

  • 这里面有很多因素——使用了哪些一致性级别、单令牌/vnodes等。请提供更多信息
  • 是的,作为亚历克斯,我们需要考虑很多因素。请提供更多信息。

标签: cassandra


【解决方案1】:

这取决于客户端 CL 和 DC 复制因子。

假设 RF 为 4(全部),如果客户端具有 CL=ONE 或 LOCAL_ONE,则应用程序不会注意到任何问题。任何其他客户端 CL 都会出现问题(例如 cl=local_quorum 为 4 为 3,只允许单个节点宕机)。

让我们假设 RF=1 或 2。如果 CL=ONE 或 LOCAL_ONE,应用程序将不受仅在可用节点上操作数据的查询的影响。但是,对仅存在于不可用节点上的行的任何访问都会受到影响。换言之,CL=ONE 或 LOCAL_ONE 仅在您操作的数据具有至少一个可用于返回响应的节点时才有效(在这种情况下您只需要 ONE 来响应)。如果您要查询的行在两个不可用的节点上,您将收到一条错误消息,说明如下:预期响应为 1,收到 0。

许多应用程序将 CL 配置为某种仲裁(本地或非本地) - 因此在这种情况下,除非您的 RF=5(因此至少有 5 个节点),否则应用程序肯定会失败。 5 的法定人数为 3,允许 2 个节点发生故障。

希望这是有道理的。

【讨论】:

    【解决方案2】:

    是的,假设您谈论的是一个数据中心中的所有四个节点,如果您将复制因子设置为 3 或更大,并且将读写一致性级别设置为 ONE。

    对于写入,启动的节点将为已关闭的节点存储 提示,因此当它们恢复运行时,它们可以写入数据。节点存储这些提示的时间可以在cassandra.yaml中设置。

    【讨论】:

      猜你喜欢
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多