Akka 节点赢了';不要重新连接到种子

Akka 节点赢了';不要重新连接到种子,akka,akka-cluster,akka-remoting,Akka,Akka Cluster,Akka Remoting,我们在不同的AWS数据中心中有三个节点,其中一个是唯一的种子节点和单例的独占拥有者,通过在单例代理设置上使用.withDataCenter完成。通过先启动种子节点,然后启动其他节点,我们可以让集群按照设计的方式工作,但如果任何节点发生故障,让它们再次对话的唯一方法似乎是以相同的方式重新启动整个集群。我们希望让它们尝试重新连接到种子节点,并在可能的情况下恢复正常操作 当我取下非种子节点时,种子节点将其标记为不可访问,并开始定期记录以下内容: 与远程系统的关联[akka。tcp://applicat

我们在不同的AWS数据中心中有三个节点,其中一个是唯一的种子节点和单例的独占拥有者,通过在单例代理设置上使用
.withDataCenter
完成。通过先启动种子节点,然后启动其他节点,我们可以让集群按照设计的方式工作,但如果任何节点发生故障,让它们再次对话的唯一方法似乎是以相同的方式重新启动整个集群。我们希望让它们尝试重新连接到种子节点,并在可能的情况下恢复正常操作

当我取下非种子节点时,种子节点将其标记为不可访问,并开始定期记录以下内容:

与远程系统的关联[akka。tcp://application@xxx.xx.x.xxx:xxxx]已失败,地址现在为[5000]毫秒选通。原因:[与[akka]关联失败。tcp://application@xxx.xx.x.xxx:xxxx]]原因:[连接超时:/xxx.xx.x.xxx:xxxx]

很公平。但是,当我重新启动节点时,新启动的节点开始重复:

2018-01-29 22:59:09587[调试]:application-akka.actor.default-dispatcher-18-
现在是监制演员[akka://application/system/cluster/core/daemon/joinSeedNodeProcess-16#-1572745962]

2018-01-29 22:59:09587[调试]:application-akka.actor.default-dispatcher-3-
已启动(akka.cluster)。JoinSeedNodeProcess@2ae57537)

2018-01-29 22:59:09755[调试]:application-akka.actor.default-dispatcher-2-
停止

种子节点记录:

2018-01-29 22:56:25442[信息]:交流集群(akka://application)在application-akka.actor.default-dispatcher-4中-
集群节点[akka]。tcp://application@52.xx.xxx.xx:xxxx]dc[亚洲]-现有成员的新化身[成员(地址=akka。tcp://application@172.xx.x.xxx:xxxx,数据中心=印度尼西亚,状态=向上)]正在尝试加入。现有成员将从群集中删除,然后新成员将被允许加入。

2018-01-29 22:56:25443[信息]:交流集群(akka://application)在application-akka.actor.default-dispatcher-18中-
集群节点[akka]。tcp://application@52.xx.xxx.xx:xxxx]dc[asia]-标记不可访问节点[akka。tcp://application@172.xx.x.xxx:xxxx]作为[向下]

并在其后再三:

2018-01-29 22:57:41659[信息]:交流集群(akka://application)在application-akka.actor.default-dispatcher-18中-
集群节点[akka]。tcp://application@52.xx.xxx.xx:xxxx]dc[asia]-从节点[akka]发送InitJoinAck消息。tcp://application@52.xx.xxx.xx:xxxx]至[演员]阿克卡。tcp://application@172.xx.x.xxx:xxxx/system/cluster/core/daemon/joinSeedNodeProcess-8#-1322646338]

2018-01-29 22:57:41827[信息]:交流集群(akka://application)在application-akka.actor.default-dispatcher-18中-
集群节点[akka]。tcp://application@52.xx.xxx.xx:xxxx]dc[亚洲]-现有成员的新化身[成员(地址=akka。tcp://application@172.xx.x.xxx:xxxx,数据中心=印度尼西亚,状态=关闭)]正在尝试加入。现有成员将从群集中删除,然后新成员将被允许加入。


我觉得奇怪的是,日志显示了一些“将”发生的事情,而这些事情不会发生,现有成员被删除,新成员被允许加入。我一直在谷歌上搜索这条消息,但找不到一个解释,说明我可能需要做些什么才能真正做到这一点。

假设你在Akka.NET上,看起来你可能遇到了一个问题,在这个问题上,领导者一直试图删除旧的化身,让新的化身加入。在问题单中有一些关于放松心跳间隔的故障排除建议,这些建议可能会提供一些关于可能原因的见解

考虑到跨多个地理位置分散的数据中心的延迟通常较高,我将仔细研究的一个领域是


这似乎与报告的问题无关,但根据您显示的日志,不同数据中心的两个节点之间似乎存在时间差异。

Akka的多dc功能允许您拥有多个dc本地群集,它们是更大群集的一部分,每个dc有一个前导,这意味着运行一个三节点集群,其中每个节点都是一个单独的dc(因此在其自己的子集群中处于领先地位),这没有多大意义。不确定这是否与您的问题有关,但请注意,一个集群中至少有3个节点的常规建议也适用于这些子集群。