cassandra 2.2.8:如何在最小影响的情况下将节点添加到 cassandra 数据中心/群集



我通过使其成为种子节点向Cassandra集群添加了一个新节点,然后开始重建它(nodetool rebuild)命令。尽管节点快速加入群集,但从所选节点中的所有节点开始流式传输的重建过程导致整个 dc 节点变慢。对应用程序的影响是严重的。我将不得不停止重建过程以保持正常运行!

在这里,我正在寻求建议,如果你们可以分享方法/技巧,以尽量减少(节点重建)操作对其余直流节点和应用程序的影响。

我将非常感谢您的建议 - 感谢您提前阅读我的消息和您的帮助。

添加新节点时,不应将其设置为种子节点。种子节点用于引导其他节点并将它们加入群集。将新节点设置为种子节点将不允许加入群集中的新节点。按照以下链接中提供的 Cassandra 文档中提供的步骤进行操作。

https://docs.datastax.com/en/archived/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html

这是在群集中添加新节点的最佳方式。

注: 确保新节点未列在 -seed 列表中。不要使所有节点都成为种子节点。请阅读节点间通信(八卦)。

据我了解,您添加了一个节点作为种子节点,这样它就不会立即引导并加入集群。虽然这种方法是正确的,因为它可以快速加入集群,但缺点是,它不会引导,因此不会从它负责的其他节点复制所有数据。在该节点上运行重建时,会从其他节点盲目复制数据(不执行任何验证),这可能会阻塞现有节点吞吐量和网络管道。此方法非常安全,建议在使用添加新 DC 时使用此方法,但在将节点添加到现有 DC 时不建议使用此方法。

添加节点时,最简单的方法是使用此处所述的过程添加节点。 https://docs.datastax.com/en/archived/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html

当节点引导时,它将从其他节点复制所需的数据,但在完全引导并验证数据之前不会开始接受客户端连接。因此,一次添加一个节点并让它引导,以便复制和验证所有必要的数据。添加完所需的节点数后,对所有以前加入的节点运行清理,以清理旧节点不负责的所有键。

最新更新