Quorum/Witness Server Support Package for LifeKeeper
機能の概要
LifeKeeper Core の既存のフェイルオーバープロセスに Quorum/Witness Server Support Package for LifeKeeper(steeleye-lkQWK、以下 Quorum/Witness パッケージ)を組み合わせることにより、ネットワーク全体にわたる障害の恐れがある環境において、より高い信頼度でシステムフェイルオーバーを実行できます。つまり、「スプリットブレイン 」の発生リスクを大幅に軽減しながら、ローカルサイトのフェイルオーバーと WAN 越しのノードへのフェイルオーバーを実行することができます。
ネットワーク分断を考慮した分散システムにおいて、クラスター全体での合意を得るために Quorum と呼ばれる概念があります。Quorum を持っているノードはクラスター全体での合意が得られるノードであり、リソースを起動することが許可されます。一方、Quorumを持っていないノードはクラスター全体での合意が得られないノードで、リソースを起動することは許可されません。これにより、スプリットブレインを抑止します。そして、この Quorum を持っているかどうかを確認することを Quorum チェックと呼び、Quorum を持っている場合を Quorum チェック成功、Quorum を持っていない場合を Quorum チェック失敗と表現します。
通信障害が発生した時、障害が発生したノードと別の1台以上のノード(もしくは他のデバイス)を使って障害ノードのステータスについて「セカンドオピニオン」を取得することができます。このセカンドオピニオンを得るために使用されるノードを Witness ノード(もしくは Witness デバイス)と呼びます。また、このセカンドオピニオンを得ることを Witness チェックと呼びます。フェイルオーバー先となることができるノードは、Witness ノード(Witness デバイス)が障害となったノードのステータスに関して同じ意見である場合のみ、リソース起動が許可されます。これにより、ノード間で発生する単純な通信障害から発生するフェイルオーバーを回避し、全体のアクセスや、パフォーマンス、サービス中のノードに影響を与えないようにします。実際の運用では、LifeKeeperが起動した時やコミュニケーションパスが復旧した時にも、Witness ノード(Witness デバイス)に問い合わせを行います。なお、Witness チェックを行うのは、Quorum を持っていることが前提です。
パッケージのインストールと設定
Quorum/Witness 機能を利用するクラスターに参加するすべてのノード(Witness 専用ノードを含む)に Quorum/Witness パッケージをインストールする必要があります。Witness ノードに必要な唯一の設定は、適切なコミュニケーションパスを作成する ことです。Quorum モードを tcp_remote で使用する場合、/etc/default/LifeKeeper 設定ファイルの QUORUM_HOSTS に設定したホストには LifeKeeper をインストールする必要はありません。
Quorum/Witness 機能をセットアップする一般的なプロセスには以下の手順が含まれます。
- サーバーをセットアップし、他のサーバーとネットワーク通信ができることを確認します。
- サーバーに LifeKeeper をインストールします。その際、setupコマンドで「Use Quorum / Witness functions」を有効にして、Quorum/Witness パッケージもインストールしてください。
- Witness 専用ノードを含め、すべてのノード間でコミュニケーションパスを作成します。
- Quorum/Witnessの設定を行います。
上記の手順が完了すると、そのクラスターでは Quorum/Witness 機能が動作するようになり、フェイルオーバーが許可される前に、Quorum チェックおよび Witness チェックが行われます。
詳細な設定オプションについては、下の「設定可能なコンポーネント」セクションを参照してください。
注記: Quorum/Witness パッケージをインストールしたノードであれば、Quorum/Witness 機能のクラスターに参加できます。Witness 専用ノードとは、保護対象のリソースを持たず、他のすべてのノードとコミュニケーションパスが設定されているノードのことを指しています。
設定可能なコンポーネント
Quorum/Witness パッケージでは、Quorum モードと Witness モードの2つのモードを設定できます。デフォルトでは、Quorum/Witness パッケージをインストールすると、Quorum モードと Witness モードの両方のモードが有効になります。
これらのモードの動作は、/etc/default/LifeKeeper 設定ファイルでカスタマイズすることが可能です。Quorum モードと Witness モードを個別に調整することもできます。パッケージがインストールされると設定ファイルにはデフォルト設定が書き込まれ、 majority がデフォルトの Quorum モードに、 remote_verify がデフォルトの Witness モードになります。以下はその例です。
QUORUM_MODE=majority
WITNESS_MODE=remote_verify
使用可能な Quorum モード
Quorum チェックのモードとして、次の4種類のモードが用意されています。これらは、/etc/default/LifeKeeper 設定ファイルの QUORUM_MODE で設定できます。
majority (デフォルト) |
コミュニケーションパスを通じて疎通確認を行い、Quorum チェックを行います。クラスター内の過半数のノードと疎通ができることで、Quorum チェック成功と判断します。 本モードは3ノード以上のクラスターで動作可能です。2ノード構成の場合は、Witness 専用のノードを追加する必要があります。 詳細は「majority モード 」を参照してください。 |
tcp_remote | コミュニケーションパスから独立したホストに対して、指定されたポート上の TCP/IP サービスに接続確認を行い、Quorum チェックを行います。指定されたホストの過半数に接続できることで、Quorum チェック成功と判断します。 別途、接続確認用のホストが必要です。 詳細は「tcp_remote モード 」を参照してください。 |
storage | 共有ストレージを Witness デバイスとして用いる Quorum モードです。クラスター内のすべてのノードからアクセスできる共有ストレージを用いた合意システムで、共有ストレージを介してノードの情報交換を行います。共有ストレージにアクセスできることで、Quorum チェック成功と判断します。 本モードは2ノードのクラスターから動作可能で、最大4ノードまでサポートされます。別途、共有ストレージが必要です。 詳細は「storage モード 」を参照してください。 なお、Quorum モードに storage を選んだ場合、後述の Witness モードも storage を選択しなければなりません。 |
none/off | Quorum チェックが無効になっています。この設定では、常に Quorum チェック成功と判断されます。 |
使用可能な Witness モード
Witness チェックのモードとして、次の3種類のモードが用意されています。これらは、/etc/default/LifeKeeper 設定ファイルの WITNESS_MODE で設定できます。
remote_verify (デフォルト) |
クラスター内の他のすべてのノードに対して障害が疑われるノードのステータスに関する意見を求めます。1つのノードでも障害なしと判断した場合は、Witness チェックの結果は障害なしと判断します。すべてのノードが障害と判断した場合は、Witness チェックの結果は障害が発生していると判断します。 |
storage | 共有ストレージを Witness デバイスとして用いる Witness モードです。共有ストレージに書き込まれた情報を定期的に確認し、更新されていれば障害なし、更新が止まれば障害が発生していると判断します。 詳細は「storage モード 」を参照してください。 なお、Witness モードに storage を選んだ場合、先述の Quorum モードも storage を選択しなければなりません。 |
none/off | Witness チェックが無効になっています。この設定では、常に障害が発生していると判断されます。 |
使用可能な Quorum モードと Witness モードの組み合わせ
以下の表の組み合わせが可能です。
利用可能 3ノード以上 |
利用可能 3ノード以上 |
利用不可 | 利用可能 3ノード以上 |
||
利用不可 | 利用不可 | 利用可能 2ノード以上 4ノード以下 |
利用不可 | ||
利用可能 3ノード以上 |
利用可能 2ノード以上 |
利用不可 | 利用可能 |
Quorum を喪失したときに利用可能なアクション
Quorum/Witness パッケージでは、Quorum を喪失したときにシステムがどのように応答すべきかについて3種類のオプションを提供しています。“fastboot”、“fastkill” および “osu” です。これらのオプションは、/etc/default/LifeKeeper 設定ファイルの QUORUM_LOSS_ACTION 設定によって選択できます。3つのオプションはすべてそのシステムのリソースをサービス休止状態にしますが、それぞれ異なる動作をします。
fastboot | (コミュニケーションパスの障害により)Quorum の喪失が検出されると、システムは 直ちに リブートします。これは過激な方法ですが、確実にシステムを外部のリソースから素早く切り離すことができます。ストレージレベルのレプリケーションなど、多くの場合にリソースをこのように即座にリリースすることが望まれます。 このオプションには、以下の 2 つの重要な注意点があります。
|
fastkill (デフォルト) | fastboot オプションに非常に似ていますが、システムは Quorum を喪失したときにハードリブートするのではなく、 直ちに 停止します。 fastboot オプションと同様に(ディスクの同期などの)シャットダウンタスクは一切実行されません。システムは手動で起動する必要があります。その後システムは、ストレージとのネゴシエーションやリソースへのアクセスなどを含む通常の起動ルーチンを実行しながら復帰します。 |
osu | 最も穏健なオプションです。Quorum を喪失したシステムはそのまま稼働しますが、システム上のリソースはサービス休止状態にされます。一部のクラスター構成ではこの方法で十分ですが、他のクラスター構成では保護能力不足だったり応答が遅すぎる場合があります。 |
このトピックへフィードバック