运行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的状态现在正在“离开”。
答案 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
中的条目