我已经阅读了我能找到的相关文档,但我仍有疑问。
我读了什么
来自http://wiki.apache.org/cassandra/Operations#Moving_nodes
如果您向群集添加节点,您的响铃将是不平衡的,只有达到完美平衡的方法是为每个节点计算新令牌,并使用nodetool move命令手动将它们分配给每个节点。
如果需要通过非均匀数量的节点增加容量,则必须重新计算整个群集的令牌,然后使用nodetool move将新令牌分配给现有节点。在使用新令牌分配重新启动所有节点后,运行nodetool cleanup以删除所有节点上未使用的键
但我不清楚这些事情的顺序。
您可以在以下情况中解释如何执行此操作吗?
我想添加2个额外的节点。
我必须遵循哪些步骤?我知道我应该安装和配置cassandra,使用原始5作为种子,并计算他们的新令牌,但是我应该按照nodetool move
移动数据的顺序?它是一次一个吗?
当我移动第一个数据时,数据会发生什么?它是否始终可用?
我应该在将原始5移动到新令牌之前启动两个新节点吗?
一步一步指南是理想的。
请注意,我需要在1.2版之前进行此操作
答案 0 :(得分:4)
新的令牌应该是
使用2 ^ 127/7 * {0-7}计算。
我必须遵循哪些步骤? 我应该以什么顺序使用nodetool move移动数据?
你应该
(我试图最大限度地减少传输的数据量 - 可能不是最优的但是足够接近,因为你可能已经存在数据的不平衡而没有太大的区别。)
一次一个吗?
您应该引导一个节点,然后一次移动一个令牌。这样可以避免在传输数据时对群集施加过多负载。
移动第一个数据时数据会发生什么变化?它是否始终可用?
移动过程中数据完全可用。节点参与旧范围和新范围的读写操作,因此您可以在移动过程中进行读写操作。
在将原始5移动到新标记之前,我应该启动两个新节点吗?
总是更好地在群集中拥有更多节点 - 如果您先移动,则某些节点的数据量是其他节点的两倍。
答案 1 :(得分:0)
从Cassandra 1.2开始,在添加节点时保持集群平衡非常容易,因为新的vnode(每个节点有多个种子)功能。 Cassandra现在会自动为您平衡群集。如果您从早期版本升级,您将have to activate the vnode feature yourself