1

いくつかのクラスターといくつかのUNIXネットワークデーモンがあります。このデーモンは各クラスターノードで開始されますが、アクティブにできるのは1つだけです。

アクティブなデーモンが中断すると(ノードのプログラムが中断するかどうかに関係なく)、他のノードがアクティブになる必要があります。

考えられるアルゴリズムはほとんど考えられませんが、これについてはすでに研究が行われているものと、すぐに使えるアルゴリズムがあると思いますか?私は正しいですか?答えを教えてもらえますか?

ありがとう。

4

1 に答える 1

1

Jgroups は、Java ネットワーク スタックでありDistributedLockManager、サポートの種類とクラスター投票機能が含まれています。これらにより、任意の数の UNIX デーモンが、誰がアクティブであるべきかについて合意することができます。すべてのノードがロックを取得しようとしている可能性があり (たとえば)、アプリケーションまたはノードが失敗するまで、成功するのは 1 つのみです。

Jgroup には、特定の通信チャネルのコーディネーターの概念もあります。一度に 1 つのノードのみがコーディネーターになることができ、ノードに障害が発生すると、別のノードがコーディネーターになります。あなたがコーディネーターであるかどうかをテストするのは簡単です。

参照: http://www.jgroups.org/javadoc/org/jgroups/blocks/DistributedLockManager.html

これを自分で実装する場合は、覚えておくべきことがたくさんあります。

  • 各ノードには、クラスターの一貫したビューが必要です。
  • すべてのノードは、残りのすべてのノードにオンラインであることを通知する必要があります (おそらくマルチキャストを使用)。
  • (AP またはノードの障害が原因で) オフラインになったノードは、他のすべてのノードの「ビュー」から削除する必要があります。
  • 次に、IPが最も低いノードまたは何かをアクティブノードにすることができます。
  • これが適切でない場合は、ノードが誰がアクティブであるかに同意できるように、ある種の投票交換が必要になります。次のようなもの: http://en.wikipedia.org/wiki/Two-phase_commit_protocol
于 2010-06-03T17:36:07.297 に答える