当我启动集群时,我可以在日志中看到它总是尝试连接到我甚至找不到的死节点。 奇怪的是当我运行 nodetool ring 或 nodetool status 时,我再也找不到这个死的主机了。这意味着我无法通过执行 nodetool removenode 来删除它。 我猜其他人已将此节点添加到群集中,但我不知道它是如何删除的。 我该如何解决? 非常感谢!
答案 0 :(得分:1)
nodetool removenode
过去已被证明存在问题,有几种方法可以解决这个问题。
你在哪个版本?如果您运行的是新版本2.2,则可以使用nodetool assassinate
:
$ nodetool -u cassandra -pw cassandra assassinate 10.0.0.100
基本上,由于CASSANDRA-7935,它已经被提升为版本2.2的nodetool命令了。如果您运行的是2.2之前的版本,则可以通过JMX Term工具(as documented here)强制删除节点:
$>open localhost:7199
#Connection to localhost:7199 is opened
$>bean org.apache.cassandra.net:type=Gossiper
#bean is set to org.apache.cassandra.net:type=Gossiper
$>run unsafeAssassinateEndpoint 10.0.0.100
#calling operation unsafeAssassinateEndpoint of mbean org.apache.cassandra.net:type=Gossiper
#operation returns:
null
$>quit
#bye