4.7.1 UAPの監視制御
HAモニタのAPIを発行できるようにUAPを修正することで,サーバの監視コマンドにUAPの監視処理を作り込むことなく,HAモニタでUAPを監視できます。
発行するAPIは,UAPの監視開始(hamon_patrolstart関数)とUAPの監視停止(hamon_patrolstop関数)の2種類です。APIについては,「10. API」を参照してください。
HAモニタは,UAPのプロセスおよび稼働報告を監視することで,UAPを監視します。UAPのプロセスと稼働報告の両方を監視するか,UAPのプロセスだけを監視するかを選択できます。監視方法は,モニタモードのプログラム対応の環境設定のpatrolオペランド,およびhamon_patrolstart関数で指定します。検出したい障害に応じて,監視方法を選択してください。
検出できる障害と監視方法の対応を,次の表に示します。
検出できる障害 |
プロセスの監視 |
稼働報告の監視 |
|
---|---|---|---|
UAPの異常終了 |
○ |
○ |
|
UAPのスローダウン |
システムコールのハングアップ |
× |
○ |
ページイン待ち |
× |
○ |
|
スケジューリング待ち |
× |
○ |
- (凡例)
-
○:検出できます。
×:検出できません。
UAPのプロセスと稼働報告の監視時の動作について,以降で説明します。
(1) UAPのプロセスの監視
HAモニタは,hamon_patrolstart関数の受け付け時にUAPと接続し,その接続を監視することでUAPのプロセスの存在をチェックできます。接続が切れた場合に,HAモニタはプロセスの消滅を検知し,UAP障害が発生したと判断します。HAモニタがUAPとの接続を監視する間隔は1秒です。
UAP障害を検出すると,HAモニタはプログラムの再起動コマンドを作成している場合はUAPの再起動を,作成していない場合はサーバの再起動や系切り替えなどをします。UAP障害を検出したあとのHAモニタの動作については,「(3) UAP障害を検出したあとのHAモニタの動作」を参照してください。
UAPのプロセスの監視時の動作について,次の図に示します。
UAPのプロセスの監視は,HAモニタがUAPから発行されたhamon_patrolstart関数を受け付けてから開始します。UAPから監視要求がない(hamon_patrolstart関数の発行がない)場合,HAモニタはUAP障害を検出しません。サーバ対応の環境設定のstart_timeoutオペランドを指定している場合は,モニタモードのサーバ起動時のタイムアウトとなります。
(2) UAPの稼働報告の監視
HAモニタは,UAPが発行したAPIが一定間隔でHAモニタに送信する稼働報告を監視することで,次の要因によるUAPのスローダウンなど,UAP自身が検知できない障害を検出できます。
-
システムコールのハングアップ
-
ページイン待ち
-
スケジューリング待ち
UAPの稼働報告を監視する時間(プログラムのスローダウン監視時間)は,モニタモードのプログラム対応の環境設定の,patrolオペランドで指定します。指定したプログラムのスローダウン監視時間を超えてもUAPからの稼働報告がなかった場合,HAモニタはUAP障害が発生したと判断します。
UAP障害を検出すると,HAモニタはhamon_patrolstart関数を発行したプロセスを強制的に停止します。HAモニタはプログラムの再起動コマンドを作成している場合はUAPの再起動を,作成していない場合はサーバの再起動や系切り替えなどをします。UAP障害を検出したあとのHAモニタの動作については,「(3) UAP障害を検出したあとのHAモニタの動作」を参照してください。
なお,UAPがプロセスを生成する場合は,プログラムの再起動コマンドやサーバの停止コマンドに,生成したプロセスを停止するため処理を記述する必要があります。
UAPの稼働報告の監視時の動作について,次の図に示します。
UAPの稼働報告の監視は,HAモニタがUAPから発行されたhamon_patrolstart関数を受け付けてから開始します。UAPから監視要求がない(hamon_patrolstart関数の発行がない)場合,HAモニタはUAP障害を検出しません。サーバ対応の環境設定のstart_timeoutオペランドを指定している場合は,モニタモードのサーバ起動時のタイムアウトとなります。
(3) UAP障害を検出したあとのHAモニタの動作
UAP障害を検出したあとのHAモニタの動作は,プログラムやサーバに設定した定義,およびサーバの状態によって異なります。
UAP障害を検出したあとのHAモニタの動作を,次の図に示します。
- 注※1
-
モニタモードのプログラム対応の環境設定のrestartcommandオペランドで指定します。
- 注※2
-
モニタモードのプログラム対応の環境設定のexec_retryオペランドで指定します。
- 注※3
-
サーバ対応の環境設定のservexec_retryオペランド,またはswitch_errorオペランドで指定します。
- 注※4
-
サーバ対応の環境設定のservexec_retryオペランド,またはswitch_retryオペランドで指定します。
(4) 複数プロセス構成のUAPの監視
一つのUAPが複数のプロセスで構成されている場合,複数のプロセスをまとめて一つのUAP(モニタモードのプログラム対応の環境設定に定義されている一つのUAP)として監視することもできます。HAモニタは,hamon_patrolstart関数を発行した,それぞれのプロセスを監視します。監視している複数のプロセスのうち,一つ以上のプロセスで障害が発生すると,UAPが障害になったものと判断します。
なお,hamon_patrolstart関数を発行する複数のプロセスのHAMON_UAPNAME環境変数の値は,同一のプログラム名である必要があります。
複数プロセス構成のUAPで,UAPの稼働報告を監視する場合の例を,次の図に示します。