[英]Akka Cluster Joining with DNS Load Balancing
查看akka群集文档 ,您似乎必须知道至少1个“种子节点”的服务器和端口值才能加入群集。 示例application.conf清楚表明开发人员在编写文件时需要知道“ host1”和“ host2”:
akka.cluster.seed-nodes = [
"akka.tcp://ClusterSystem@host1:2552",
"akka.tcp://ClusterSystem@host2:2552"]
但是,请考虑向DNS负载平衡器注册每个群集节点的可能性。 例如:可以实例化在名称“ foobar.cluster.com”后面已向负载均衡器注册的10个节点,以便负载均衡器将每个新连接发送到10个节点循环方式之一。
然后我可以将种子节点设置为"akka.tcp://ClusterSystem@foobar.cluster.com:2552"
吗?
换句话说, 是否可以使用动态的负载平衡名称来加入akka集群?
先验存在一个潜在的问题:在第一次尝试时,一个节点可能会成为种子节点。 解决此问题的一种可能方法是,将相同的种子节点值多次放入conf文件中,以获得最终连接到不同节点的高可能性:
akka.cluster.seed-nodes = [
"akka.tcp://ClusterSystem@foobar.cluster.com:2552",
"akka.tcp://ClusterSystem@foobar.cluster.com:2552",
"akka.tcp://ClusterSystem@foobar.cluster.com:2552"]
但是akka可能会将所有这些值都简化为一个调用,因为它们完全相同...
预先感谢您的考虑和回应。
可以,但是您必须自己进行DNS解析,然后以编程方式加入群集。 此处对此进行了一些描述: http : //doc.akka.io/docs/akka/current/scala/cluster-usage.html#Joining_to_Seed_Nodes
因此,您首先需要配置文件包含akka.cluster.seed-nodes = []
才能禁用自动加入。
然后,您需要解析foobar.cluster.com
以获得实际节点的列表, 01.foobar.cluster.com
, 02.foobar.cluster.com
,...
您将使用它们来加入集群: Cluster(system).joinSeedNodes(_list_of_nodes_with_port)
。
最后,请记住,当Akka绑定到的主机名和端口对与用于从外部连接到系统的“逻辑”主机名和端口对不同时 ,请记住。 这需要特殊的配置
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.