■ 本記事の目的
本記事は、Red Hat Enterprise Linux 7.x (Cent OS 7.x / Oracle Linux 7.x を含む)及び SUSE Linux Enterprise Server 12.x などの systemd によるサービス制御を導入している OS 上で、LifeKeeper を運用する場合に生じうる動作上の問題についてのご報告と、それに付随する操作上のお願い事項について記載しています。
■ 問題の概要と状況
OS のシャットダウンを実行した場合に、LifeKeeper の停止処理と、OS の systemd による停止処理が競合する場合があります。
詳細については以下にご報告いたしますが、あくまで OS のシャットダウン操作時のみ生じるものであり、OS 異常等のシステム障害に際しては、本問題は該当いたしませんのでご安心ください。
OS のシャットダウンの際に、LifeKeeper による停止処理が systemd よりも先に行われた場合は問題は生じませんが、systemd が LifeKeeper の保護対象を先に停止した場合、タイミングによっては LifeKeeper の監視処理(quickCheck) がsystemd による停止を障害と判断します。
先に停止したサービスの種類にもよりますが、障害検知後の一般的な動作としては、まず local recovery が行われ、それで回復しない場合はスタンバイノードへの failover を試みます。
また、表面上の動作としては同じですが、原因の発生箇所により、問題を2つのパターンに分けることができます。
1.
LifeKeeper 自身が依存しているサービスは、本来はLifeKeeperが終了した後で停止されなければなりませんが、systemd により LifeKeeper の停止処理とサービスの停止処理が並列的に行われます。
そのためタイミングによっては、LifeKeeper の停止処理中にエラーが生じます。
状況:
LifeKeeper for Linux v9.1.1 で解決済みです。
2.
LifeKeeper が保護しているリソースの起動/停止は、本来は LifeKeeper によって制御されなければなりませんが、OS 停止時に systemd による停止がLifeKeeperのリソース停止処理に先んじて実行されるケースがあります。
状況:
LifeKeeper for Linux v9.1.2 で解決済みです。
■ 問題の回避策
上記の問題は、いずれも v9.1.2 以降で解消していますので、該当バージョン未満をご利用の場合はバージョンアップをご検討ください。
改訂履歴
[公開日:2017年6月9日]