完全删除已退役的Cassandra节点

时间:2013-03-27 15:09:37

标签: cassandra

运行Cassandra 1.0,我正在将一个环从5个节点缩小到4个。为了做到这一点,我在要删除的节点上运行nodetool decommission,然后停止该主机上的cassandra并使用{{1 }和nodetool move更新其余4个节点上的令牌以重新平衡群集。

我的种子节点是A和B.我删除的节点是C.

这似乎在6-7天内正常工作,但现在我的四个节点中有一个认为退役的节点仍然是环的一部分。

为什么会发生这种情况,以及从环中完全删除退役节点的正确方法是什么?

这是一个节点上nodetool cleanup的输出仍然认为退役节点是环的一部分:

nodetool ring

以下是其他3个节点上Address DC Rack Status State Load Owns Token 127605887595351923798765477786913079296 xx.x.xxx.xx datacenter1 rack1 Up Normal 616.17 MB 25.00% 0 xx.xxx.xxx.xxx datacenter1 rack1 Up Normal 1.17 GB 25.00% 42535295865117307932921825928971026432 xx.xxx.xx.xxx datacenter1 rack1 Down Normal ? 9.08% 57981914123659253974350789668785134662 xx.xx.xx.xxx datacenter1 rack1 Up Normal 531.99 MB 15.92% 85070591730234615865843651857942052864 xx.xxx.xxx.xx datacenter1 rack1 Up Normal 659.92 MB 25.00% 127605887595351923798765477786913079296 的输出:

nodetool ring

更新 我尝试在节点B上使用Address DC Rack Status State Load Owns Token 127605887595351923798765477786913079296 xx.x.xxx.xx datacenter1 rack1 Up Normal 616.17 MB 25.00% 0 xx.xxx.xxx.xxx datacenter1 rack1 Up Normal 1.17 GB 25.00% 42535295865117307932921825928971026432 xx.xx.xx.xxx datacenter1 rack1 Up Normal 531.99 MB 25.00% 85070591730234615865843651857942052864 xx.xxx.xxx.xx datacenter1 rack1 Up Normal 659.92 MB 25.00% 127605887595351923798765477786913079296 删除节点,该节点仍然声称节点C在环中。该命令运行了5个小时,似乎没有做任何事情。唯一的变化是,当我在节点B上运行nodetool removetoken时,节点C的状态现在正在“离开”。

2 个答案:

答案 0 :(得分:3)

我可以使用nodetool removetoken删除已停用的节点,但我必须使用force选项。

这是我的命令的输出:

iowalker:~$ nodetool -h `hostname` removetoken 57981914123659253974350789668785134662

<waited 5 hours, the node was still there>

iowalker:~$ nodetool -h `hostname` removetoken status
RemovalStatus: Removing token (57981914123659253974350789668785134662). Waiting for replication confirmation from [/xx.xxx.xxx.xx,/xx.x.xxx.xx,/xx.xx.xx.xxx].
iowalker:~$ nodetool -h `hostname` removetoken force
RemovalStatus: Removing token (57981914123659253974350789668785134662). Waiting for replication confirmation from [/xx.xxx.xxx.xx,/xx.x.xxx.xx,/xx.xx.xx.xxx].
iowalker:~$ nodetool -h `hostname` removetoken status
RemovalStatus: No token removals in process.

答案 1 :(得分:0)

使用Cassandra 2.0,您需要在节点上使用sh nodetool decommission来删除。 在您的情况下,请检查您是否删除了cassandra-topology.properties

中的条目