当两个cassandra节点发生故障时如何处理
环境 RF=3,CL=LOCAL_QUORUM,Vnode 问题 cassandra集群中有三个复制,如果一个节点关闭,就没有问题,因为cassandra中仍然有两个Relicat 我认为当cassandra中有数百个节点时,总是会发生这种情况。很可能有两个停机节点的公共记录。因此,当请求公共记录时,客户端将读取失败当两个cassandra节点发生故障时如何处理,cassandra,Cassandra,环境 RF=3,CL=LOCAL_QUORUM,Vnode 问题 cassandra集群中有三个复制,如果一个节点关闭,就没有问题,因为cassandra中仍然有两个Relicat 我认为当cassandra中有数百个节点时,总是会发生这种情况。很可能有两个停机节点的公共记录。因此,当请求公共记录时,客户端将读取失败 我可以降低某些查询中的一致性级别,但不能降低所有查询中的一致性级别。因此,有没有解决此问题的解决方案。这里没有魔法-如果您的RF=3,仲裁或本地仲裁查询需要两个节点才能成功 你可以
我可以降低某些查询中的一致性级别,但不能降低所有查询中的一致性级别。因此,有没有解决此问题的解决方案。这里没有魔法-如果您的RF=3,仲裁或本地仲裁查询需要两个节点才能成功 你可以:
- 将查询的一致性级别降至1,这样您可以继续保持可用性,但一致性/持久性可能比您需要的稍低,或者
- 将RF增加到5或添加另一个数据中心,这两个都将允许您同时容忍两个节点故障
- 使用机架将集群空间划分为更小的区域,这样两个提供相同数据的节点同时发生故障的可能性就更小了
许多大型集群的运营商出于各种原因避免使用VNode,但一个重要原因是它使相邻性更难推理-在单令牌的情况下,100个节点集群中两个失败的节点不太可能相邻。对不起,你说得对-它不会限制节点失败,但它将限制底层基础设施故障导致的节点故障。在大多数真实环境中,这些是您应该看到的主要停机类型。如果你真的在一个没有连接到共享基础设施的100节点集群上看到多个硬件同时发生硬件故障,那么你还需要解决一些其他问题。硬件故障很重要,但我最担心的是cassandra服务。cassandra可能会出问题,或者其他原因,devlops会担心两个节点在不同的机架中出现故障。我计划使用降级CL并切换其他区域数据中心。另一方面,在两个向下的节点中计算相同的数据可能需要执行。实际上,我对您对大型集群中的VNode的看法感到困惑。在引导时,VNode可以分配数据平衡。我可以理解,当集群较大时,这一优势会降低。但当使用单令牌部署时,会更加复杂。大型集群会逐渐变大步骤,不是一开始。当集群较小时不能使用sing令牌,然后当集群较大时切换到vnode。我始终认为vnode是更好的选择,还发现它是默认配置。Vnodes流速度更快,可以让您一次增长一个节点。一旦你引导了一个节点,你将有很多压缩工作要做。单个节点需要计算,但允许您一次增加“数百”个节点。因为发送数据的流发送者更少,所以完成后要做的压缩要少得多。从VNode更改为单个令牌并不容易,反之亦然——您可以使用额外的数据中心来完成,但这并不重要。如果您希望一次引导多个节点,例如,如果您有数百个节点,您可能需要单个令牌。您是对的。关于令牌范围管理的一个好观点,我在其他文档中没有找到。硬币有两面。我需要更多考虑如何在cassandra集群中管理我的令牌。