Cassandra节点需要数小时才能加入

时间:2017-04-29 13:15:20

标签: cassandra cassandra-3.0

我的2号小组进入了一些不一致的状态。在一个节点(称为节点A)上,nodetool状态正确显示2个节点。在另一个节点(称为B)上,它只显示一个节点本身。经过几次尝试,我无法解决问题。所以我退出节点B.但是节点A上的nodetool状态仍然显示节点B处于UN状态。我不得不重新启动节点A上的cassandra,以便忘记节点B.

但这导致了另一个问题。我正在创建新节点(称为C)以加入节点A的集群。但该节点需要数小时。已经六个小时,我想知道它是否会成功加入。

查看节点C的调试日志表明节点B(已退役的节点)导致了问题。节点C上的日志不断显示:

DEBUG [GossipTasks:1] 2017-04-29 12:38:40,004 Gossiper.java:337 - Convicting /10.120.8.53 with status removed - alive false

节点A上的Nodetool状态显示节点C处于加入状态,如预期的那样。

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address       Load       Tokens       Owns    Host ID                               Rack
UJ  10.120.8.113  1006.97 MiB  256          ?       f357d8d0-2379-43d8-8ae5-62224191fb6c  rack1
UN  10.120.8.23   5.29 GiB   256          ?       596260a0-785a-435c-a3f3-632f56c5c882  rack1

节点C的负载在几小时后增加。

我检查了system.peers是否包含节点B.但该表包含零行。

我正在使用cassandra 3.7。

出了什么问题。我该怎么做才能避免丢失节点A上的数据并仍然扩展集群?

1 个答案:

答案 0 :(得分:3)

在节点C上运行 nodetool netstats ,看看是否有进展。 另请查看 nodetool compactionstats ,查看待处理的压缩量,并查看它是否随着时间的推移而下降。

如果bootstraping失败,请尝试重新启动节点。

作为替代方案,您可以删除节点C并再次添加它,并将 auto_bootstrap 设置设置为false。节点启动后,运行nodetool rebuild,并在进程后进行nodetool修复 - 应该是常规引导程序的更快替代方案。