[英]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.