繁体   English   中英

Akka群集加入DNS负载平衡

[英]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.com02.foobar.cluster.com ,...

您将使用它们来加入集群: Cluster(system).joinSeedNodes(_list_of_nodes_with_port)

最后,请记住,当Akka绑定到的主机名和端口对与用于从外部连接到系统的“逻辑”主机名和端口对不同时 ,请记住 这需要特殊的配置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM