添加新节点时是不是需要对不同数据中心的节点进行nodetool清理
Posted
技术标签:
【中文标题】添加新节点时是不是需要对不同数据中心的节点进行nodetool清理【英文标题】:Is nodetool cleanup necessary on nodes of different data center when new node is added添加新节点时是否需要对不同数据中心的节点进行nodetool清理 【发布时间】:2014-08-02 22:08:57 【问题描述】:我计划建立一个多数据中心 Cassandra 2,每个数据中心有 2-4 个节点和几十个数据中心。我们在每个数据中心的一定数量的节点上复制了键空间。我们有一个基于 vnode 的部署。所以令牌应该自动分配给节点。
http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html 的文档建议添加新节点需要在集群的所有其他节点上运行清理。但是,它并未阐明多数据中心设置中的程序。
我的理解是 nodetool cleanup 删除不再属于该节点的数据。当一个新的数据中心正在建立时,我们正在创建全新的副本和 AFAICT,它不会导致这个新数据中心之外的数据移动/重新平衡,因此对其他数据中心的节点没有清理要求。有人能确认我的理解是否正确,其他数据中心的节点不需要清理吗?
【问题讨论】:
【参考方案1】:您的理解是正确的,但您的问题的答案取决于您在创建键空间时设置的复制策略。如果您在所有键空间上使用 NetworkTopologyStrategy,则多个数据中心将按照您的理解和解释运行,并且不需要在添加新数据中心后进行清理。但是,如果您在任何键空间上使用 SimpleStrategy,则所有数据中心都将作为该键空间的单个集群工作,因此在添加新节点后需要进行清理。
您可以在 cqlsh 上使用此命令检查当前的复制策略:
describe KEYSPACE keyspacename
希望对你有帮助!
【讨论】:
以上是关于添加新节点时是不是需要对不同数据中心的节点进行nodetool清理的主要内容,如果未能解决你的问题,请参考以下文章