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]を選択すれば実行できます。
即時実行でOrderの動作確認をしたい場合は、右クリックしてメニューから[Start order now]を選択すれば実行できます。
内部APIを使用して、Orderのパラメータを設定することができるので、複雑な条件でリモートホストを変えることもできます。
内部APIの使用例は、JobSchedulerFAQの「Complex dynamic setting of remote JobSchedulers」を参照してください。