以下のように、スケジュールサーバから実行サーバにジョブを投入する構成で、ジョブの実行中に実行サーバBがダウンした場合、自動的に実行中のジョブを実行サーバAまたは実行サーバCに再投入させる方法について説明します。
実行サーバがダウンした場合に、自動的に別サーバにジョブを再投入させるには、以下の方法があります。
分散実行
実行サーバの二重化
ポイント
どの方法が良いか迷ったら・・・
以下に、それぞれの運用方法について概要を示すので、用途に合わせて選択してください。
メリット | デメリット | |
分散実行 | 最大10台まで分散先サーバを設定可能。特定のサーバがダウンした場合、最大10分間該当サーバがダウンしたと認識し、該当サーバへの投入を行わないようにできる(ダウンしているサーバへの投入を試みることはない)。 | ジョブがどのサーバで実行されるか予測が出来ない。 |
実行サーバの二重化 | 通常第1候補のサーバで実行。第1候補のサーバがダウンしている場合だけ、第2候補で実行。異常時だけ代替サーバで実行するという運用が可能。 | 第1候補のサーバがダウンした場合、まずは第1候補のサ-バに投入を試みてから第2候補に遷移するため、投入に時間がかかる。 |
分散実行
本来は負荷分散を目的とし、複数の実行サーバをグループ化して負荷の低い実行サーバにジョブを割り振る機能ですが、グループ内の実行サーバがダウンした場合には、ダウンしたサーバ以外のグループ内の実行サーバで再度割り振りを行い、ジョブが再投入されます。
分散実行を利用する場合は、分散実行用のキューを作成する時に、分散先となる実行サーバグループを登録します。手順については、“1.9 ジョブを自動的に負荷の少ないサーバに分散して実行させたい”を参照してください。
参考
実行サーバがダウンしているかどうかの判断は?
デフォルトでは10秒間隔で6回のリトライをします。リトライしても実行サーバに接続できなかった場合に、実行サーバがダウンしていると判断し、ダウンした実行サーバ以外で一番負荷の低い実行サーバにジョブを依頼します。
リトライの回数等については、[運用情報の定義]ウィンドウ-[ネットワーク]シートの[ネットワークジョブで接続エラー時のリトライの動作を変更する]で定義できます。
実行サーバの二重化
ネットワークジョブの場合、実行サーバとして第1候補、第2候補を指定しておくことで、第1候補の実行サーバがダウンしていた場合に、第2候補の実行サーバへ自動的にジョブの実行を依頼することができます。
ネットワークジョブの実行サーバを二重化する場合は、第1候補、第2候補の実行サーバをジョブの登録時に定義します。
注意
第1候補から第2候補へ遷移するときに発生するオーバーヘッド
第1候補のサーバが停止状態でジョブが投入された場合に、第1候補が停止状態だと分かっていても、いきなり第2候補の実行サーバに依頼はされません。毎回、第1候補へのリトライ処理を行ってから第2候補の実行サーバへ依頼されるため、第2候補へ遷移するときには必ずオーバーヘッドが発生します。
オーバヘッドはOS、サーバ、ネットワークの状態に依存します。
手順
以下のいずれかの方法で、第1候補、第2候補の実行サーバを登録してください。
注意
登録できない実行サーバ
第1候補および第2候補に、ローカルホスト名は指定できません。
実行サーバを二重化させたいジョブの[登録-ジョブ]ウィンドウ-[基本情報]シートを表示します。
[登録-ジョブ]ウィンドウ-[基本情報]シートで以下を指定します。
[ジョブをネットワークジョブとして投入する]をチェック
[依頼ホスト名]に、第1候補および第2候補の実行サーバを、以下の形式で指定
第1候補のホスト名,第2候補のホスト名 |
参考
ジョブ制御文で登録する場合
ジョブ制御文のreq_hostオペランドに、“第1候補のホスト名,第2候補のホスト名”の形式で実行サーバを設定します。
-nentまたは-ncheオペランドを指定してjobschsetnetコマンドを実行します。定義ファイルには、1.で編集したジョブ制御文を格納したファイル名を指定します。
実行サーバを二重化させたいジョブネットの[ジョブネットのプロパティ]ウィンドウ-[基本情報]シートを表示します。
[ジョブネットのプロパティ]ウィンドウ-[基本情報]シートで以下を指定します。
[ジョブネット内のジョブをネットワークジョブとして投入する]をチェック
[デフォルトホスト名]に、第1候補および第2候補の実行サーバを、以下の形式で指定
第1候補のホスト名,第2候補のホスト名 |
参考
ジョブネット制御文で登録する場合
ジョブネット制御文のdefaulthostオペランドに、“第1候補のホスト名,第2候補のホスト名”の形式で実行サーバを設定します。
-nentまたは-ncheオペランドを指定してjobschsetnetコマンドを実行します。定義ファイルには、1.で編集したジョブネット制御文を格納したファイル名指定します。
参考
実行サーバがダウンしているかどうかの判断は?
以下の場合に、第1候補の実行サーバがダウンしていると判断し、第2候補の実行サーバにジョブを依頼します。
第1候補のサーバへのネットワークが到達できない状況
第1候補のサーバ自体のダウン
第1候補のジョブ実行制御デーモンが停止
参考
実行サーバがすべてダウンしていた場合
実行時に第1候補、第2候補ともにダウンしていた場合、ジョブは異常終了となります。
マニュアルの参照先 <分散実行> <実行サーバの二重化> |