如何在不停机的情况下将单令牌集群迁移到新的vnodes集群?

rel*_*mes 6 data-migration cassandra

我们有Cassandra集群,每个节点有一个令牌,总共22个节点,每个节点的平均负载为500Gb.它具有SimpleStrategy用于主键空间和SimpleSnitch.

我们需要将所有数据迁移到新数据中心,并在没有停机的情况下关闭旧数据中心.新集群有28个节点.我想要有vnodes.

我正在考虑以下过程:

  1. 将旧群集迁移到vnodes
  2. 使用vnodes设置新群集
  3. 将新群集中的节点添加到旧群集中,并等待它平衡所有内容
  4. 将客户端切换到新群集
  5. 从旧集群逐个停用节点

但是有很多技术细节.首先,我应该在vnodes迁移后将旧集群洗牌吗?那么,切换到NetworkTopologyStrategy和GossipingPropertyFileSnitch的最佳方法是什么?我想切换到NetworkTopologyStrategy,因为新集群有2个不同的机架,带有独立的电源/网络交换机.

Ric*_*ard 5

在vnodes迁移后我应该将旧集群洗牌吗?

你不需要.如果从每个节点的一个令牌转到256(默认值),则每个节点将其范围拆分为256个相邻且大小相等的范围.这不会影响数据的存在.但这意味着当您在新DC中的新节点中进行引导时,它将在整个过程中保持平衡.

切换到NetworkTopologyStrategy和GossipingPropertyFileSnitch的最佳方法是什么?

困难在于切换复制策略通常不安全,因为需要在群集周围移动数据.如果你告诉它节点在不同的机架中,NetworkToplogyStrategy(NTS)会将数据放在不同的节点上.因此,您应该在添加新节点之前移至NTS.

在将旧群集升级到vnodes(上面的步骤1)之后,执行此操作的方法如下:

1A.将所有现有节点列为属性文件中的DC0.将新节点列为DC1及其正确的机架.

1B.使用选项DC0:3(或任何当前复制因子)和DC1:0将复制策略更改为NTS.

然后,要添加新节点,请按照以下过程操作:http://www.datastax.com/docs/1.2/operations/add_replace_nodes#adding-a-data-center-to-a-cluster.请记住将令牌数设置为256,因为它默认为1.

在步骤5中,您应将DC0的复制因子设置为0,即将复制选项更改为DC0:0,DC1:3.现在这些节点没有被使用,因此decommission不会传输任何数据,但你仍然应该这样做,而不是关闭它们,以便将它们从环中移除.

请注意,一个风险是以低一致性级别对旧节点进行的写入可能会丢失.为了防止这种情况,您可以在切换到新DC后在CL.LOCAL_QUORUM处写入.还有一个小窗口,写入可能会丢失(步骤3和4之间).如果它很重要,您可以在退役旧节点之前运行修复,以保证没有损失或以高一致性级别写入.