6.13.1 サーバの起動コマンドの作成
サーバの起動コマンドは,プログラムを起動するためのコマンドです。サーバがモニタモードの場合,HAモニタがサーバの起動完了を確認できるようにするために,サーバの起動コマンドを作成する必要があります。
ここでは,サーバの起動コマンドが呼び出されるタイミング,およびサーバの起動コマンドの作成方法について説明します。
(1) サーバの起動コマンドが呼び出されるタイミング
作成したサーバの起動コマンドは,HAモニタがスーパユーザの権限で実行します。
サーバの起動コマンドは,次の場合に,共有リソースを接続したあと呼び出されます。
-
モニタモードのサーバ起動コマンド(monbeginコマンド)を実行して,実行サーバを起動する場合
-
サーバ障害時に実行サーバを再起動する設定で,実行サーバを再起動する場合
(2) サーバの起動コマンドの作成方法
サーバの起動コマンドは,プログラムを直接指定することも,プログラムの起動処理を記述したシェルなどを指定することもできます。
シェルの中でプログラムの起動に必要な動作環境を設定してください。RHEL7以降ではUnit設定ファイルに環境変数を設定できますが,HAモニタを上書きインストールするとUnit設定ファイルが上書きされます。そのため,シェルの中で動作環境(環境変数)を設定することを推奨します。
サーバの起動コマンドが実行される際に引き継がれる環境変数を次に示します。
- モニタモードのサーバの起動コマンド(monbeginコマンド)を実行した場合
-
monbeginコマンドを実行したユーザの環境変数
- サーバを再起動※した場合
-
次の場合は,HAモニタのUnit設定ファイルで設定した環境変数が引き継がれます。
-
RHEL7以降のバージョンで,HAモニタのバージョンが01-65以降の場合
-
RHEL7以降のバージョンで,HAモニタのバージョンが01-65より前で,かつシステム起動時にHAモニタが自動起動した場合
次の場合は,HAモニタの起動コマンド(monstartコマンド)を実行したユーザの環境変数が引き継がれます。
-
RHEL7以降のバージョンで,HAモニタのバージョンが01-65より前で,かつmonstartコマンドでHAモニタを起動した場合
-
RHEL6で,monstartコマンドでHAモニタを起動した場合
次の場合は,起動スクリプト/etc/rc.d/init.d/HAmonで設定した環境変数が引き継がれます。
-
RHEL6で,システム起動時にHAモニタが自動起動した場合
- 注※
-
HAモニタの環境設定のmonbegin_restartオペランドの機能によってサーバが自動起動したとき,または,サーバ対応の環境設定のservexec_retryオペランドの機能によってサーバが再起動したとき。
-
モニタモードのプログラム管理機能使用時に,APIを発行するUAPをサーバの起動コマンドで起動する場合は,UAPの環境変数にプログラム名を設定する必要があります。サーバの起動コマンドには,対象となるすべてのUAPの起動処理を記述してください。UAPの環境変数については,「6.16.2 UAPの環境変数の設定」を参照してください。また,UAP障害時にcoreファイルを取得し,調査できるようにするため, UAPを起動する処理の前に「ulimit -c unlimited」を追加してください。カーネルパラメタのデフォルト値では,coreファイルを取得しない設定となっています。
作成したサーバの起動コマンドは,サーバ対応の環境設定の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 サーバの再起動失敗に対処する」を参照してください。
また,サーバ対応の環境設定のwaitserv_execオペランドにyesを指定した場合は,サーバの起動コマンドが起動してから終了するまでのタイムアウト時間を,サーバ対応の環境設定のstart_timeoutオペランドで指定できます。
なお,次の場合は系切り替えをしません。
-
サーバの起動コマンドの戻り値が0以外となったことが原因で,サーバを起動または再起動できなかった場合
-
起動タイムアウトを検知したことが原因で,サーバを起動できなかった場合
このような場合でも系切り替えを実施させたいときは,戻り値が常に0でリターンするように起動コマンドを作成してください。さらに,監視コマンドでサーバの起動失敗を検知するようにしてください。
サーバ対応の環境設定のwaitserv_execオペランドにnoを指定すると,HAモニタはサーバの起動コマンドの戻り値に関係なく,実行サーバの起動完了処理をします。