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

在添加一个或多个节点后,如何使新的cassandra群集保持平衡?,cassandra,cassandra-2.1,Cassandra,Cassandra 2.1,为了在这里进行测试并简单地描述这个问题,我使用了两个节点来构建一个cassandra(2.1.11)集群(192.168.56.110和192.168.56.111),现在我在这个集群中添加了一个额外的节点(192.168.56.112),我希望我的新环能够通过使用nodetool move命令实现平衡,但当我使用以下步骤时: 获取192.168.56.110的所有令牌范围,例如9815884274221702712--1007755089748978774 获取新节点的所有令牌范围,例如545

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

  • 获取
    192.168.56.110
    的所有令牌范围,例如
    9815884274221702712--1007755089748978774

  • 获取新节点的所有令牌范围,例如
    5458173168911717635--5458821955945522089

  • 我执行了命令:

     [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.
    
    根据文章所述:
    如果你将节点添加到集群中,你的环将不平衡,获得完美平衡的唯一方法是为每个节点计算新令牌,并使用nodetool move命令手动分配给每个节点。
    ,我想我似乎理解
    nodetool move
    命令错误,但我不知道如何理解它并平衡新集群?任何建议都将不胜感激


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

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

    是否使用虚拟节点?(num_标记在cassandra.yaml中设置的值)。如果是,则不需要使用nodetool move atall@doanduyhai非常感谢。是,我设置了
    num\u令牌:512
    ,so@doanduyhai非常感谢。您的回答确保我不需要手动重新平衡集群,因为我在
    cassandra.yaml
    中设置了
    num_令牌:512
    。在我设置配置并启动新节点的cassandra后,平衡会自动消失吗?唯一的问题是平衡需要很长时间。您是否使用虚拟节点?(num_标记在cassandra.yaml中设置的值)。如果是,则不需要使用nodetool move atall@doanduyhai非常感谢。是,我设置了
    num\u令牌:512
    ,so@doanduyhai非常感谢。您的回答确保我不需要手动重新平衡集群,因为我在
    cassandra.yaml
    中设置了
    num_令牌:512
    。在我设置配置并启动新节点的cassandra后,平衡会自动消失吗?唯一的问题是平衡需要很长时间