4

运行 Cassandra 1.0,我将环从 5 个节点缩小到 4 个。为此,我在nodetool decommission要删除的节点上运行,然后在该主机上停止 cassandra 并使用nodetool move并将nodetool cleanup剩余 4 个节点上的令牌更新为重新平衡集群。

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

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

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

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

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其他 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.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     

更新: 我尝试使用nodetool removetoken节点 B 删除节点,该节点仍然声称节点 C 在环中。该命令运行了 5 个小时,似乎没有做任何事情。唯一的变化是,当我nodetool ring在节点 B 上运行时,节点 C 的状态现在是“离开”。

4

2 回答 2

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.
于 2013-03-28T16:43:51.050 回答
0

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

于 2014-10-08T15:08:56.887 回答