5

我正在尝试创建一个容错的 akka 集群,它将部署在 AWS 中。它是一个标准集群,具有 3 个种子节点 SN1、SN2 和 SN3 以及连接到一个种子节点的多个 Akka 系统。SN 具有 ASG,它将在一个新实例出现故障时旋转一个新实例。

我知道如果 SN1 发生故障,系统将故障转移到其他 SN(种子节点)。但是如何在不停止集群的情况下无缝注册现在具有新 IP 地址的 SN1。

我尝试了以下没有运气

  • Cluster.joinseednodes 仅在启动时起作用
  • 每个 SN 后面的 ELB 都不起作用。Akka 无法连接到 ELB

有没有人知道如何将种子节点添加到正在运行的 Akka 集群中?

谢谢

4

3 回答 3

4

请检查:

http://chrisloy.net/2014/05/11/akka-cluster-ec2-autoscaling.html

在 scala 中,但也在使用自动缩放,并解释了如何找到您的新 IP (S1) 和其余 ips (S2...) 并加入它们。

希望会有所帮助。

于 2015-02-16T21:09:56.957 回答
3

我们最终通过 zookeeper-seed 插件将 ip address:port 注册到 zookeeper。如果我没记错的话,该插件实现了一个闩锁。

基本上每个 aka 系统都从 zookeeper 获取系统列表。然后它将自己从列表中删除并使用新列表作为其种子节点。

如果我有时间,我会尝试写一些关于实现 24 系统 akka 集群的经验教训。

谢谢

于 2015-05-12T13:10:35.970 回答
0

该问题的答案不是,您不能将种子节点添加到正在运行的 Akka 集群。

来自 Akka scala-doc:

一个actor系统只能加入一个集群一次。其他尝试将被忽略。成功加入后,必须重新启动它才能加入另一个集群或再次加入同一个集群。

但是您可以启动节点并连接到已创建的种子节点之一,并将动态添加到集群中。

Akka 文档中的一个示例在这里: https ://doc.akka.io/docs/akka/current/cluster-usage.html#a-simple-cluster-example

于 2017-12-12T14:32:14.883 回答