2016-09-05 10 views
1

今日はAkka.netに出会ったばかりで、私のプロジェクトの1つに最適です。しかし、私はユーザーが自分の(ローカル)ネットワーク上の複数のマシンでアプリを起動するだけで、自動的にクラスタを形成するゼロ設定のクラスターが必要です。私は設定ファイルに入れるシードノードを持っていないので、これがAkka.netで可能かどうかは分かりません。Akka.net種なしのクラスター

シードノードをプログラムで設定するオプションがあれば、他のノードを見つけるためにブロードキャストできますが、すべてのノードが同じシードノードで始まることは実際には保証されません。シードノードBでノードAを開始でき、シードノードAでノードCを始めることは可能ですか?

答えて

2

クラスタプラグインを使用してコードからクラスタノードを設定することができます。つまり、Cluster.Get(Context.System).Join(nodeAddress)です。現在のノードをクラスタシードとして初期化したい場合は、それ自体に参加するように指示してください(cluster.SelfAddress)。

他のノードをクラスタに参加させるには、既にクラスタの一部である少なくとも1つのノードのアドレスを知る必要があります。だからあなたはA ⇒ BとC ⇒ Aに参加することができます。

+0

私はシードノードのないすべてのノードを起動しています。次に、応答した最初のノードにブロードキャストおよび「参加」します。しかし、彼らはクラスタを形成することができないように思われます。「シードノードは設定されておらず、手動でクラスタに参加する必要があります」、「結合」は何もしていないようです。ノード。しかし、あるノードを殺すと、他のノードは接続が拒否されたというエラーを報告します。 – Haukinger

+0

他のノードの俳優に正しく対応していないようです。たぶん[this](http://stackoverflow.com/questions/35634127/akka-net-access-remote-actors-in-cluster)StackOverflowの問題がお手伝いします。 – Horusiath

+0

私の問題を解決するかどうかは分かりません。自分自身を指すように設定されたシードノードを使用してノードを起動し、他のノードを起動する前に起動する時間があれば、すべてうまくいきます。私は1つの(dev - )マシン上のすべてのノードを実行していますが(もちろん、別のポートを使用しています)、これは問題を引き起こす可能性がありますか? – Haukinger

関連する問題