重新启动种子节点后重新加入群集节点

时间:2017-11-20 13:15:06

标签: akka.net akka-cluster

让我们想象一下这种情况。我的akka​​集群中有三个节点(节点A,B,C)。每个节点都部署到网络内的不同物理设备。

所有这些节点都包含在Topshelf Windows服务中。

节点A是我的种子节点,其他节点只是指定端口的“工作”节点。

当我运行集群并停止节点(服务)B或C然后重新启动它们。节点重新加入,没有任何问题。

我想问一下是否有可能处理其他情况。当我停止种子节点(节点A),其他节点 - 服务仍在运行然后我重新启动节点服务A - 我想让节点B,C重新加入集群并使整个生态系统再次运行。

这种情况是否可以实施?如果是,那我该怎么做?

1 个答案:

答案 0 :(得分:1)

在Akka.NET集群中,任何节点都可以作为其他节点的种子节点,只要它是集群的一部分即可。 “种子”只是一种配置,因此您可以定义一个众所周知的节点地址列表,这些地址是集群的一部分。

关于你的案例,我可以想到几个解决方案:

  1. 相当常见的方法是在配置中定义多个种子节点,以便您的节点不会作为单点故障。只要至少有一个配置的种子节点存活,一切都应该正常工作。请记住,种子节点应按照完全相同的顺序在每个配置中定义
  2. 如果您的“worker”节点具有静态分配的端点,它们也可以用作种子节点。
  3. 由于您可以从代码初始化集群programificaly,因此您还可以将第三方服务用作节点发现服务。你可以使用ie consul - 我已经开始a project,它提供了这样的功能。虽然它尚未发布,但如果有帮助,请随意分享或贡献。