サーバの監視コマンドのサンプルファイルを,HAモニタサンプルファイル用ディレクトリの下にpatrol.sh というファイル名で格納していますので,必要に応じて利用してください。作成したサーバの監視コマンドは,サーバ対応の環境設定のpatrolcommandオペランドに指定します。
サーバの監視コマンドは,次の点を考慮して作成してください。
- プログラムが異常終了した場合は,サーバの監視コマンドはループを抜け,自身をexitします。
サーバの監視コマンドの終了を検知しても,待機サーバがない実行サーバは停止しません。そのため,系切り替えや実行サーバの再起動をしたいときは,オペレータが次の操作をする必要があります。
- 系切り替えをしたい場合
- モニタモードのサーバ停止コマンド(monendコマンド)で実行サーバを停止する
- 待機系のサーバを実行サーバとして起動するか,または待機系で待機サーバを起動したあと計画系切り替えコマンド(monswapコマンド)で系切り替えをする
- 実行サーバ再起動をしたい場合
- モニタモードのサーバ停止コマンド(monendコマンド)で実行サーバを停止する
- モニタモードのサーバ起動コマンド(monbeginコマンド)で実行サーバを起動したあと,待機系で待機サーバを起動する
- HAモニタは,サーバの監視コマンドに対してSIGTERMシグナルを送信することで監視コマンドを停止させます。
SIGTERMシグナルを受信しない設定にはしないでください。
次に,Bシェルによる監視コマンドの作成例を示します。
#!/bin/sh
# The object program to monitor
PROGRAM=/home/xxxx/yyyy
# The definition of command
PS=/bin/ps
GREP=/bin/grep
# Main loop
while true
do
# Is the object program to monitor operating ?
EXIST=`$PS -efl | $GREP $PROGRAM | $GREP -v grep`
# When the object program to monitor is not operating,
# the variable EXIST is empty.
if [ "$EXIST" = "" ]
then
# This patrol command terminates, because the object program
# to monitor is not operating.
exit
fi
# The monitoring is continued, because the object program
# to monitor is operating.
sleep 5
done |
前述のコーディング例では,サーバの監視コマンド内でループを持ち,そのループ内でプログラムのプロセスがあるかどうかを確認します。プロセスの確認には,OSのpsコマンドの出力などを使用します。プログラムのプロセスがあるならばループを継続し,プロセス生存の確認を続行します。