如何将种子节点添加到正在运行的akka​​-cluster

时间:2015-01-16 07:04:39

标签: java amazon-web-services akka java-8 akka-cluster

我正在尝试创建一个容错的akka​​-cluster,它将部署在AWS中。它是一个标准集群,具有3个种子节点SN1,SN2和SN3以及连接到一个种子节点的多个Akka系统。 SN有ASG,它会在一个人关闭的情况下旋转一个新实例。

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

我尝试了以下但没有运气

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

有没有人有关于如何将种子节点添加到正在运行的Akka群集的想法?

由于

3 个答案:

答案 0 :(得分:3)

请检查:

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

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

希望会有所帮助。

答案 1 :(得分:2)

我们最终通过zookeeper-seed插件注册了ip address:port到zookeeper。如果我没有弄错的话,插件会实现一个锁存器。

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

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

由于

答案 2 :(得分:0)

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

来自Akka scala-doc:

  

actor系统只能加入一次集群。额外的尝试将   被忽略了。当它成功加入后,必须重新启动它   能够加入另一个集群或再次加入同一集群。

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

Akka文档中的示例如下: https://doc.akka.io/docs/akka/current/cluster-usage.html#a-simple-cluster-example