Contenu connexe
Similaire à cronからjobschedulerにマイグレーションする方法
Similaire à cronからjobschedulerにマイグレーションする方法 (20)
cronからjobschedulerにマイグレーションする方法
- 2. Agenda
• はじめに
• 自動変換機能①
~Cron
Adapter
Jobの使い方~
• 自動変換機能②
~Cron
Converter
Command
Line
Toolの使い方~
• おわりに
2013/8/23
第3回JobScheduler勉強会
2
- 3. 自己紹介
• 秋穂 賢(あきほ すぐる)
• TIS株式会社 戦略技術センター 所属
• メインフレームを4年弱触ってました
• 最近はchefとかserverspecとか
• 今はCloudStackと絶賛激闘中
2013/8/23
第3回JobScheduler勉強会
3
- 7. JobScheduler
VS
cron/タスクスケジューラ
• cron/タスクスケジューラのいいところ
– OS標準の機能を使用
– 簡単シンプルに使える
• JobSchedulerのいいところ
– ジョブの実行履歴を管理出来る
(ログ・スタート時間・エンド時間・実行時間)
– 複数サーバのジョブを一元管理出来る
– 内部APIやWebAPIが使える
– エラーや先行後続制御が出来る などなど
2013/8/23
第3回JobScheduler勉強会
7
簡単なジョブ管理でもJobSchedulerを使うメリットはある!
- 15. コンバートジョブを動かす
• エラー発生・・・
– (ジョブ名に「/」は使えませんとのこと)
• crontabに↓の設定が必要
2013/8/23
第3回JobScheduler勉強会
15
#
job_name
=
my_cron_job
#
job_Wtle
=
test
cron
job1
#
job_Wmeout
=
1
*/5
*
*
*
*
root
/usr/bin/test.sh
JobSchedulerのJobに変換した際のJob名
Jobのタイトル
Jobのタイムアウト値
- 17. コンバートジョブの仕組み
• 指定したcrontabの情報を読み取る
• job_nameなどを設定してJobSchedulerのXML
形式のJobに変換
– JobSchedulerはジョブ関連定義は全てXML
• JobSchedulerの内部API(java)を使用して生
成したXMLのJobを動的に追加
2013/8/23
第3回JobScheduler勉強会
17
※詳しくは下記のURLを参照(ソース)
hp://www.sos-‐berlin.com/doc/doxygen-‐docs/scheduler/html/
_job_scheduler_cron_adapter_8java_source.html
- 18. コンバートジョブの使いどころ
• あまり使う場面が思い浮かばない・・
• cronの書式で書きたいけど、履歴管理などは
JobSchedulerでやりたいというコアなcronファ
ンな方は使える
– crontabファイルに監視設定を入れ、変更があっ
た際にCronAdapterをキックする
2013/8/23
第3回JobScheduler勉強会
18
※注意点
• 動的にJobを追加している為、JobSchedulerを再起動したらJobが消える
– (コンバートジョブを稼働させる必要がある)
• crontabからジョブを消してもJobSchedulerからは消えない
• crontabそのまま使うとほぼ100%エラー(
job名に「/」が含まれてるとエラー)
• 変換する前にcronは停止させる必要がある(重複実行される)
- 20. コンバートスクリプトの特徴
• 「Cron
Converter
Command
Line
Tool」という名
のツール
• インストール時に↓のシェルスクリプトが配置
2013/8/23
第3回JobScheduler勉強会
20
$SCHEDULER_HOME/bin/cronconverter.sh
• シェルを実行するとcrontab⇒JobScheduler用
JobのXMLが生成
• 出力するJobを「Standalone」 or 「JobChain」を
選択することが可能
- 21. コンバートスクリプトの実行
• cron⇒Standalone
Jobへの変換
2013/8/23
第3回JobScheduler勉強会
21
./cronconverter.sh
-‐crontab
crontab_name
-‐target
out_file
※どちらもカレントディレクトリは「$SCHEDULER_HOME/bin」にいる前提
変換元のcrontabファイルを指定
変換後のXMLファイルを指定
• cron⇒JobChainへの変換
./cronconverter.sh
-‐crontab
crontab_name
-‐target
out_file
-‐createJobChains
true
JobChain生成用のオプションを加えるのみ
- 23. スクリプトで生成されるXML
• Standalone
Job
2013/8/23
第3回JobScheduler勉強会
23
<?xml
version="1.0"
encoding="UTF-‐8"?>
~~
<jobs>
<job
name="my_cron_job"
order="no"
Wmeout="600"
Wtle="test
cron
job1">
~~
<script
language="shell"><![CDATA[
~~
/usr/bin/test.sh]]></script>
<run_Wme>
<period
repeat="00:05"/>
</run_Wme>
</job>
<job
name="GlobalCollect/usr/bin/test2.sh"
order="no"
Wmeout="600"
Wtle="Cron
Job
/usr/bin/test2.sh">
~~
</job>
</jobs>
~~
複数Job定義をまとめるタグ(=1つのファイルに複数Job定義)
crontabのコメントで記述した内容が反映
Standalone
Jobで定義した為、order=“no”
シェルスクリプトの内容が反映
cronの実行間隔が反映
2つ目のJob定義
コメントでJob名を指定しなかった為、デフォルトの名前が設定される
- 24. スクリプトで生成されるXML
• JobChain
2013/8/23
第3回JobScheduler勉強会
24
<?xml
version="1.0"
encoding="UTF-‐8"?>
~~
<jobs>
~~
</jobs>
<job_chains>
<job_chain
name="my_cron_job">
~~
</job_chain>
<job_chain
name="GlobalCollect/usr/bin/test2.sh">
~~
</job_chain>
</job_chains>
<commands>
<add_order
id="my_cron_job"
job_chain="my_cron_job"
Wtle="my_cron_job">
<run_Wme><period
repeat="00:05"/></run_Wme>
</add_order>
~~ </commands>
複数Job定義をまとめるタグ(=1つのファイルに複数Job定義)
・ jobタグの後ろにjob_chainsタグが生成
・ 個々のJobChain名はJob名と同名
・ JobChainは1Jobにつき1つ生成
・ jobタグの後ろにjob_chainsタグが生成
・ 個々のJobChain名はJob名と同名
・ JobChainは1Jobにつき1つ生成
・ JobChainを動かす為のorderも生成
・ cronのスケジュールが引き継がれている
- 26. 設定ファイルで読み込む方法
• 生成されたXMLファイルを↓のファイルで読
み込ませて、再起動
2013/8/23
第3回JobScheduler勉強会
26
$SCHEDULER_DATA/config/scheduler.xml
<config
~~>
<base
file="hogehoge.xml"
/>
</config>
scheduler.xml内
configタグ以下のbaseタグで生成したXMLファイルを読み込ませる
⇒JobScheduler起動時に設定ファイルを反映させる
※
job名に「/」が含まれてるとエラーとなる為、crontabにjob_nameは必要
- 27. XMLを分割する方法
• 分割する為のプログラムも提供されている
2013/8/23
第3回JobScheduler勉強会
27
$SCHEDULER_HOMEに移動後、下記コマンドを実行
java
-‐jar
lib/saxon9he.jar
-‐s:"変換元XML"
-‐xsl:"scheduler_data/config/xml2live.xsl"
sos.desWnaWon="out_dir"
• 出力は下記の2パターン
• job_nameを指定していた場合
– out_dir直下に分割されたファイルが配置される
• job_nameを指定していなかった場合
– out_dir/GlobalCollectディレクトリ以下に分割されたファイルが配置される
– 例:cronの実行ファイルが/usr/local/test.shだった場合、
out_dir/GlobalCollect/usr/local/test.sh.job.xml
が生成
• out_dirに出力されたファイルをconfig/liveに移動
- 30. まとめ
2013/8/23
第3回JobScheduler勉強会
30
• cronからJobSchedulerへの変換は2つの方法
• コンバートジョブ
– JobSchedulerのインストール後に即使用可能
– 実行する際にはcrontabにjob_nameパラメータが
(ほぼ)必須
– 動的にJobを追加する為、再起動で消える
• コンバートスクリプト
– Crontabの情報を1つのXMLファイルに変換
– Standalone
JobとJobChainを選択可能
– 1ファイルのまま使うことも出来るし、分割して使うこ
とも出来る
- 31. まとめ
• どちらを使うべきか?
2013/8/23
第3回JobScheduler勉強会
31
スクリプトを使ってXMLに変換する方がオススメ
• JobSchedulerのJobに変換した後に保守をす
ることを考えると、XMLファイルとしてあった方
がよい