Quorum/Witness

LifeKeeper Core の既存のフェイルオーバープロセスに Quorum/Witness機能を組み合わせることにより、ネットワーク全体にわたる障害の恐れがある環境において、より高い信頼度でシステムフェイルオーバーを実行できます。つまり スプリットブレイン の発生リスクを大幅に軽減しながら、ローカルサイトのフェイルオーバーと WAN 越しのノードへのフェイルオーバーを実行することができます。

Quorum

ネットワーク分断を考慮した分散システムにおいて、クラスター全体での合意を得るためにQuorumと呼ばれる概念があります。Quorumを持っているノードはクラスター内ノードの過半数での合意が得られるノードであり、リソースを起動することが許可されます。一方、Quorumを持っていないノードはクラスター内ノードの過半数での合意が得られないノードで、リソースを起動することは許可されません。これにより、スプリットブレインを抑止します。

Witness

通信障害が発生した場合、生存しているノードは、他のクラスターノードやQuorumデバイスからのステータスレポートを使って、障害が発生しているノードのステータスに関する「セカンドオピニオン」を取得することができます。このセカンドオピニオンを得るために使用されるノードを Witness ノード(もしくは Witness デバイス)と呼びます。また、このセカンドオピニオンを得ることを Witness チェックと呼びます。フェイルオーバーのタイミングを決定する際、Witnessノード(Witnessデバイス)は、プライマリーサーバーで障害が発生し、クラスターの一部でなくなったことを確認した場合のみ、バックアップサーバーでリソースを使用できるようにします。これにより、ノード間で発生する単純な通信障害が、稼働中のノードへのアクセスやパフォーマンス全体に影響を及ぼさない場合は、フェイルオーバーを回避するようにします。実際の運用では、LifeKeeperが起動した時やコミュニケーションパスが復旧した時に、Witnessノード(Witnessデバイス)に問い合わせを行います。なお、Witnessチェックを行うのは、Quorumを持っていることが前提です。

設定可能なコンポーネント

LifeKeeperは、QuorumとWitnessの2つの設定可能なコンポーネントを提供します。 デフォルトでは、QuorumとWitnessの動作はすべて無効になっており、アクティブにするにはユーザーが設定する必要があります。

これらのモードの動作は、 %LKROOT%/etc/default/LifeKeeper 設定ファイルでカスタマイズすることが可能です。QuorumモードとWitnessモードを個別に調整することもできます。LifeKeeperは、このファイルに「QUORUM_MODE=none」というエントリを追加します。これは後で手動で変更することができ、更新された設定は LifeKeeper の修復とアップグレードのインストールに渡って保持されます。

使用可能なQuorumモード

Quorumチェックのモードとして、次の3種類のモードが用意されています。これらは、 %LKROOT%/etc/default/LifeKeeper 設定ファイルの QUORUM_MODE で設定できます。

QUORUM_MODE 説明
none/off Quorum チェックが無効になっています。この設定では、常に Quorum チェック成功と判断されます。
majority majorityモードでは、QuorumチェックはLifeKeeper のコミュニケーションパスを介して行われます。クラスター内の過半数のノードと疎通ができることで、Quorum チェック成功と判断します。本モードは3ノード以上のクラスターで動作可能です。

ノード数が奇数のクラスターでは、majority モードを推奨します

majorityモードを選択した場合は、Witnessモードを「remote_verify」に設定する必要があります。
storage ノード数が偶数のクラスターでは、storageモードを推奨します。Quorumチェックでは、「共有ストレージ」(SMB共有またはS3 AWSバケット)ファイルの場所が使用されます。詳細については ストレージモード を参照してください。

なお、Quorumモードにstorageを選んだ場合、後述のWitnessモードも storage を選択する必要があります

使用可能なWitnessモード

Witnessチェックのモードとして、次の3種類のモードが用意されています。これらは、 %LKROOT%/etc/default/LifeKeeper 設定ファイルの WITNESS_MODE で設定できます。

WITNESS_MODE 説明
none/off (default) Witnessチェックが無効になっています。この設定では、常に障害が発生していないと判断されます。
remote_verify クラスター内の他のすべてのノードに対して障害が疑われるノードのステータスに関する意見を求めます。1つのノードでも障害なしと判断した場合は、Witnessチェックの結果は障害なしと判断します。すべてのノードが障害と判断した場合は、Witnessチェックの結果は障害が発生していると判断します。

Witnessモードにremote_verifyを選択した場合、quorum_modeを「majority」に設定する必要があります。
storage 共有ストレージをWitnessデバイスとして用いるWitnessモードです。共有ストレージデバイスは、クラスター内のノード間でステータス情報を「共有」するために使用されます。各ノードは自ノードの情報を更新し、他ノードの情報を読み込みます。あるノードが他のノードの情報が更新されていないことを検出した場合、そのノードは障害が発生していると判断されます。詳細については、 ストレージモード を参照してください。

なお、Witness モードに storage を選んだ場合、Quorumモードもstorageを選択する必要があります。詳細については、上記を参照してください。

サポートされる Quorum モードと Witness モードの組み合わせ

LifeKeeper は以下の組合せをサポートしています。

QUORUM_MODE
majority storage none/off
WITNESS_MODE remote_verify 利用可能
3 ノード
利用不可 利用可能
3 ノード
storage 利用不可 利用可能
2 ノード以上
4 ノード以下
利用不可
none/off 利用可能
3 ノード
利用不可 利用可能

Quorum を喪失したときの「OSU」アクション

LifeKeeper の Quorum 機能は、ノードが Quorum を失うと、ノードに対して「OSU」アクションを実行します。 %LKROOT%/etc/default/LifeKeeper のQUORUM_LOSS_ACTION 設定は osu に設定する必要があります。これは、LifeKeeper for Windows で使用できる唯一のオプションです。

OSUアクションにより、以下のようになります。

  • ノードで稼働中のリソースは使用できなくなります。
  • LifeKeeper は、QUORUM_QUARANTINE_SECS の設定で決められた期間シャットダウンし、その期間が終了すると再開されます。

フィードバック

お役に立ちましたか?

はい いいえ
お役に立ちましたか
理由をお聞かせください
フィードバックありがとうございました

このトピックへフィードバック

送信