【发布时间】:2016-06-02 04:12:09
【问题描述】:
我有一个几乎是空的小集群。通常nodetool removenode 会在 10 秒左右完成。但是,我目前正在删除一个节点,这需要 10 分钟,而且似乎没有任何进展。移除节点的附加请求被拒绝,因为已经有移除正在进行中。我该如何解决这个问题?作为参考,这里是nodetool status的输出:
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
DL 192.168.12.207 152.14 KB 256 32.2% 683d8351-c625-4d7f-99cc-61f6b73b0c56 rack1
UN 192.168.12.205 215.21 KB 256 37.2% b66d5fff-ef1d-4fbf-a49a-43709df99a0c rack1
UN 192.168.12.208 148.09 KB 256 30.6% 39b54771-59b8-49f7-8db8-9cf4523d6c8d rack1
此外,cassandra 不在主机 207(离开主机)上运行,而是在其他两台主机上运行。
编辑:似乎至少有一个令牌被卡住等待复制:
$ nodetool removenode status
RemovalStatus: Removing token (-9037887679483580088). Waiting for replication confirmation from [/192.168.12.205].
【问题讨论】:
-
您是否先执行了 nodetool 修复?
-
不,这不是可选的吗?尽管在没有遇到这个问题的情况下没有运行 nodetool repair ,但过去这对我来说已经工作了很多次。为什么这会导致零星的失败?
-
顺便说一句,这些instructions,建议运行
repair,然后是decommission,然后是removenode,看起来确实不正确。运行nodetool decommission本身似乎删除了节点,留下removenode没有实际意义。我选择使用不同的步骤顺序,只涉及运行removenode,这也需要首先将 cassandra 放到机器上。 -
我尝试运行
nodetool repair,它似乎阻塞了很长时间(在我为几乎空的新初始化集群终止修复之前大约 10 分钟,只添加了一个模式),所以如果可能的话,我想找到一个不涉及nodetool repair的可靠解决方案。
标签: cassandra