6.14.2 サーバの停止コマンドの作成
サーバの停止コマンドは,プログラムを自動停止するためのコマンドです。サーバの停止コマンドの作成は任意です。連動系切り替えなどでプログラムを自動停止したい場合に作成してください。
ここでは,サーバの停止コマンドが呼び出されるタイミング,およびサーバの停止コマンドの作成方法について説明します。HAモニタから実行するコマンドの動作環境については「6.24 HAモニタから実行するコマンドの動作環境」を参照してください。
(1) サーバの停止コマンドが呼び出されるタイミング
作成したサーバの停止コマンドは,HAモニタがスーパユーザの権限で実行します。
サーバの停止コマンドは,次の場合に,共有リソースの切り離しをする前に呼び出されます。
-
サーバの系切り替えコマンド(monswapコマンド)を実行して,実行サーバを計画停止する場合
-
モニタモードのサーバ停止コマンド(monendコマンド)を実行して,実行サーバを正常終了する場合
-
サーバ障害時にサーバを再起動する設定で,サーバの障害を検出した場合(実行サーバを再起動する前)
-
サーバ障害時の系切り替えに伴って実行サーバを停止する場合
-
連動系切り替えに伴って実行サーバを計画停止する場合
HAモニタは,サーバの停止コマンドに,呼び出される場合に応じた引数を渡します。引数には,"-e","-w",および"-c"があります。それぞれの引数に対応する次のような処理を記述してください。
引数 |
引数が渡された時に記述する処理 |
---|---|
-e |
サーバの正常停止。 |
-w |
サーバを計画切り替えするための計画停止。 |
-c |
異常終了したサーバを再起動できるようにするための処理。 |
サーバの停止コマンドの起動条件と引数の関係を,次の表に示します。
サーバの停止コマンドの起動条件 |
渡される引数※ |
|
---|---|---|
termcmd_at_abort=nouseの場合 |
termcmd_at_abort=useの場合 |
|
モニタモードのサーバ停止コマンド(monendコマンド)でサーバを停止。 |
-e |
-e |
サーバ障害時,モニタモードのサーバ停止コマンド(monendコマンド)で待機サーバがない実行サーバを停止。 |
-e |
-c |
サーバ障害によるサーバの系切り替え処理。 |
-w |
-c |
サーバの系切り替えコマンド(monswap コマンドまたはmonswap -gコマンド)を実行(計画系切り替え)。 |
-w |
-w |
待機サーバがない実行サーバの障害時,待機サーバを起動したあとサーバの系切り替えコマンド(monswapコマンドまたはmonswap -gコマンド)を実行(計画系切り替え)。 |
-w |
-c |
連動系切り替えに伴って,実行サーバを強制停止・系切り替え。 |
-w |
-w |
サーバ障害時,連動系切り替えに伴って,待機サーバがない実行サーバを強制停止。 |
-w |
-c |
待機サーバがない実行サーバの障害時,連動系切り替えに伴って,待機サーバを起動したあと,系切り替え。 |
-w |
-c |
サーバ障害時の実行サーバ再起動前処理。 |
-c |
-c |
サーバの起動コマンド失敗による,サーバの起動中止。 |
− |
-c |
- (凡例)
-
−:サーバの停止コマンドを発行しません。
- 注※
-
渡される引数は,HAモニタの環境設定のtermcmd_at_abortオペランドに何を指定するかによって異なります。termcmd_at_abortオペランドについては,「8.3.1 HAモニタの環境設定(sysdef)」を参照してください。
(2) サーバの停止コマンドの作成方法
サーバの停止コマンドは,プログラムの停止処理を記述したシェルなどを指定します。
シェルの中でプログラムの終了に必要な動作環境を設定してください。なお,Unit設定ファイルにも環境変数を設定できますが,HAモニタを上書きインストールするとUnit設定ファイルが上書きされます。そのため,シェルの中で動作環境(環境変数)を設定することを推奨します。
なお,サーバの停止コマンドを実行した場合,HAモニタのUnit設定ファイルで設定した環境変数が引き継がれます。
モニタモードのプログラム管理機能使用時に,APIを発行するUAPをサーバの停止コマンドで停止する場合は,UAPの環境変数にプログラム名を設定する必要があります。また,サーバの停止コマンドには,対象となるすべてのUAPの停止処理を記述してください。UAPがプロセスを生成する場合は,生成したプロセスの停止処理も記述してください。UAPの環境変数については,「6.17.2 UAPの環境変数の設定」を参照してください。
作成したサーバの停止コマンドは,サーバ対応の環境設定のtermcommandオペランドに指定します。また,サーバの停止コマンドが起動してから終了するまでのタイムアウト時間を,サーバ対応の環境設定のstop_timeoutオペランドまたはstop_timeout_swオペランドで指定できます。
実行サーバの正常終了時,計画停止時に呼び出されるサーバの停止コマンドの戻り値によって,HAモニタの動作が変わることはありません。ただし,次の点に注意して停止コマンドを作成してください。
-
サーバ対応の環境設定のterm_pairdownオペランドにuseが指定されている場合,計画停止時に呼び出されるサーバの停止コマンドの戻り値が0以外で終了すると,系のペアダウン機能によって系切り替えをします。
-
サーバの再起動時に呼び出されるサーバの停止コマンドが0以外で終了した場合,HAモニタでは以降の処理(サーバの再起動,監視コマンドの起動,およびサーバの監視)を中断します。 そのため,サーバの再起動が失敗となり,系切り替えをしません。再起動に失敗した場合の対処については,「7.5.2 サーバの再起動失敗に対処する」を参照してください。なお,サーバの停止に失敗しても系切り替えをしたい場合は,戻り値が必ず0を返すようにサーバの停止コマンドを作成してください。
また,複数のプログラムの停止処理をサーバの停止コマンドに記述することで,複数のプログラムを一つのサーバとして使用できます。