[Linux] Apache Recovery Kit の処理概要

Apache Recovery Kitが提供する監視機能と起動処理、停止処理についてご説明します。

対象製品
・Apache Recovery Kit (LifeKeeper for Linux)
※本処理概要は LifeKeeper for Linux v9.0.0に付属するリカバリキットをもとに作成しています。

監視機能
Apache Recovery Kitは以下の2つの項目を監視しています。

(1) PIDファイルが存在し、リソースインスタンスが持つhttpdのPIDと一致するかどうかを確認します。

具体的には、下記のPIDファイルから取得したPIDをもとにコマンドラインを発行し、
当該PIDがhttpdプロセスのものであることを確認します

PIDファイル: /var/run/httpd.${INSTANCE} .pid
コマンドライン: # ps h --cols 4096 $PID | fgrep httpd

※${INSTANCE} はApacheのリソースIDの先頭文字列”apache-“を省いたものです。

(2) 設定ファイル内に定義されたIP:PORTに対して、sessionを張ることができるかどうかを確認します。

具体的には、PerlのIO::Socketモジュールを用いてsessionが作成できることを確認します。

IO::Socket::INET->new ( Proto => “tcp”, PeerAddr => “<仮想IP>”, PeerPort => “<ポート番号>” );

いずれかの結果に問題があった場合、ローカルリカバリを開始します。
ローカルリカバリに失敗した場合に、待機系サーバへの切替処理に移行します。

起動処理
Apache Recovery Kitを通じてApacheリソースを起動する場合、以下の処理が実行されます。

(1) 設定ファイルから、SSLを使用するかどうかを確認します。

サーバ上のssl.confファイルの存在をもとに使用の有無を確認します。

(2) SSLの使用有無によって、下記の通り実行されるコマンドが異なります。

(2-1) SSLを使用する場合は、以下のコマンドを実行します。

$HTTPD_PATH $DOPTS -d “”$SERVER_ROOT”” -f “”$CONF_FILE”” -c “”SSLPassPhraseDialog exec:$ssl_exec”” -c “”PidFile $PIDFILE””

(2-2) SSLを使用しない場合は、以下のコマンドを実行します。

$HTTPD_PATH $DOPTS -c “”PidFile $PIDFILE”” -d “”$SERVER_ROOT”” -f “”$CONF_FILE””

尚、各変数には以下の値が格納されます。

$HTTPD_PATH : リソース作成時のApache(httpd)のバイナリのフルパス
$DOPTS :
$SERVER_ROOT : リソース作成時に指定したServerRootのパス
$CONF_FILE : 起動に使用するコンフィグレーションファイルのパス
$PID_FILE : PIDファイルのパス

※ RHEL4のデフォルトのApacheにて、ssl.confをincludeしてSSLを有効にしている場合は、-d オプションは利用されません。

(3) (2-1),(2-2)で実行したコマンドの戻り値を確認し、正常に終了したかどうかを判定します。

停止処理
Apache Recovery Kitを通じてApacheリソースを停止する場合、以下の処理が実行されます。

(1) PIDファイルを削除します。

# rm -f /var/run/httpd.${INSTANCE}.pid

(2) PIDにTERMシグナルを送ります。

# kill -TERM $PID

(3) プロセスが終了されたか確認します。

# ps h $PID

(4) プロセスが終了していなかった場合、PIDにKILLシグナルを送ります。

# kill -KILL $PID

※${INSTANCE} は Apache のリソースIDの先頭文字列 “”apache-“” を省いた文字列です。

回復処理
Apache Recovery Kitを通じてApacheリソースを再起動する場合、起動処理のみが実施されます。

具体的な処理は上述の「起動処理」をご参照ください。

関連資料
[Linux]Apache リソースの httpd ログに対する loglotate 設定方法
http://lk.sios.com/?p=5658


改訂履歴
[公開日:2010年01月29日]
[更新日:2011年06月01日]
[更新日:2016年11月25日] 各処理で実行されるコマンドラインを追加しました。

return top