如何摆脱这个无法访问的节点
答案 0 :(得分:7)
我遇到了同样的问题,我使用removenode
解决了这个问题,这不需要您查找和更改节点令牌。
首先,获取节点UUID:
nodetool status
DN 192.168.56.201 ? 256 13.1% 4fa4d101-d8d2-4de6-9ad7-a487e165c4ac r1
DN 192.168.56.202 ? 256 12.6% e11d219a-0b65-461e-babc-6485343568f8 r1
UN 192.168.2.91 156.04 KB 256 12.4% e1a33ed4-d613-47a6-8b3b-325650a2bbd4 RAC1
UN 192.168.2.92 156.22 KB 256 13.6% 3a4a086c-36a6-4d69-8b61-864ff37d03c9 RAC1
UN 192.168.2.93 149.6 KB 256 11.3% 20decc72-8d0a-4c3b-8804-cc8bc98fa9e8 RAC1
正如您所看到的,.201和.202已经死了并且在不同的网络上。如果没有适当的退役和重新调试,这些已经改为.91和.92。我正在努力安装网络并犯了一些错误......
其次,使用以下命令删除.201:
nodetool removenode 4fa4d101-d8d2-4de6-9ad7-a487e165c4ac
(在旧版本中,它是nodetool remove ...)
但就像nodetool removetoken ...
一样,它会阻止...(请参阅samarth在psandord答案中的评论)但是,它有副作用,它将UUID放在要删除的节点列表中。接下来我们可以强制删除:
nodetool removenode force
(在旧版本中,它是nodetool remove ...)
现在节点接受它告诉我它正在删除无效条目的命令:
RemovalStatus:删除令牌(-9136982325337481102)。等待[/192.168.2.91,/192.168.2.92]的复制确认。
我们也看到它与其他两个节点通信,因此需要一点时间,但它仍然很快。
接下来,nodetool status
未显示.201节点。我重复.202,现在状态是干净的。
之后你可能还想按照psanford回答中提到的那样进行清理:
nodetool cleanup
应该逐个在所有节点上运行清理,以确保完全考虑更改。
答案 1 :(得分:6)
通常在替换节点时,您要将新节点的令牌设置为(failure node's token) - 1
并让它自举。从1.0开始,现在可以在启动时指定一个标志replace a dead node:“cassandra.replace_token =”。
由于您已经使用相同的令牌添加了新节点,因此还有一个额外的步骤:
(failure node's token) - 1
nodetool move
nodetool removetoken <failed node's token>
nodetool cleanup
这些基本上是pre 1.0 instructions,用于通过额外的令牌移动替换死节点。