向Cassandra群集添加新节点以使群集保持平衡的确切步骤是什么?

向Cassandra群集添加新节点以使群集保持平衡的确切步骤是什么?,cassandra,Cassandra,我已经阅读了我能找到的相关文档,但我仍然有疑问 我读的 从 如果您将节点添加到集群中,您的环将不平衡,获得完美平衡的唯一方法是为每个节点计算新令牌,并使用nodetool move命令手动将它们分配给每个节点 来自 如果需要将容量增加非统一数量的节点,则必须重新计算整个集群的令牌,然后使用nodetool move将新令牌分配给现有节点。在所有节点使用新的令牌分配重新启动后,运行nodetool清理以删除所有节点上未使用的密钥 但我不清楚这些事情的顺序 你能解释一下在下面的场景中怎么做吗 我使

我已经阅读了我能找到的相关文档,但我仍然有疑问

我读的

如果您将节点添加到集群中,您的环将不平衡,获得完美平衡的唯一方法是为每个节点计算新令牌,并使用nodetool move命令手动将它们分配给每个节点

来自

如果需要将容量增加非统一数量的节点,则必须重新计算整个集群的令牌,然后使用nodetool move将新令牌分配给现有节点。在所有节点使用新的令牌分配重新启动后,运行nodetool清理以删除所有节点上未使用的密钥

但我不清楚这些事情的顺序

你能解释一下在下面的场景中怎么做吗

  • 我使用的是cassandra 1.1.9,因此没有使用虚拟节点
  • 我有一个有5个节点的集群环,每个节点拥有20%
  • 他们的代币是
    • 0
    • 34028236692093846346337460743176821145
    • 680564738418769269274921486353642291
    • 102084710076281539039012382229530463436
    • 136112946768375385385349842972707284582
我想再添加两个节点

我必须遵循哪些步骤?我知道我应该安装和配置cassandra,使用原来的5作为种子,并计算它们的新令牌,但是我应该使用
nodetool move
以什么顺序移动数据?是一次一个吗?
当我移动第一个数据时,数据会发生什么变化?它随时可用吗?
在将原来的5移动到它们的新令牌之前,我是否应该启动这两个新节点

一个循序渐进的指南将是理想的


请注意,我需要在1.2版之前完成这项工作,新的令牌应该是

  • 0
  • 24305883351495604533098186245126300818
  • 48611766702991209066196372490252601636
  • 72917650054486813599294558735378902454
  • 97223533405982418132392744980505203272
  • 12152941675747802266549093122531504090
  • 145835300108973627198589117470757804908
使用2^127/7*{0-7}计算

我必须遵循哪些步骤? 我应该以什么顺序使用nodetool move移动数据

你应该

  • 位于48611766702991209066196372490252601636的一个节点中的引导
  • 在12152941675747802266549093126531504090引导另一个节点
  • 将34028236692093846346337460743176821145移动到24305883351495604533098186245126300818
  • 将680564738418769269274921486353642291移动到72917650054486813599294558735378902454
  • 将102084710076281539039012382229530463436移动到9722353340592418132392744980505203272
  • 将136112946768375385385349842972707284582移动到145835300108973627198589117470757804908
  • (我试图将传输的数据量降至最低-可能不是最佳的,但考虑到您可能已经拥有的数据的不平衡性,这已经足够接近,不会产生太大的影响。)

    是一次一个吗

    您应该一次引导一个节点,一次移动一个令牌。这样可以避免在流式传输数据时在集群上放置过多的负载

    当我移动第一个数据时,数据会发生什么变化?它随时可用吗

    数据在移动过程中完全可用。节点参与新旧范围的读取和写入,因此您可以在移动过程中进行读取和写入

    在将原来的5移动到它们的新令牌之前,我是否应该启动这两个新节点


    集群中最好有更多的节点-如果先移动,一些节点的数据量将是其他节点的两倍。

    来自Cassandra 1.2,添加节点时保持集群平衡非常容易,因为新的vnodes(每个节点有多个种子)功能。卡桑德拉现在为您自动平衡集群。如果您从早期版本升级,您将

    因此,我应该将
    48611766702991209066196372490252601636
    添加到一个新节点,
    1215294167574780226654909311225631504090
    到另一个节点,启动它们,然后使用
    nodetool move
    从步骤3向前迁移日期?对,您永远不需要重新启动原来的5。在yaml中为新的设置初始_令牌和种子,并逐个启动它们。