みなさん、こんにちは。
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の「ローカルリカバリー」機能についてご紹介させて頂きました。
リソース障害が発生した際、フェイルオーバーの前に試すことができる最小限の障害復旧機能として「ローカルリカバリー」があることを
ご理解頂けましたら幸いです。