我正在尝试创建一个容错的akka-cluster,它将部署在AWS中。它是一个标准集群,具有3个种子节点SN1,SN2和SN3以及连接到一个种子节点的多个Akka系统。 SN有ASG,它会在一个人关闭的情况下旋转一个新实例。
我知道如果SN1失败,系统将故障转移到其他SN(种子节点)。但是如何在不停止群集的情况下无缝地注册现在具有新IP地址的SN1。
我尝试了以下但没有运气
有没有人有关于如何将种子节点添加到正在运行的Akka群集的想法?
由于
答案 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