6.9.3 サーバの監視コマンドの作成

サーバの監視コマンドは,プログラムの状態を監視するコマンドです。HAモニタでは,サーバの監視コマンドを作成することによって,サーバ障害時にサーバの再起動や自動系切り替えができます。

ここでは,サーバの監視コマンドが呼び出されるタイミング,およびサーバの監視コマンドの作成方法について説明します。サーバの監視方法の説明については,「3.1.1 モニタモードのサーバの監視」を参照してください。

<この項の構成>
(1) サーバの監視コマンドが呼び出されるタイミング
(2) サーバの監視コマンドの作成方法

(1) サーバの監視コマンドが呼び出されるタイミング

作成したサーバの監視コマンドは,HAモニタがスーパユーザの権限で実行します。

サーバの監視コマンドは,実行系で実行サーバが起動完了したあとに起動されます。

(2) サーバの監視コマンドの作成方法

サーバの監視コマンドのサンプルファイルを,HAモニタサンプルファイル用ディレクトリの下にpatrol.sh というファイル名で格納していますので,必要に応じて利用してください。作成したサーバの監視コマンドは,サーバ対応の環境設定のpatrolcommandオペランドに指定します。

サーバの監視コマンドは,次の点を考慮して作成してください。

次に,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コマンドの出力などを使用します。プログラムのプロセスがあるならばループを継続し,プロセス生存の確認を続行します。