【问题标题】:Akka.net Cluster without seeds没有种子的 Akka.net 集群
【发布时间】:2016-09-05 19:04:37
【问题描述】:

我今天刚接触到 Akka.net,它看起来非常适合我的一个项目。但我需要一种零配置集群,用户只需在其(本地)网络上的多台机器上启动应用程序,它们就会自动形成一个集群。我不确定 Akka.net 是否可以做到这一点,因为我不会将种子节点放入配置文件中。

我猜,如果可以选择以编程方式设置种子节点,我可以通过广播来查找其他节点,但并不能真正保证所有节点都以相同的种子节点集开始。是否可以用种子节点 B 启动节点 A,用种子节点 A 启动节点 C 等等?

【问题讨论】:

    标签: akka.net akka.net-cluster


    【解决方案1】:

    您可以使用集群插件(即Cluster.Get(Context.System).Join(nodeAddress))从代码中设置集群节点。如果要将当前节点初始化为集群种子,只需命令它加入自身 (cluster.SelfAddress)。

    为了将任何其他节点加入集群,您只需要知道至少一个节点的地址,该节点已经是集群的一部分。所以是的,您可以在您描述的场景中加入 A ⇒ B 和 C ⇒ A。

    【讨论】:

    • 我正在启动所有没有种子节点的节点,然后向第一个回复的人广播和Join。但他们似乎无法形成一个集群,他们都说“没有配置种子节点,需要手动加入集群”,而Join 似乎没有做任何事情,即消息没有路由到其他节点。但是如果我杀死一个节点,其他节点会报告连接被拒绝的错误。
    • 这听起来像是您没有正确处理其他节点上的参与者。也许this StackOverflow 问题会对您有所帮助。
    • 不确定,这是否能解决我的问题,因为如果我启动 一个 节点的种子节点配置为指向自身并给它时间启动在开始其他人之前,一切正常。我在一台(开发)机器上运行所有节点(当然,使用不同的端口),这会导致问题吗?
    • 您需要至少有一个节点加入自身并等待该过程完成。否则集群不会被初始化。
    • 这是个坏消息,因为我想我不能在多个节点上这样做,否则我会得到多个独立的集群?
    猜你喜欢
    • 2016-06-08
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 2016-03-02
    • 2020-02-07
    • 1970-01-01
    相关资源
    最近更新 更多