Create: 2013/04/15
LastUpdate: 2013/04/17
下図の構成でバックアップクラスタを構築します。JobSchedulerのバージョンは "1.3.12.3072" です。
下図の詳細を知りたい場合は、上に戻ってください。
以下に、バックアップ・クラスタ構築の作業手順を紹介します。
手順は、「インストールマニュアル(PDF)」と「Reference Documentation」を参考にしました。
[ 作業手順メニュー ]
4.動作確認
JobScheduler(プライマリ)とJobScheduler(バックアップ)のそれぞれのJOCを使用してバックアップ・クラスタの動作確認を行います。
JOCのURLは以下のとおり。
- JobScheduler(プライマリ): http://192.168.1.61:4444/
- JobScheduler(バックアップ): http://192.168.1.84:4444/
4.1.クラスタ状態の確認
まずは、ちゃんとバックアップクラスタ構成が機能しているか確認します。
ブラウザでJobScheduler(プライマリ)のJOCを開いて、[Cluster]タブをクリックすると、下図の画面が表示されます。
JobScheduler(プライマリ)とJobScheduler(バックアップ)の状態を示す2行が表示され、"This Scheduler" と表示された自分自身(プライマリ)が、"active" であればOKです。
また、2行とも[Last heart beat]欄が "good" で、ちゃんとハートビートを認識できていればOKです。
次にブラウザでJobScheduler(バックアップ)のJOCを開いて、[Cluster]タブを開くと下図の画面が表示されます。
こちらは、"This is a BACKUP" と表示され、[Staus] が、"waiting_for_activation" と表示されています。自分自身がJobScheduler(バックアップ)で待機状態であることを示しています。
4.2.手動でのフェイルオーバ-
手動でJobScheduler(バックアップ)を active に切り替えてみます。
プライマリのJobScheduler を普通に停止しても、フェイルオーバしません。
手動でフェイルオーバーしたい場合は、プライマリのJobScheduler を "fail safe" で停止します。
ブラウザでJobScheduler(プライマリ)のJOCを開き、[Menu]ボタンをクリックして、メニューから [Terminate fail-safe] を選択します。
これで、プライマリのJobScheduler が停止します。
ブラウザでJobScheduler(バックアップ)のJOCを開き、[Cluster]タブをクリックすると下図の画面が表示されます。
[Staus] が "runnning" に変わっています。
また、プライマリのJobSchedulerは、表示されず、バックアップのJoBSchedulerが "active" になっていることが確認できます。
4.3.手動でのフェイルバック
こんどは、4.2のフェイルオーバした状態で、プライマリのJobSchedulerを立ち上げると、どうなるか見てみます。
Manager(プライマリ)サーバにjobs ユーザでログインして、以下のコマンドで JobScheduler(プライマリ)を起動します。
$ sudo service jobscdl startブラウザでバックアップのJOCを開いて、[Cluster]タブをクリックすると、下図の画面が表示されます。
プライマリのJobSchedulerは認識されましたが、ただ、プライマリを起動しただけでは、フェイルバック(プライマリが"active"になる)しません。
プライマリのJoBSchedulerを "active" に戻したい場合は、バックアップのJoBSchedulerを再起動します。
JOCでJobScheduler(バックアップ)の[Cluster member menu]ボタンをクリックし、メニューから [Restart]を選択します。
これで、バックアップのJoBSchedulerが再起動して、プライマリのJoBSchedulerが "active" になります。
4.4.自動でのフェイルオーバー
Manager(プライマリ)サーバでネットワーク障害を起こして、自動的にフェイルオーバさせてみます。
Manager(プライマリ)サーバに root ユーザでログインして、以下のコマンドを実行し、通信不能状態にします。
# ifdown eth0ブラウザでJobScheduler(バックアップ)のJOCを開き[Cluster]タブをクリックすると、下図の画面が表示されます。
しならくすると、 JobScheduler(プライマリ)の[Last heart beat]欄に "late" と表示され、JobScheduler(プライマリ)からのハートビートが遅延していることを警告してくれます。
それでも、放置していると、JobScheduler(プライマリ)の[State]が "dead" になり、JobScheduler(プライマリ)がダウンしたと判定します。
フェイルオーバが始まります。
しばらくすると、下図のようにフェイルオーバが完了し、JobScheduler(バックアップ)の[State]が "active" になります。
このあと、プライマリのJobScheduler を起動しても、自動的にフェイルバックはしません。
4.5.Agent でJobChain実行中のフェイルオーバー
Host-AのJobSchedulerAgentでJobChain実行中にフェイルオーバさせてみます。
ジョブの定義は以下のとおり。60秒スリープします。
<?xml version="1.0" encoding="ISO-8859-1"?> <job title="Test Job" process_class="Host-A" order="yes"> <script language="shell"> <![CDATA[ echo "**** Test Job is running ******" echo "Host = `uname -n`" sleep 60 exit $? ]]> </script> <run_time /> </job>JobChainの定義は以下のとおり。
<?xml version="1.0" encoding="ISO-8859-1"?> <job_chain orders_recoverable="yes" visible="yes"> <job_chain_node state="100" job="job1" next_state="200" error_state="error"/> <job_chain_node state="200" job="job1" next_state="300" error_state="error"/> <job_chain_node state="300" job="job1" next_state="400" error_state="error"/> <job_chain_node state="400" job="job1" next_state="500" error_state="error"/> <job_chain_node state="500" job="job1" next_state="success" error_state="error"/> <job_chain_node state="success"/> <job_chain_node state="error"/> </job_chain>Host-A の ProcessClass の定義は以下のとおり。
<?xml version="1.0" encoding="ISO-8859-1"?> <process_class max_processes="10" remote_scheduler="192.168.1.90:4444"/>ブラウザでJobScheduler(プライマリ)のJOCを開いて、下図のように実行します。
下図のように JobChain が実行されたことを確認します。
JobChain の実行中に、Manager(プライマリ)サーバに root ユーザでログインして以下のコマンドを実行し、通信を遮断します。
# ifdown eth0ブラウザでJobScheduler(バックアップ)のJOCを開き、下図のようにフェイルオーバしたことを確認できたら、
Host-Aで実行中だったジョブを確認してみます。
下図のようにJobChainが実行中であることを確認できます。
うまく、プライマリから引き継いだようです。
JobChainの実行結果は以下のとおり。正常終了しました。
2013-04-17 08:13:26.042 [info] (Task test/job1:9626) SCHEDULER-842 Task is going to process Order test/job_chain1:786, state=100, on Scheduler http://centos6v:4444 2013-04-17 08:13:26.042 [info] (Task test/job1:9626) 2013-04-17 08:13:26.042 [info] (Task test/job1:9626) Task test/job1:9626 - Protocol starts in /home/jobs/sos-berlin.com/jobscheduler/scheduler-backup/logs/task.test,job1.log 2013-04-17 08:13:26.044 [info] (Task test/job1:9626) SCHEDULER-918 state=starting (at=never) 2013-04-17 08:13:26.072 [info] (Task test/job1:9626) SCHEDULER-987 Starting process: '/bin/sh' '-c' '"/tmp/jobs/sos.Vwrorj"' 2013-04-17 08:13:27.071 [info] (Task test/job1:9626) **** Test Job is running ****** 2013-04-17 08:13:27.071 [info] (Task test/job1:9626) Host = centos6w 2013-04-17 08:14:26.119 [info] (Task test/job1:9626) SCHEDULER-843 Task has ended processing of Order test/job_chain1:786, state=100, on Scheduler http://centos6v:4444 2013-04-17 08:14:26.119 [info] set_state 200, Job /test/job1 2013-04-17 08:14:26.164 [info] (Task test/job1:9627) SCHEDULER-842 Task is going to process Order test/job_chain1:786, state=200, on Scheduler http://centos6v:4444 2013-04-17 08:14:26.169 [info] (Task test/job1:9627) 2013-04-17 08:14:26.169 [info] (Task test/job1:9627) Task test/job1:9627 - Protocol starts in /home/jobs/sos-berlin.com/jobscheduler/scheduler-backup/logs/task.test,job1.log 2013-04-17 08:14:26.169 [info] (Task test/job1:9627) SCHEDULER-918 state=starting (at=never) 2013-04-17 08:14:26.181 [info] (Task test/job1:9627) SCHEDULER-987 Starting process: '/bin/sh' '-c' '"/tmp/jobs/sos.ZApIDF"' 2013-04-17 08:14:27.179 [info] (Task test/job1:9627) **** Test Job is running ****** 2013-04-17 08:14:27.179 [info] (Task test/job1:9627) Host = centos6w 2013-04-17 08:15:26.230 [info] (Task test/job1:9627) SCHEDULER-843 Task has ended processing of Order test/job_chain1:786, state=200, on Scheduler http://centos6v:4444 2013-04-17 08:15:26.230 [info] set_state 300, Job /test/job1 2013-04-17 08:15:26.292 [info] (Task test/job1:9628) SCHEDULER-842 Task is going to process Order test/job_chain1:786, state=300, on Scheduler http://centos6v:4444 2013-04-17 08:15:26.296 [info] (Task test/job1:9628) 2013-04-17 08:15:26.296 [info] (Task test/job1:9628) Task test/job1:9628 - Protocol starts in /home/jobs/sos-berlin.com/jobscheduler/scheduler-backup/logs/task.test,job1.log 2013-04-17 08:15:26.297 [info] (Task test/job1:9628) SCHEDULER-918 state=starting (at=never) 2013-04-17 08:15:26.308 [info] (Task test/job1:9628) SCHEDULER-987 Starting process: '/bin/sh' '-c' '"/tmp/jobs/sos.veWim4"' 2013-04-17 08:15:27.307 [info] (Task test/job1:9628) **** Test Job is running ****** 2013-04-17 08:15:27.307 [info] (Task test/job1:9628) Host = centos6w 2013-04-17 08:16:26.355 [info] (Task test/job1:9628) SCHEDULER-843 Task has ended processing of Order test/job_chain1:786, state=300, on Scheduler http://centos6v:4444 2013-04-17 08:16:26.356 [info] set_state 400, Job /test/job1 2013-04-17 08:16:26.386 [info] (Task test/job1:9629) SCHEDULER-842 Task is going to process Order test/job_chain1:786, state=400, on Scheduler http://centos6v:4444 2013-04-17 08:16:26.392 [info] (Task test/job1:9629) 2013-04-17 08:16:26.392 [info] (Task test/job1:9629) Task test/job1:9629 - Protocol starts in /home/jobs/sos-berlin.com/jobscheduler/scheduler-backup/logs/task.test,job1.log 2013-04-17 08:16:26.393 [info] (Task test/job1:9629) SCHEDULER-918 state=starting (at=never) 2013-04-17 08:16:26.404 [info] (Task test/job1:9629) SCHEDULER-987 Starting process: '/bin/sh' '-c' '"/tmp/jobs/sos.26hJiv"' 2013-04-17 08:16:27.403 [info] (Task test/job1:9629) **** Test Job is running ****** 2013-04-17 08:16:27.403 [info] (Task test/job1:9629) Host = centos6w 2013-04-17 08:17:26.452 [info] (Task test/job1:9629) SCHEDULER-843 Task has ended processing of Order test/job_chain1:786, state=400, on Scheduler http://centos6v:4444 2013-04-17 08:17:26.452 [info] set_state 500, Job /test/job1 2013-04-17 08:17:26.480 [info] (Task test/job1:9630) SCHEDULER-842 Task is going to process Order test/job_chain1:786, state=500, on Scheduler http://centos6v:4444 2013-04-17 08:17:26.484 [info] (Task test/job1:9630) 2013-04-17 08:17:26.484 [info] (Task test/job1:9630) Task test/job1:9630 - Protocol starts in /home/jobs/sos-berlin.com/jobscheduler/scheduler-backup/logs/task.test,job1.log 2013-04-17 08:17:26.485 [info] (Task test/job1:9630) SCHEDULER-918 state=starting (at=never) 2013-04-17 08:17:26.496 [info] (Task test/job1:9630) SCHEDULER-987 Starting process: '/bin/sh' '-c' '"/tmp/jobs/sos.DIQvqY"' 2013-04-17 08:17:27.495 [info] (Task test/job1:9630) **** Test Job is running ****** 2013-04-17 08:17:27.495 [info] (Task test/job1:9630) Host = centos6w 2013-04-17 08:18:26.544 [info] (Task test/job1:9630) SCHEDULER-843 Task has ended processing of Order test/job_chain1:786, state=500, on Scheduler http://centos6v:4444 2013-04-17 08:18:26.544 [info] set_state success 2013-04-17 08:18:26.546 [info] SCHEDULER-945 No further job in job chain - order has been carried out 2013-04-17 08:18:26.546 [info] SCHEDULER-940 Removing order from job chain