2017-11-20 6 views
0

このようなシナリオを想像してみましょう。私はakkaクラスター内に3つのノードを持っています(ノードA、B、C)。各ノードは、ネットワーク内の別の物理デバイスに配置されます。シードノードの再起動後にクラスタノードを再結合する

これらのノードはすべて、Topshelfウィンドウサービス内にラップされています。

ノードAは自分のシードノードであり、他のノードはポートが指定された単純な「ワーカー」ノードです。

クラスタを実行してノード(サービス)BまたはCを停止し、再起動します。ノードは問題なく再結合しています。

他のシナリオにも対応できるかどうか質問したいと思います。シードノード(ノードA)を停止すると、他のノード(サービスはまだ稼働していますが、ノードサービスAを再起動します)を行います。ノードB、Cをクラスタに再結合して、

このようなシナリオは実装できますか?はいの場合、どうすればいいですか?

答えて

1

Akka.NETクラスタでは、任意のノードがクラスタの一部である限り、他のノードのシードノードとして機能できます。 「シード」は構成の単なるものなので、クラスタの一部である既知のノードアドレスのリストを定義することができます。

  1. かなり一般的なアプローチは、あなたのノードが単一ポイントとして機能しないように、コンフィギュレーションに複数のシードノードを定義することです:

    あなたのケースについては、私は考えることができるいくつかのソリューションがあります失敗の構成されたシードノードの少なくとも1つが生存している限り、すべて正常に動作するはずです。各コンフィギュレーションでシードノードのシードノードを正確に同じ順序で定義する必要があります()。

  2. "ワーカー"ノードに静的にエンドポイントが割り当てられている場合は、シードノードとしても使用できます。
  3. プログラム可能なクラスタをコードから初期化できるため、サードパーティのサービスをノード検出サービスとして使用することもできます。つまり、領事を使用することができます - 私はa projectを開始しました。これはそのような機能を提供します。それはまだ公開されていませんが、それがあなたを助けるならば、それをフォークするか貢献してください。
関連する問題