重启后Cassandra节点未加入群集

时间:2017-12-22 03:57:41

标签: cassandra cluster-computing

我们在RHEL 7.2版本中配置了3个节点cassandra集群,我们正在进行集群测试。当我们在所有3个节点中启动cassandra时,它们形成一个集群,它们工作正常。

但是当我们使用“init 6”或“rebo​​ot”命令关闭一个节点时,重新启动的节点需要更多时间来加入群集,但是如果我们手动终止并启动cassandra进程,节点会立即加入群集而不会出现任何问题。

我们提供了所有3个IP作为种子节点,所有3个节点的集群名称相同,并且它们各自的IP作为监听地址。

请帮助我们解决此问题。

由于

更新 Cassandra - 3.9版

  1. 在进一步调查问题时,我们注意到了节点1(重新启动 节点)能够为两个节点(节点)发送“SYN”,“ACK2”消息 2,节点3)即使nodetool状态显示“节点2和3为 “DN”“仅在”节点1“中 在此处输入代码

  2. 10-15分钟后,我们发现Node中出现“连接超时”异常 2和3.从OutboundTcpConnection.java抛出(第311行) 它会触发状态更改事件到“节点1”并更改 称为“联合国”。

    if(logger.isTraceEnabled())           logger.trace(“写入{}的错误”,poolReference.endPoint(),e);

  3. 请告诉我们“节点2和3”中触发“连接TimeOut”异常的原因以及解决此问题的方法。

    我们认为此问题与https://issues.apache.org/jira/browse/CASSANDRA-9630

    类似

1 个答案:

答案 0 :(得分:0)

  

但是当我们使用“init 6”或“rebo​​ot”命令关闭一个节点时,重新启动的节点需要更多时间来加入群集,但是如果我们手动终止并启动cassandra进程,节点会立即加入群集而不会出现任何问题。

请记住,Cassandra会将所有内容写入提交日志,以确保在发生某些“插件故障”事件时的持久性。发生这种情况时,Cassandra会在启动时将存储在磁盘上的数据与提交日志中的数据进行协调。如果存在差异,则可能需要一段时间才能完成对帐。

这就是为什么在停止Cassandra之前运行这些命令很重要的原因:

nodetool disablegossip
nodetool drain

禁用八卦会确保您关闭的节点不会接受任何其他请求。 Drain确保提交日志中的任何内容都写入磁盘。完成后,您可以停止节点。然后节点重新启动应该更快。