[CentOS6][SOS JobScheduler] JobChain をAgent上でリモート実行する


Create: 2014/09/23
LastUpdate: 2014/09/23
[ メニューに戻る ]

JobChain をエージェント上でリモート実行できます。Order のパラメータでホストを指定できるので、動的にホスト名を変更することが可能になります。
JobSchedulerHowTOの「Dynamic setting of remote JobSchedulers」を参考にしました。
動作確認は、JobScheduler1.7 で実施しています。

テスト用のJobChain、Jobを用意


動作確認用に、JobSchedulerEngine が稼働しているサーバ上にJobChainとJobの定義(xml)を作成します。
エージェント上に定義を作成する必要はありません。
JobChain(JobChain01.job_chain.xml) は以下のようにします。
ジョブ(job_1)を実行するだけで、リモート実行用の特別な設定はありません。
<?xml version="1.0" encoding="ISO-8859-1"?>
<job_chain orders_recoverable="yes" visible="yes" title="JobChain01">
    <job_chain_node  state="Start" job="/sos/jitl/JobChainStart" next_state="Job_1" error_state="Error"/>
    <job_chain_node  state="Job_1" job="job_1" next_state="End" error_state="Error"/>
    <job_chain_node  state="End" job="/sos/jitl/JobChainEnd" next_state="Success" error_state="Error"/>
    <job_chain_node  state="Error"/>
    <job_chain_node  state="Success"/>
</job_chain>

ジョブ(job_1.job.xml)は、以下のようにします。
リモート実行用の特別な設定はありません。
ホスト名を表示して、自分が動作しているサーバがわかるようにします。
<?xml version="1.0" encoding="ISO-8859-1"?>
<job order="yes">
    <script language="shell">
        <![CDATA[
echo "$SCHEDULER_JOB_NAME processed $SCHEDULER_ORDER_ID"
echo "Current Timestamp: `date '+%Y-%m-%d %H:%M:%S'`"
echo "Current Hostname: `uname -n`"
echo "Current Username: `whoami`"
exit 0
        ]]>
    </script>
    <run_time />
</job>


動作確認


上記の定義をJOCで見ると下図のとおり。


まずは、ローカルホストで実行します。
Order のパラメータは指定せずに実行します。


ジョブの実行結果は下図のとおり。
ホスト名にローカルホストが表示されているのでローカルホストでジョブが実行したことがわかります。


今度は、Orderのパラメータで、エージェントが動作しているリモートサーバを指定します。
パラメータの[name]は、"scheduler.remote_scheduler" を設定し、[value]には、リモートサーバのIPアドレスと、エージェントのポート番号を ":" で区切って指定します。


ジョブの実行結果は下図のとおり。
ホスト名にリモートホストのホスト名が表示されているので、ジョブがリモートホストで実行したことがわかります。


上記では、JOCからOrderのパラメータを設定しましたが、以下のように定義ファイルで Order のパラメータを設定することもできます。
ファイル名には命名規則があり、<JobChain名>,<OrderID>.order.xml となります。
  • Orderパラメータの定義ファイル名:
    JobChain01,Order01_remote.order.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<order  title="Remote Scheduler">
    <params>
        <param name="scheduler.remote_scheduler" value="192.168.1.82:4444"/>
    </params>
    <run_time let_run="no"/>
</order>

この Order はJOCの[Orders]タブで下図のように見れます。
即時実行でOrderの動作確認をしたい場合は、右クリックしてメニューから[Start order now]を選択すれば実行できます。



内部APIを使用して、Orderのパラメータを設定することができるので、複雑な条件でリモートホストを変えることもできます。
内部APIの使用例は、JobSchedulerFAQの「Complex dynamic setting of remote JobSchedulers」を参照してください。