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

cassandra 2.2.8: How to add node to cassandra dataCenter /Cluster with minimum impact

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

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

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

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

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

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

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

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

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

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