Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当两个cassandra节点发生故障时如何处理_Cassandra - Fatal编程技术网

当两个cassandra节点发生故障时如何处理

当两个cassandra节点发生故障时如何处理,cassandra,Cassandra,环境 RF=3,CL=LOCAL_QUORUM,Vnode 问题 cassandra集群中有三个复制,如果一个节点关闭,就没有问题,因为cassandra中仍然有两个Relicat 我认为当cassandra中有数百个节点时,总是会发生这种情况。很可能有两个停机节点的公共记录。因此,当请求公共记录时,客户端将读取失败 我可以降低某些查询中的一致性级别,但不能降低所有查询中的一致性级别。因此,有没有解决此问题的解决方案。这里没有魔法-如果您的RF=3,仲裁或本地仲裁查询需要两个节点才能成功 你可以

环境 RF=3,CL=LOCAL_QUORUM,Vnode

问题

cassandra集群中有三个复制,如果一个节点关闭,就没有问题,因为cassandra中仍然有两个Relicat 我认为当cassandra中有数百个节点时,总是会发生这种情况。很可能有两个停机节点的公共记录。因此,当请求公共记录时,客户端将读取失败


我可以降低某些查询中的一致性级别,但不能降低所有查询中的一致性级别。因此,有没有解决此问题的解决方案。

这里没有魔法-如果您的RF=3,仲裁或本地仲裁查询需要两个节点才能成功

你可以:

  • 将查询的一致性级别降至1,这样您可以继续保持可用性,但一致性/持久性可能比您需要的稍低,或者

  • 将RF增加到5或添加另一个数据中心,这两个都将允许您同时容忍两个节点故障

  • 使用机架将集群空间划分为更小的区域,这样两个提供相同数据的节点同时发生故障的可能性就更小了


许多大型集群的运营商出于各种原因避免使用VNode,但一个重要原因是它使相邻性更难推理-在单令牌的情况下,100个节点集群中两个失败的节点不太可能相邻。

对不起,你说得对-它不会限制节点失败,但它将限制底层基础设施故障导致的节点故障。在大多数真实环境中,这些是您应该看到的主要停机类型。如果你真的在一个没有连接到共享基础设施的100节点集群上看到多个硬件同时发生硬件故障,那么你还需要解决一些其他问题。硬件故障很重要,但我最担心的是cassandra服务。cassandra可能会出问题,或者其他原因,devlops会担心两个节点在不同的机架中出现故障。我计划使用降级CL并切换其他区域数据中心。另一方面,在两个向下的节点中计算相同的数据可能需要执行。实际上,我对您对大型集群中的VNode的看法感到困惑。在引导时,VNode可以分配数据平衡。我可以理解,当集群较大时,这一优势会降低。但当使用单令牌部署时,会更加复杂。大型集群会逐渐变大步骤,不是一开始。当集群较小时不能使用sing令牌,然后当集群较大时切换到vnode。我始终认为vnode是更好的选择,还发现它是默认配置。Vnodes流速度更快,可以让您一次增长一个节点。一旦你引导了一个节点,你将有很多压缩工作要做。单个节点需要计算,但允许您一次增加“数百”个节点。因为发送数据的流发送者更少,所以完成后要做的压缩要少得多。从VNode更改为单个令牌并不容易,反之亦然——您可以使用额外的数据中心来完成,但这并不重要。如果您希望一次引导多个节点,例如,如果您有数百个节点,您可能需要单个令牌。您是对的。关于令牌范围管理的一个好观点,我在其他文档中没有找到。硬币有两面。我需要更多考虑如何在cassandra集群中管理我的令牌。