Cassandra 节点工具退役

Cassandra nodetool decommission

我希望停用一个 cassandra 节点,因为该节点需要 OS 升级。

我登录到那个节点。执行停用命令,几分钟后我在控制台上收到此异常

nodetool decommission

error: Stream failed
-- StackTrace --
org.apache.cassandra.streaming.StreamException: Stream failed
    at org.apache.cassandra.streaming.management.StreamEventJMXNotifier.onFailure(StreamEventJMXNotifier.java:85)
    at com.google.common.util.concurrent.Futures.run(Futures.java:1172)
    at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297)
    at com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
    at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
    at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:202)
    at org.apache.cassandra.streaming.StreamResultFuture.maybeComplete(StreamResultFuture.java:208)
    at org.apache.cassandra.streaming.StreamResultFuture.handleSessionComplete(StreamResultFuture.java:184)
    at org.apache.cassandra.streaming.StreamSession.closeSession(StreamSession.java:412)
    at org.apache.cassandra.streaming.StreamSession.onError(StreamSession.java:507)
    at org.apache.cassandra.streaming.StreamSession.start(StreamSession.java:229)
    at org.apache.cassandra.streaming.StreamCoordinator$StreamSessionConnector.run(StreamCoordinator.java:208)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

我不确定那个异常是什么意思,我打算通过 nodetool netstatsnodetool status whoose 输出来验证是否退役成功在下面。在这两个地方都写着 LEAVING,我如何确认它是否完成。

nodetool netstats
Mode: LEAVING
Not sending any streams.
Read Repair Statistics:
Attempted: 1
Mismatch (Blocking): 0
Mismatch (Background): 0
Pool Name                    Active   Pending      Completed
Commands                        n/a         0             26
Responses                       n/a         0         758780

nodetool status
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns    Host ID                               Rack
UL  x.x.x.x  1.02 MB    256     ?       377869a9-d01c-4b7d-a24c-dbb90afee3d8  RAC1

我的cassandra版本是2.1.8。发现了一个参考错误 https://issues.apache.org/jira/browse/CASSANDRA-10371,它表示更改可能需要 72 小时才能反映出来。

我应该assassinate the node as mentioned in the Removing a node doc

如果您没有看到nodetool status中的节点,则确认已完成。如果没有,那么您可以尝试 nodetool removenode 从集群中删除该节点。 nodetool assassinate 是您从集群中删除节点的最后一个选项。如果nodetool removenode无法从集群中删除节点,那么我们使用nodetool assassinate删除节点。

错误问题:要查看此错误的更多详细信息,cat /install_directory/apache-cassandra-2.1.8/logs/system.log | grep ERROR

您的节点无法与其他节点传输数据。出现此类问题的原因有很多,例如:用户进程限制 (nproc)。查找有关您的问题的更多详细信息,以找出错误的原因。