4

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

我读到的

来自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 版之前进行

4

2 回答 2

4

新的令牌应该是

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

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

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

你应该

  1. 在 48611766702991209066196372490252601636 的一个节点中引导
  2. 在 121529416757478022665490931225631504090 引导另一个节点
  3. 将 34028236692093846346337460743176821145 移至 24305883351495604533098186245126300818
  4. 将 68056473384187692692674921486353642291 移至 72917650054486813599294558735378902454
  5. 将 102084710076281539039012382229530463436 移至 97223533405982418132392744980505203272
  6. 将 136112946768375385385349842972707284582 移至 145835300108973627198589117470757804908

(我试图最小化传输的数据量 - 可能不是最佳的,但考虑到您可能已经拥有的数据不平衡,已经足够接近,不会产生太大影响。)

是一次一个吗?

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

当我移动第一个数据时,数据会发生什么?是否随时可用?

移动期间数据完全可用。该节点参与新旧范围的读写,因此您可以在移动期间进行读写。

我应该在将原来的 5 个节点移动到他们的新令牌之前启动两个新节点吗?

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

于 2013-03-18T21:02:16.010 回答
0

从 Cassandra 1.2 开始,由于新的 vnodes(每个节点多个种子)功能,在添加节点时保持集群平衡非常容易。Cassandra 现在会自动为您平衡集群。如果您从早期版本升级,则必须自己激活 vnode 功能

于 2013-07-11T20:43:03.597 回答