2017-03-24 6 views
6

akka cluster documentationを参照すると、クラスタに参加するための少なくとも1つの "シードノード"のサーバの値が&であることがわかります。 DNSのロードバランサで、各クラスタノードを登録する可能性を検討し、AkkaクラスタとDNSロードバランシングの併用

akka.cluster.seed-nodes = [ 
    "akka.tcp://[email protected]:2552", 
    "akka.tcp://[email protected]:2552"] 

しかし:例application.confは明らかに開発者がファイルを書くときに「HOST1」と「HOST2」を知っている必要があることを示しています。たとえば、「foobar.cluster.com」という名前の後ろにロードバランサーで登録されている10個のノードをインスタンス化し、ロードバランサが10個のノードのいずれかに新しい接続をラウンドロビン形式で送信するようにできます。

シードノードを"akka.tcp://[email protected]:2552"に設定できますか。

つまり、ダイナミックロードバランシングの名前を使用してakkaクラスタに参加することはできますか。

先験的に1つの潜在的な問題があります。ノードは、最初の試行でシードノードとして自分自身を獲得する可能性があります。この問題に対する一つの潜在的な解決策は最終的に別のノードに接続している確率が高い取得するためにconfファイルで複数回、同じシードノードの値を入れている:

akka.cluster.seed-nodes = [ 
    "akka.tcp://[email protected]:2552", 
    "akka.tcp://[email protected]:2552", 
    "akka.tcp://[email protected]:2552"] 

をしかし、アッカはちょうどにそれらのすべての値を減らすことができます彼らはまったく同じものなので、1回限りのコールです。

ありがとうございました。

答えて

2

自分でDNS解決を行ってから、プログラムでクラスターに参加する必要があります。 http://doc.akka.io/docs/akka/current/scala/cluster-usage.html#Joining_to_Seed_Nodes

自動結合を無効にするには、まず構成ファイルにakka.cluster.seed-nodes = []を含める必要があります。 Cluster(system).joinSeedNodes(_list_of_nodes_with_port)

その後は、...あなたがクラスタに参加するためにそれらを使用する

実際のノード、すなわち、01.foobar.cluster.com02.foobar.cluster.comのリストを取得するにはfoobar.cluster.comを解決する必要があります。

最後に覚えておいてください。the hostname and port pair that Akka binds to will be different than the "logical" host name and port pair that is used to connect to the system from the outside. This requires special configuration

関連する問題