如何在添加一个或多个节点后使新的cassandra集群平衡?

时间:2016-01-26 05:49:16

标签: cassandra cassandra-2.1

为了在这里进行测试并简单地描述问题,我使用了两个节点来构建cassandra(2.1.11)群集(192.168.56.110192.168.56.111),现在我添加了一个额外的节点({{1} })到这个集群,我希望通过使用192.168.56.112命令平衡我的新环,但是当我使用以下步骤时:

  1. 获取nodetool move的所有令牌范围,例如192.168.56.110

  2. 获取新节点的所有令牌范围,例如981588427421702712 -- 1007755089748978774

  3. 我执行了命令:

    5458173168911717635 -- 5458821955945522089

    根据文章Load balancing说: [root@test-1 pengcz]# ../cassandra-2.1.11/bin/nodetool -h 192.168.56.110 -u admin -pw admin4587 move 5458173168911717635 error: target token 5458173168911717635 is already owned by another node. -- StackTrace -- java.io.IOException: target token 5458173168911717635 is already owned by another node. ,我认为我似乎理解If you add nodes to your cluster your ring will be unbalanced and only way to get perfect balance is to compute new tokens for every node and assign them to each node manually by using nodetool move command.命令错误,但我不知道如何理解它并平衡新群集?任何建议将被认真考虑!

1 个答案:

答案 0 :(得分:0)

因此,您将设置num_tokens更改为512.启动新节点后,您应该记住种子节点不会自动引导,但其他的节点在启动后平衡数据。要平衡种子节点,您应该为您的节点运行nodetool修复。时间取决于数据大小。