リソース障害時の“もうひとつの復旧手段” ローカルリカバリーとは?

みなさん、こんにちは。
SCSK株式会社の津田です。

LifeKeeperについて少しでもご存じの方であれば、
障害発生時には「フェイルオーバー」によって高可用性を確保する、という理解をお持ちではないでしょうか。
ノード障害が発生した際にはその通りですが、IPアドレスやアプリケーション等のリソースで障害が発生した際には、
「フェイルオーバー」の前に自ノードでリソースの復旧を試みる「ローカルリカバリー」という機能があります。
本記事では、その「ローカルリカバリー」についてご紹介します。

!おさらい!
●リソースとは:LifeKeeperで監視や制御を行うアプリケーション、IPアドレス、ボリューム等の単位。
●フェイルオーバーとは:稼働系ノードでアクティブであったリソースやサーバー、ネットワークにおいて障害や異常終了が
            発生したときに待機系ノードへ自動的に切り替えを行う動作。

なぜローカルリカバリ?

実はフェイルオーバーには留意事項があります。
フェイルオーバーが発生すると、稼働系ノードで各リソースが停止し待機系ノードで起動する為、数秒から数分のシステム停止が避けられず、業務への影響を招く可能性があります。
リソース障害でフェイルオーバーを行う場合、依存関係によって正常に稼働していたリソースまで一時停止の影響を受けることになります。このような性質を持つフェイルオーバーを最小限に抑える機能の一つとして、ローカルリカバリーは利用できます。

ローカルリカバリーは、LifeKeeperのリソース監視処理で障害を検知した後で、待機系ノードへのフェイルオーバーを実施する前に自ノード上で障害リソースの再起動を試みる機能です。リソース単位でまず復旧を試みることで、他の正常なリソースの停止やフェイルオーバーによるシステム停止を最小限に抑えることができます。
ローカルリカバリーはリソース単位で有効/無効が設定が可能です。もしローカルリカバリーが失敗した場合でも、フェイルオーバーが実行されますので2段構えで障害復旧が行われます。

<ローカルリカバリー有効時のリソース障害フロー>

  

<ローカルリカバリ無効時のリソース障害フロー>

 

ローカルリカバリー設定方法

ローカルリカバリーの有効/無効の設定方法は、LifeKeeper for Linux、LifeKeeper for Windowsで異なりますが、
それぞれリソース毎、ノード毎に設定を行うことが可能です。

LifeKeeper for Linux

対象のリソース作成後、以下コマンドから設定が可能です。
※デフォルトは有効状態

<有効化する場合>

以下コマンドを実行する。
/opt/LifeKeeper/bin/lkpolicy –set-policy LocalRecovery –on tag=<リソースタグ>
※コマンド実行後は何も出力されません。
※クラスタ内のノード毎に設定する必要があります。

<無効化する場合>

以下コマンドを実行する。
/opt/LifeKeeper/bin/lkpolicy –set-policy LocalRecovery –off tag=<リソースタグ>
※コマンド実行後は何も出力されません。
※クラスタ内のノード毎に設定する必要があります。

<設定確認方法>

以下コマンドを実行する。
/opt/LifeKeeper/bin/lkpolicy -gv

・コマンド実行結果例

※上記赤枠で各リソース毎のローカルリカバリー設定が確認できます。(ON:有効、OFF:無効)
※クラスタ内のノード毎に確認する必要があります。

LifeKeeper for Windows

WindowsではIPリソースとそれ以外のリソースで設定方法が異なります。

<IPリソースで有効化/無効化する場合>

IPリソース作成時の設定項目[ローカルリカバリー]にて設定が可能です。

プルダウンより、はい/いいえを選択し、そのままリソース作成を進めます。
※リソース作成後に有効/無効を変更する場合は、IPリソースの再作成が必要となります。

 
<IPリソース以外のリソースで有効化/無効化する場合>

リソース作成後にLifeKeeperGUIから設定が可能です。
※デフォルトは有効状態

(1)LifeKeeperGUIにて、ローカルリカバリーの設定を行いたいリソース上で右クリックし、「ローカルリカバリ―」を選択します。

(2)ノード名を選択し、[次へ]を選択します。
※クラスタ内のノード毎に設定する必要があります。

(3)プルダウンより有効/無効を選択し、[変更]を選択します。

 

<設定確認方法>

コマンドプロンプトにて以下コマンドを実行する。
C:\LK\Bin\ins_list.exe -f /

・コマンド実行結果例

※上記赤枠(”/”区切りで後ろから2つ目のフィールド)で各リソース毎のローカルリカバリー設定が確認できます。(1:有効、0:無効)
※クラスタ内のノード毎に確認する必要があります。

 

注意事項

ローカルリカバリーを検討している場合、以下の点にご注意ください。

LifeKeeper for WindowsのIPリソースではリソース作成後のローカルリカバリー有効/無効が変更出来ません。
 変更の必要がある場合はリソースの再作成を行い、作成時の設定の中でローカルリカバリー有効/無効を指定してください。

ボリュームリソースでは、ローカルリカバリーの機能は利用できません。

ローカルリカバリーは、成功すればフェイルオーバーが不要となりリカバリーに要する時間の短縮となりますが、
 失敗した場合は失敗後にフェイルオーバーが実施されるため、障害が発生したリソース(サービス)の停止時間が長くなってしまいます。
 そのうえで”ローカルリカバリー、フェイルオーバーの二段構えで障害復旧を行う”、”フェイルオーバー前にローカルリカバリーを行う
 ことで業務影響を可能な限り抑える”、”ローカルリカバリーが失敗するケースを考慮して、初めからフェイルオーバーを行うようにする”
 等、各システムの状況やリソース構成により適宜有効/無効をご検討頂ければと思います。

さいごに

今回はLifeKeeperの「ローカルリカバリー」機能についてご紹介させて頂きました。
リソース障害が発生した際、フェイルオーバーの前に試すことができる最小限の障害復旧機能として「ローカルリカバリー」があることを
ご理解頂けましたら幸いです。

詳しい内容をお知りになりたいかたは、以下のバナーからSCSK Lifekeeper公式サイトまで
タイトルとURLをコピーしました