代码之家  ›  专栏  ›  技术社区  ›  Piotr Czarnecki

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

  •  0
  • Piotr Czarnecki  · 技术社区  · 8 年前

    让我们想象一下这样的场景。我的akka集群中有三个节点(节点a、B、C)。每个节点部署到网络内的不同物理设备。

    所有这些节点都封装在Topshelf windows服务中。

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

    当我运行集群并停止节点(服务)B或C,然后重新启动它们时。节点正在重新连接,没有问题。

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

    这样的场景可以实现吗?如果是,那么我应该怎么做?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Bartosz Sypytkowski    8 年前

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

    关于你的情况,我可以想出几种解决方案:

    1. 非常常见的方法是在配置中定义多个种子节点,这样您的节点就不会成为单个故障点。只要至少有一个配置的种子节点处于活动状态,一切都应该正常工作。请记住 种子节点应在每个配置中以完全相同的顺序定义 .
    2. 如果“worker”节点具有静态分配的端点,则它们也可以用作种子节点。
    3. 由于可以从代码中初始化集群程序,因此也可以使用第三方服务作为节点发现服务。你可以用领事,我已经开始了 a project ,它提供了这样的功能。虽然它还没有出版,但如果它对你有帮助的话,请随意提供或贡献。