将新节点添加到Cassandra集群以确保集群保持平衡的确切过程是什么?

时间:2013-03-18 20:43:55

标签: cassandra

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

我读了什么

来自http://wiki.apache.org/cassandra/Operations#Moving_nodes

  

如果您向群集添加节点,您的响铃将是不平衡的,只有达到完美平衡的方法是为每个节点计算新令牌,并使用nodetool move命令手动将它们分配给每个节点。

http://www.datastax.com/docs/1.1/operations/cluster_management#adding-capacity-to-an-existing-cluster

  

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

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

您可以在以下情况中解释如何执行此操作吗?

  • 我正在使用cassandra 1.1.9,因此没有使用虚拟节点。
  • 我有一个包含5个节点的集群环,每个节点拥有20%
  • 他们的代币是
    • 0
    • 34028236692093846346337460743176821145
    • 68056473384187692692674921486353642291
    • 102084710076281539039012382229530463436
    • 136112946768375385385349842972707284582

我想添加2个额外的节点。

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

一步一步指南是理想的。

请注意,我需要在1.2版之前进行此操作

2 个答案:

答案 0 :(得分:4)

新的令牌应该是

  • 0
  • 24305883351495604533098186245126300818
  • 48611766702991209066196372490252601636
  • 72917650054486813599294558735378902454
  • 97223533405982418132392744980505203272
  • 121529416757478022665490931225631504090
  • 145835300108973627198589117470757804908

使用2 ^ 127/7 * {0-7}计算。

  

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

你应该

  1. 一个节点中的Bootstrap,电话:48611766702991209066196372490252601636
  2. 引导另一个节点121529416757478022665490931225631504090
  3. 移动34028236692093846346337460743176821145至24305883351495604533098186245126300818
  4. Move 68056473384187692692674921486353642291 to 72917650054486813599294558735378902454
  5. 将102084710076281539039012382229530463436移至97223533405982418132392744980505203272
  6. Move 136112946768375385385349842972707284582 to 145835300108973627198589117470757804908
  7. (我试图最大限度地减少传输的数据量 - 可能不是最优的但是足够接近,因为你可能已经存在数据的不平衡而没有太大的区别。)

      

    一次一个吗?

    您应该引导一个节点,然后一次移动一个令牌。这样可以避免在传输数据时对群集施加过多负载。

      

    移动第一个数据时数据会发生什么变化?它是否始终可用?

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

      

    在将原始5移动到新标记之前,我应该启动两个新节点吗?

    总是更好地在群集中拥有更多节点 - 如果您先移动,则某些节点的数据量是其他节点的两倍。

答案 1 :(得分:0)

从Cassandra 1.2开始,在添加节点时保持集群平衡非常容易,因为新的vnode(每个节点有多个种子)功能。 Cassandra现在会自动为您平衡群集。如果您从早期版本升级,您将have to activate the vnode feature yourself