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 は以下の組合せをサポートしています。
|
|||||
---|---|---|---|---|---|
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 の設定で決められた期間シャットダウンし、その期間が終了すると再開されます。
このトピックへフィードバック