cassandra 2.2.8:如何以最小的影响将节点添加到cassandra dataCenter / Cluster

时间:2017-04-19 01:38:48

标签: cassandra cassandra-2.0

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

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

我非常感谢您的建议 - 感谢您提前阅读我的留言和帮助。

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

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

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

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