スプリットブレインリカバリー NCache 100%の稼働時間

NCache .NET用の非常に高速でスケーラブルなインメモリ分散キャッシュです。 .NET Core。 時間の大部分、 NCache ミッションクリティカルなアプリケーションの実稼働環境で実行されます。 結果として、 高可用性 100%の稼働時間は、 NCache。 そして、 NCache さまざまな機能を通じて、この分野で非常に優れています。

これらの高可用性機能のXNUMXつは、スプリットブレインの検出と回復であり、ダウンタイムを防ぎます。

キャッシュクラスターのスプリットブレインとは何ですか?

NCache を作成します 自己修復動的キャッシュクラスター TCPを介して相互に通信する複数のサーバーで構成されます。 すべてのキャッシュサーバーはクラスター内で相互接続され、クラスターメンバーシップは実行時に維持され、すべてのキャッシュサーバーだけでなくすべてのキャッシュクライアントにも伝達されます。

ただし、他の分散システムと同様に、 NCache クラスターは、XNUMXつ以上のキャッシュサーバーがクラスター内の残りのサーバーから切断されているが、両方のサーバーセットが実行を継続している状況に直面する可能性があります。 これは通常、ネットワークの不具合や問題が原因で発生します。

これが発生すると、キャッシュサーバーの各セットは、それ自体を元のキャッシュクラスターの存続サーバーと見なし、他のキャッシュサーバーのセットがダウンしたと見なします(したがって、医学用語では、脳の左側がダウンしたことを意味するスプリットブレインという用語脳の右側についてはわかりません)。 キャッシュクライアントも同様の方法で分割するか、元のクラスターメンバーシップに基づいてすべてのキャッシュサーバーと通信し続けることができます。

これは明らかに健康で正常な状態ではなく、エラーにつながります キャッシュ操作 そして最も重要なのは、データの整合性の問題です。 各「分割クラスター」には、クライアントによって個別に更新される独自のデータのコピーがあります。 また、同期せずに同じデータのXNUMXつ以上のコピーが更新されることになります。

スプリットブレインはどのように検出されますか?

NCache スプリットブレインが発生したことを自動的に検出する機能があります。 クラスターメンバーシップは、クラスター内のすべてのキャッシュサーバーで維持されます。 したがって、スプリットブレインの状況が原因でクラスターがXNUMXつ以上のサブクラスターに分割されると、各サブクラスターはそれが存続しているクラスターであると見なし、データの処理を続行します。

ただし、同時に、異常な方法でクラスターを離れた他のキャッシュサーバーがあることも認識しています。 通常の方法は、キャッシュ管理者が NCache ツール クラスターからキャッシュサーバーを削除します。 そのため、各サブクラスターは「失われたサーバー」との再接続を試み続けます。 同時に、各サブクラスター イベントをログに記録 元のメンバーの一部が残っていることを示すWindowsイベントログに。 したがって、スプリットブレインの場合、 NCache 管理者には、ほとんどすべてのキャッシュサーバーの「ノードが残っている」イベントが表示されます。

スプリットブレインが実際に発生したという事実を知るのは、スプリットサブクラスター間のネットワーク接続が復元されたときだけです。 この時まで、彼らは彼らのメンバーの何人かがクラスターを去ったと信じ続けています。

スプリットブレインが発生したことに気付くと、各サブクラスターはWindowsイベントログにイベントを記録し、キャッシュ管理者に通知することもできます。 電子メール通知 スプリットブレインが発生したこと。

スプリットブレイン自動回復はどのように機能しますか?

NCache スプリットブレインからの自動回復を構成できます。 あなたがそうするならいつでも NCache スプリットブレインを検出すると、自動的に回復します。 スプリットブレインの回復を可能にする config.ncconf を追加して 下のタグ 鬼ごっこ。 次に、有効化フラグをtrueに変更し、スプリットブレインの検出間隔を秒単位で設定できます。

<cache-settings...>
  <split-brain-recovery enable="True" detection-interval="60"/>
</cache-settings>

クラスターがXNUMXつ以上のサブクラスターに分割され、その後ネットワーク接続が復元されると、最終的にスプリットブレインが発生したことに気付きます。 この時点で、ユーザーが自動回復を構成している場合は、すべてのサブクラスターが相互にネゴシエートして、どのサブクラスターを「マスタークラスター」にし、残りのサブクラスターをこの「マスター」に参加させるかを決定します。データを破棄し、既存のクラスターに参加する新しいノードであるかのように動作することで、「クラスター」を実現します。

どのサブクラスターを「マスター」にするかを決定するために使用されるルールは単純です。 これは、メンバーノードの数が最も多いサブクラスターです。 また、複数のサブクラスターに同数のメンバーノードがある場合、コーディネーターのIPアドレスが最小のサブクラスターが優先され、「マスタークラスター」になります。 そして、残りのサブクラスターがそれに参加し、最終的には元のクラスターのサイズに相当するXNUMXつの大きなクラスターになります。

次はどうする?

お問い合わせ(英語)

電話
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。