6.9.1 サーバの起動コマンドの作成
サーバの起動コマンドは,プログラムを起動するためのコマンドです。サーバがモニタモードの場合,HAモニタがサーバの起動完了を確認できるようにするために,サーバの起動コマンドを作成する必要があります。
ここでは,サーバの起動コマンドが呼び出されるタイミング,およびサーバの起動コマンドの作成方法について説明します。
(1) サーバの起動コマンドが呼び出されるタイミング
作成したサーバの起動コマンドは,HAモニタがスーパユーザの権限で実行します。
サーバの起動コマンドは,次の場合に,共有リソースを接続したあと呼び出されます。
-
モニタモードのサーバ起動コマンド(monbeginコマンド)を実行して,実行サーバを起動する場合
-
サーバ障害時に実行サーバを再起動する設定で,実行サーバを再起動する場合
(2) サーバの起動コマンドの作成方法
サーバの起動コマンドは,プログラムを直接指定することも,プログラムの起動処理を記述したシェルなどを指定することもできます。サーバの起動コマンドは,起動のタイミングで呼び出された場合はモニタモードのサーバの起動コマンド(monbeginコマンド)を実行したユーザの環境変数を,再起動のタイミングで呼び出された場合はHAモニタの起動コマンド(monstartコマンド)を実行したユーザの環境変数を引き継ぎます。シェルの中でプログラムの起動に必要な動作環境を設定してください。
作成したサーバの起動コマンドは,サーバ対応の環境設定のnameオペランドに指定します。サーバの起動コマンドに引数を指定する場合は,サーバ対応の環境設定のactcommandオペランドにも指定してください。
サーバの起動コマンドのタイプによって,サーバ対応の環境設定のwaitserv_execオペランドに次の設定をしてください。
サーバの起動コマンドのタイプ |
サーバの監視をする場合の設定値 |
サーバの監視をしない場合の設定値 |
---|---|---|
対象となるプログラムの起動処理が完了しても,サーバ起動コマンドがリターンしない場合。 例えば,サーバ起動コマンドにプログラムを直接指定した場合。 |
no |
no |
対象となるプログラムの起動処理が完了すると,サーバ起動コマンドがリターンする場合。 |
yes |
どちらでも良い |
- 直接サーバプロセスとして動作するプログラムの場合
-
サーバ対応の環境設定のwaitserv_execオペランドにnoを指定します。なお,この設定はデフォルトです。直接サーバプロセスとして動作するプログラムの場合,起動完了を待たないため,必ずnoを指定してください。
- 直接サーバプロセスとして動作しないプログラムの場合
-
モニタモードのサーバを監視する場合は,サーバ対応の環境設定のwaitserv_execオペランドに必ずyesを指定してください。
モニタモードのサーバを監視する場合にyesを指定しないと,プログラムが起動完了する前にHAモニタでの実行サーバの起動処理が完了し,サーバの監視が開始される場合があります。プログラムの起動が完了しないままサーバの監視が開始されると,プログラムの起動が完了していない状態がサーバ障害として検出され,実行サーバの再起動や系切り替えがされるおそれがあります。
また,モニタモードのサーバを監視しない場合は,yes,noのどちらでも指定できます。ただし,次の場合はyesを指定してください。
-
モニタモードのサーバ間でサーバの切り替え順序を制御する。
-
サーバの起動コマンドのEXITコードで処理を分ける。
-
サーバ対応の環境設定のwaitserv_execオペランドにyesを指定すると,HAモニタはサーバ対応の環境設定のnameオペランドまたはactcommandオペランドに指定したサーバの起動コマンドの戻り値を評価します。戻り値ごとのHAモニタの処理を,次に示します。
-
戻り値が0
プログラムが起動に成功したとして,実行サーバの起動完了処理をします。
-
戻り値が0以外
プログラムが起動に失敗したとして,実行サーバの起動を停止します。サーバの再起動時はサーバの再起動に失敗します。再起動に失敗した場合,サーバ対応の環境設定のtermcommandオペランドに指定したサーバの停止コマンドを実行しません。再起動に失敗した場合の対処については,「7.5.2 サーバの再起動失敗に対処する」を参照してください。
なお,サーバの起動コマンドの戻り値が0以外であることが原因で再起動できなかった場合は,系切り替えをしません。再起動できなかった場合に系切り替えを実施させたいときは,戻り値が常に0でリターンするように起動コマンドを作成してください。さらに,監視コマンドでサーバの起動失敗を検知するようにしてください。
サーバ対応の環境設定のwaitserv_execオペランドにnoを指定すると,HAモニタはサーバの起動コマンドの戻り値に関係なく,実行サーバの起動完了処理をします。