无法将令牌数从 1 更改为 256

Cannot change the number of tokens from 1 to 256

我正在使用 Cassandra 2.0,集群已设置为 3 个节点。显示所有三个节点的 Nodetool 状态和环。我已经为所有节点指定了令牌。

我按照以下步骤更改了一个节点中的配置:

1) sudo 服务卡桑德拉停止
2) 更新cassandra.yaml(更新thrift_framed_transport_size_in_mb)
3) sudo srevice cassandra 启动

具体没有启动成功,system.log显示如下异常:

org.apache.cassandra.exceptions.ConfigurationException: Cannot change the number of tokens from 1 to 256

在不丢失节点或集群中现有数据的情况下重启节点的最佳机制是什么?

从非 Vnode 切换到 Vnode 对 C* 来说是一个有点棘手的提议,之前执行此切换(随机播放)的机制因不稳定而臭名昭著。

最简单的方法是在启用 vnode 的情况下启动新节点(在新数据中心),并通过修复将数据传输到这些节点。

我在尝试将标记数从 1 更改为 256 时也出现此错误。为了解决这个问题,我尝试了以下操作:

场景: 我有 4 个节点 DSE (4.6.1) cassandra 集群。假设他们的 FQDN 是:d0.cass.org、d1.cass.org、d2.cass.org、d3.cass.org。这里,节点 d0.cass.org 和 d1.cass.org 是种子提供者。我的目标是通过更改 cassandra.yaml 文件中的 num_token 属性来启用节点。

每个节点(一次一个)要遵循的程序:

  • 运行 nodetool 在一个节点上停用:nodetool decommission
  • 在已退役的节点上终止 cassandra 进程。使用 ps ax | grep dsekill <pid>
  • 查找 dse cassandra 的进程 ID
  • 节点退役成功后,转到剩余节点之一并使用nodetool status检查cassandra集群的状态。已退役的节点不应出现在列表中。
  • 转到其中一个活动 seed_providers 并键入 nodetool rebuild
  • 在已停用的节点上,打开 cassandra.yaml 文件并取消注释 num_tokens: 256。保存并关闭文件。如果此节点最初是种子提供者,请确保它的 ip 地址已从种子中删除:来自 cassandra.yaml 文件的列表。如果不这样做,关于集群拓扑的陈旧信息将阻碍新种子节点提供的新拓扑。启动成功后,可再次加入种子列表。
  • 使用 opscenter 中的相应选项重新启动剩余的集群,或者在每个节点上手动停止 cassandra 并重新启动它。
  • 最后,使用 dse cassandra 命令启动 cassandra。

这应该有效。