我们在RHEL 7.2版本中配置了3个节点cassandra集群,我们正在进行集群测试。当我们在所有3个节点中启动cassandra时,它们形成一个集群,它们工作正常。
但是当我们使用“init 6”或“reboot”命令关闭一个节点时,重新启动的节点需要更多时间来加入群集,但是如果我们手动终止并启动cassandra进程,节点会立即加入群集而不会出现任何问题。
我们提供了所有3个IP作为种子节点,所有3个节点的集群名称相同,并且它们各自的IP作为监听地址。
请帮助我们解决此问题。
由于
更新 Cassandra - 3.9版
在进一步调查问题时,我们注意到了节点1(重新启动 节点)能够为两个节点(节点)发送“SYN”,“ACK2”消息 2,节点3)即使nodetool状态显示“节点2和3为 “DN”“仅在”节点1“中 在此处输入代码
10-15分钟后,我们发现Node中出现“连接超时”异常 2和3.从OutboundTcpConnection.java抛出(第311行) 它会触发状态更改事件到“节点1”并更改 称为“联合国”。
if(logger.isTraceEnabled()) logger.trace(“写入{}的错误”,poolReference.endPoint(),e);
请告诉我们“节点2和3”中触发“连接TimeOut”异常的原因以及解决此问题的方法。
我们认为此问题与https://issues.apache.org/jira/browse/CASSANDRA-9630
类似答案 0 :(得分:0)
但是当我们使用“init 6”或“reboot”命令关闭一个节点时,重新启动的节点需要更多时间来加入群集,但是如果我们手动终止并启动cassandra进程,节点会立即加入群集而不会出现任何问题。
请记住,Cassandra会将所有内容写入提交日志,以确保在发生某些“插件故障”事件时的持久性。发生这种情况时,Cassandra会在启动时将存储在磁盘上的数据与提交日志中的数据进行协调。如果存在差异,则可能需要一段时间才能完成对帐。
这就是为什么在停止Cassandra之前运行这些命令很重要的原因:
nodetool disablegossip
nodetool drain
禁用八卦会确保您关闭的节点不会接受任何其他请求。 Drain确保提交日志中的任何内容都写入磁盘。完成后,您可以停止节点。然后节点重新启动应该多更快。