[CentOS6][SOS JobScheduler] バックアップ・クラスタの構築 - 4.動作確認


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