Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

cronからjobschedulerにマイグレーションする方法

2,765 views

Published on

第3回 JobScheduler勉強会で説明した資料です。cronからJobSchedulerに自動変換する方法です。

cronからjobschedulerにマイグレーションする方法

  1. 1. cronからJobSchedulerに   マイグレーションする方法のご紹介 2013年8月23日   TIS株式会社    戦略技術センター   秋穂 賢   2013/8/23  第3回JobScheduler勉強会 1
  2. 2. Agenda •  はじめに   •  自動変換機能①   ~Cron  Adapter  Jobの使い方~   •  自動変換機能②   ~Cron  Converter  Command  Line  Toolの使い方~   •  おわりに   2013/8/23  第3回JobScheduler勉強会 2
  3. 3. 自己紹介 •  秋穂 賢(あきほ すぐる)   •  TIS株式会社 戦略技術センター 所属   •  メインフレームを4年弱触ってました   •  最近はchefとかserverspecとか   •  今はCloudStackと絶賛激闘中 2013/8/23  第3回JobScheduler勉強会 3
  4. 4. はじめに 2013/8/23  第3回JobScheduler勉強会 4 •  Linux   •  Windows ジョブの自動化ってどのようにしてますか? Cron タスクスケジューラ OS標準の機能で   ジョブの自動化は出来る
  5. 5. OS標準の機能だと… 2013/8/23  第3回JobScheduler勉強会 5 09:00  バッチ 07:00  バッチA 08:00  バッチB 15:00  バッチC ① ジョブ数が増えると管理が大変! ② 複雑な処理構成が組めない…   ③管理サーバ数が増えたらもっと大変!!   ④更にそれぞれOSが違ったら…もう考えたくない  
  6. 6. OS標準の機能だと… 2013/8/23  第3回JobScheduler勉強会 6 09:00  バッチ 07:00  バッチA 08:00  バッチB 15:00  バッチC ① ジョブ数が増えると管理が大変! ② 複雑な処理構成が組めない…   ③管理サーバ数が増えたらもっと大変!!   ④更にそれぞれOSが違ったら…もう考えたくない   JobScheduler  を使いましょう  
  7. 7. JobScheduler  VS  cron/タスクスケジューラ •  cron/タスクスケジューラのいいところ – OS標準の機能を使用 – 簡単シンプルに使える •  JobSchedulerのいいところ – ジョブの実行履歴を管理出来る   (ログ・スタート時間・エンド時間・実行時間) – 複数サーバのジョブを一元管理出来る – 内部APIやWebAPIが使える – エラーや先行後続制御が出来る などなど 2013/8/23  第3回JobScheduler勉強会 7 簡単なジョブ管理でもJobSchedulerを使うメリットはある!  
  8. 8. 移行が面倒… •  ただ、ジョブ数が多いと移行が面倒…   – JobScheduler用に作り直さなきゃいけないんでしょ? – ジョブ数多いし、大変だ。。 – それだったらcronのままでいいや •  そんな人のために ※windowsの人はごめんなさい。手で頑張ってね。 2013/8/23  第3回JobScheduler勉強会 8 今回はcron→JobSchedulerのジョブへ   自動変換する機能を紹介します
  9. 9. cron自動変換の方法 •  2つの方法があります 2013/8/23  第3回JobScheduler勉強会 9 コンバートジョブを定義 コンバートスクリプトを実行 •  それぞれご紹介 ⇒JobSchedulerのJobとして実行する ⇒Linuxのシェルスクリプトとして実行する ① ②
  10. 10. 事前準備(共通) •  JobSchedulerをインストールする際にcronを選択 2013/8/23  第3回JobScheduler勉強会 10 Cronのパッケージにチェック crontabの情報を入力
  11. 11. コンバートジョブの使い方 2013/8/23  第3回JobScheduler勉強会 11
  12. 12. コンバートジョブの特徴 •  インストール時に「cron」を選択すれば     デフォルトでコンバートジョブが配置   •  JobSchedulerのJobを実行することで crontab⇒JobScheduler用のJobに変換される   2013/8/23  第3回JobScheduler勉強会 12
  13. 13. コンバートジョブ •  「sos/cron/scheduler_cron_adapter」が出来てる 2013/8/23  第3回JobScheduler勉強会 13 これ crontabの情報を読み込んでJobSchedulerの Jobに自動変換するJob ※初期設定だとスケジュールがない為、手動実行 or  スケジュール定義の必要あり
  14. 14. デモ •  scheduler_cron_adapterを動かしてみます 2013/8/23  第3回JobScheduler勉強会 14 ※crontabには下記2つのJobが設定 */5  *  *  *  *  root  /usr/local/bin/test.sh   */5  *  *  *  *  root  /usr/local/bin/test2.sh  
  15. 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のタイムアウト値
  16. 16. コンバートジョブを動かす •  リトライ 2013/8/23  第3回JobScheduler勉強会 16 •  出来た! crontabに設定した情報がJobとして登録されている
  17. 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. 18. コンバートジョブの使いどころ •  あまり使う場面が思い浮かばない・・   •  cronの書式で書きたいけど、履歴管理などは JobSchedulerでやりたいというコアなcronファ ンな方は使える   – crontabファイルに監視設定を入れ、変更があっ た際にCronAdapterをキックする 2013/8/23  第3回JobScheduler勉強会 18 ※注意点   •  動的にJobを追加している為、JobSchedulerを再起動したらJobが消える   –  (コンバートジョブを稼働させる必要がある)   •  crontabからジョブを消してもJobSchedulerからは消えない   •  crontabそのまま使うとほぼ100%エラー(  job名に「/」が含まれてるとエラー)   •  変換する前にcronは停止させる必要がある(重複実行される)
  19. 19. コンバートスクリプトの使い方 2013/8/23  第3回JobScheduler勉強会 19
  20. 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. 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生成用のオプションを加えるのみ
  22. 22. デモ •  cronconverter.shを動かしてみます 2013/8/23  第3回JobScheduler勉強会 22 ※crontabには下記2つのJobが設定 */5  *  *  *  *  root  /usr/local/bin/test.sh   */5  *  *  *  *  root  /usr/local/bin/test2.sh  
  23. 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. 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のスケジュールが引き継がれている
  25. 25. 生成したXMLの反映方法 •  反映方法は大きく2通り 2013/8/23  第3回JobScheduler勉強会 25 JobSchedulerの設定ファイルで読み込む   ① XMLを分割して config/live 以下に格納する   ② •  ファイルを加工することなくJob定義を反映可能   •  反映にJobSchedulerの再起動が必要   •  JobSchedulerを再起動することなくJobが反映可能   •  生成されたXMLの加工が必要  
  26. 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. 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に移動  
  28. 28. デモ •  jobchain.xmlを分割してJobSchedulerに反映してみる 2013/8/23  第3回JobScheduler勉強会 28 ※crontabには下記2つのJobが設定 */5  *  *  *  *  root  /usr/local/bin/test.sh   */5  *  *  *  *  root  /usr/local/bin/test2.sh  
  29. 29. Advanced •  複数ホストのcron情報を1つのJobSchedulerに 集めたい場合 2013/8/23  第3回JobScheduler勉強会 29 scheduler_cron_remote.xmlが見つからず、断念 •  現時点ではリモートホストのcrontabを集めて XMLに変換する
  30. 30. まとめ 2013/8/23  第3回JobScheduler勉強会 30 •  cronからJobSchedulerへの変換は2つの方法   •  コンバートジョブ   – JobSchedulerのインストール後に即使用可能   – 実行する際にはcrontabにjob_nameパラメータが (ほぼ)必須   – 動的にJobを追加する為、再起動で消える   •  コンバートスクリプト   – Crontabの情報を1つのXMLファイルに変換   – Standalone  JobとJobChainを選択可能   – 1ファイルのまま使うことも出来るし、分割して使うこ とも出来る  
  31. 31. まとめ •  どちらを使うべきか?   2013/8/23  第3回JobScheduler勉強会 31 スクリプトを使ってXMLに変換する方がオススメ   •  JobSchedulerのJobに変換した後に保守をす ることを考えると、XMLファイルとしてあった方 がよい  
  32. 32. おわりに 2013/8/23  第3回JobScheduler勉強会 32 cronを使っている方、まずは自 動変換をしてJobSchedulerを 使ってみませんか?  
  33. 33. Thank  you  for  your  aenWon. 2013/8/23  第3回JobScheduler勉強会 33

×