26.19.1 サーバプロセスの異常終了が多発した場合に系を切り替える方法
サーバプロセスの異常終了が多発すると,新たなサービスを受け付けられないことがあります。しかし,サーバプロセスの異常終了では,HiRDBは異常終了しませんが,実質オンライン停止状態になります。また,HiRDBが異常終了しないため,系を切り替えられません。このオンライン停止状態になったときに系を切り替える方法を説明します。
(1) 系を切り替えるための準備作業
(a) pd_down_watch_procオペランドを指定します
サーバプロセスの異常終了回数が一定時間内にpd_down_watch_procオペランドの値を超えた場合,HiRDB(HiRDB/パラレルサーバの場合は該当するユニット)を異常終了します。これをプロセスの異常終了回数監視機能といいます。この機能を使用して,オンライン停止状態になったときにHiRDBを異常終了させて系を切り替えます。プロセスの異常終了回数監視機能については,「サーバプロセスの異常終了回数の監視(プロセスの異常終了回数監視機能)」を参照してください。
(b) pd_mode_confオペランドの指定値を確認します
プロセスの異常終了回数監視機能でHiRDBが異常終了した場合に系を切り替えるときは,pd_mode_conf = MANUAL2を指定します。HiRDBが異常終了した場合に系を切り替えないとき(異常終了した系でHiRDBを再開始するとき)は,pd_mode_conf = MANUAL1を指定します。
(c) Hitachi HA Toolkit Extensionのswitchtypeオペランドを指定します(サーバモード限定)
Hitachi HA Toolkit Extensionのswitchtypeオペランドにswitchを指定します。switchを指定すると,HiRDBが異常終了した場合に系を切り替えます。
(d) 系の切り替え時期を監視します(モニタモード限定)
サーバプロセスの異常終了が多発してHiRDBが異常終了しても,自動的に系を切り替えられません。ユーザの運用(系切り替え用のシェルの実行など)で系を切り替えます。ただし,クラスタソフトウェアにCLUSTERPROを使用して,カスタム監視リソースでフェイルオーバを行う場合は系を切り替えます。系切り替えの運用例を次に示します。
-
HiRDBが異常終了したとき,KFPS01821-Eメッセージがイベントログに出力されます。JP1又は監視シェルなどを使用してこのメッセージを監視し,メッセージが出力されたときに系を切り替えます。HiRDB/パラレルサーバの場合,システムマネジャがあるサーバマシンのイベントログか,又は異常終了したユニットがあるサーバマシンのイベントログのどちらかにこのメッセージが出力されます。
-
UAPを定期的に実行して,データベースにアクセスできるかどうかを確認してください。UAPがデータベースにアクセスできない場合に系を切り替えます。
(2) 相互系切り替え構成の場合
系を切り替えると同一サーバマシン上で複数のHiRDBが稼働するため,逆にトラフィックが上昇して効果が得られないことがあります。相互系切り替え構成でプロセスの異常終了回数監視機能を使用する場合は,HiRDBの異常終了時に系を切り替えないことをお勧めします。異常終了した系でHiRDBを再開始するため,pd_mode_conf = MANUAL1を指定してください。
なお,サーバモードで運用する場合は,Hitachi HA Toolkit Extensionのswitchtypeオペランドにrestart又はmanualを指定してください。restartを指定すると,障害が発生した系でHiRDBを再開始します。障害が発生した系でHiRDBを再開始できないときに,系を切り替えて切り替え先の系でHiRDBを再開始します。manualを指定した場合は,HiRDBを再開始できなくても自動的に系を切り替えません。
(3) 系の切り替え時間を短縮する方法
サーバプロセスの異常終了が多発すると,トラブルシュート情報が大量に出力されて系の切り替えに時間が掛かることがあります。次に示すオペランドを指定すると,トラブルシュート情報の出力を抑止するため,サーバプロセスの異常終了が多発したときに系の切り替え時間を短縮できます。
-
pd_dump_suppress_watch_time
-
pd_cancel_dump = noput
-
pd_client_waittime_over_abort = N
また,pd_ha_switch_timeoutオペランドにYを指定すると,系切り替え時の実行系HiRDB(スタンバイレス型系切り替え機能の場合は正規BESユニット)の内部停止処理がサーバ障害監視時間を超えた場合に,実行系HiRDBの内部停止処理を待たないで系を切り替えられます。ただし,このオペランドはサーバモードのときだけ指定できます。
系の切り替え時間に影響を与える障害を次の表に示します。
障害の種類(系の切り替え要因) |
影響の有無 |
|||||
---|---|---|---|---|---|---|
モニタ モード |
サーバ モード |
|||||
HiRDBの 異常終了 |
pdprcdの異常終了 |
○ |
○ |
|||
システムサーバの異常終了 |
× |
○ |
||||
ユーザサーバの異常終了 |
クリティカル |
△ |
○ |
|||
非クリティカル※1 |
PDCWAITTIMEオーバ |
pd_client_waittime_ over_abort=Y(省略値) |
△ |
○ |
||
pd_client_waittime_ over_abort=N |
○ |
○ |
||||
内部強制終了※2 |
△ |
○ |
||||
アボート |
△ |
○ |
||||
XA接続のUAPでロールバックが発生 |
△ |
○ |
||||
上記以外 |
△ |
○ |
||||
HiRDBのスローダウン |
pdprcdの無応答 |
× |
○ |
|||
系障害 |
× |
○ |
||||
計画系切り替え |
○ |
○ |
- (凡例)
-
- ○:系の切り替え時間に影響を与えません。
-
ただし,障害発生のタイミングによっては,系の切り替え時間に影響を与えます。
- △:系の切り替え時間に影響を与えることがあります。
-
次に示すオペランドを指定すると,系の切り替え時間に与える影響を最小限にできます。
-
pd_cancel_dump=noput
-
pd_dump_suppress_watch_time
-
×:系の切り替え時間に影響を与えることがあります。
- 注※1
-
この障害では通常HiRDBは異常終了しません。ただし,pd_down_watch_procオペランドを指定した場合はサーバプロセスの異常終了回数を監視して,ある一定頻度を超えるとHiRDBを異常終了します。
- 注※2
-
HiRDBが内部的にSIGKILLを発行してサーバプロセスを終了させることです。PDCWAITTIMEオーバ及びpdcancelコマンドによる強制終了は含まれません。