JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013

3,071 views

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,071
On SlideShare
0
From Embeds
0
Number of Embeds
906
Actions
Shares
0
Downloads
30
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide
  • 複雑な制御はプログラミングをする
    一部はJITLで提供されている
  • ALEX
  • JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013

    1. 1. Open Source Conference Tokyo/Fall 2013 オープンソースジョブ管理ツー ル「 JobScheduler 」を使った DevOps 2013 年 10 月 20 日 日本 JobScheduler ユーザグループ (代表)船井 覚( @satoruf ) 1 2013/10/20 OSC Tokyo/Fall 2013
    2. 2. アジェンダ • • • • • JobScheduler の概要 JobScheduler の基本機能 デモ JobScheduler 事例紹介 日本 JobScheduler ユーザーグループ紹介 2 2013/10/20 OSC Tokyo/Fall 2013
    3. 3. 自己紹介 • 船井 覚(ふない さとる) • OSS ラボ株式会社 代表取締役 • 日本 JobScheduler ユーザーグループ • 日本 openQRM ユーザーグループ • その他、 Hadoop 、 XtreemFS 、 Fabric etc. を企業向けに提供 3 2013/10/20 OSC Tokyo/Fall 2013
    4. 4. JobScheduler の概要と基本機 能 4 2013/10/20 OSC Tokyo/Fall 2013
    5. 5. @IT 記事 絶賛連載中 !! 5 2013/10/20 OSC Tokyo/Fall 2013
    6. 6. JobScheduler の特長 • オープンソース( GNU Public License ) – – – – • プログラマブル – – – • ジョブ定義は全て XML 形式のテキストファイル ジョブの中で、 Java, Perl, JavaScript, VBScript, Powershell, javax.script の内部 API を使っ たロジックを記述可能 外部 API ( XML 形式)により REST またはコマンドラインからジョブの実行制御、実行状 況の取得が可能 エンタープライズ・グレード – – – – 2013/10/20 ドイツの Software- und Organisations-Service 社 製 2003 年に商用版・ 2005 年に OSS 版をリリース Linux/Windows 版は、全ての機能が無料で使用可能。 サポートライセンスを購入すれば、 HP-UX/Solaris/AIX 版の利用に加えて、障害対応、バグ フィックス/ワークアラウンドの提供、新機能の早期提供、チケットシステム (OTRS) 、 JIRA の利用が提供される。 ファイル転送やログローテンション等豊富なテンプレート機能 リモートジョブ実行、冗長化機能、ロードバランス、外部認証等、エンタープライズ向け 大規模システム対応 JasperReport (ジョブ実行レポート)や Nagios (ジョブ実行監視)との連携機能 MySQL の他、 Oracle, DB2, MS SQL Server, PostgreSQL, Firebird に対応 6 OSC Tokyo/Fall 2013
    7. 7. JobScheduler のユーザ ドイツ eBank やカード決済サービス会社 イギリス 財務アプリケーションのプロバイダ オーストリア ( イタリアの ) 大手金融グループ ドイツ 大学図書館 アメリカノースカロライナ州 保健福祉サービス機関 ヨーロッパを中心に金融・産業・政府・ 日本でも最近活用され始めている! 大学 ⇒ 本日、活用事例の一つをご紹介 などの様々な機関で使用されている 7 2013/10/20 OSC Tokyo/Fall 2013
    8. 8. JobScheduler の概要 - 機能 • ジョブ定義 • ジョブ実行(時間指定 / 繰り 返し) • スケジュール • 多重実行・排他制御 • 先行・後続制御 • 優先度設定 • イベント監視 • メール通知 • 外部パラメータ設定 • 開始 / 終了遅延検知 • • • • • • クライアント / サーバ バックアップクラスタ 負荷分散クラスタ SOAP/REST の外部 API 独自の内部 API Javascript / Perl / Java / Shell Script / Powershell / VBScript / javax.script での ジョブ定義 高度なジョブ管理機能 Dev の使い慣れた言語での Job 定義 2013/10/20 OSC Tokyo/Fall 2013 8
    9. 9. アーキテクチャ JobScheduler は C++ と Java で開発されており、以下のコンポーネントで構成される。 •JobScheduler Engine – ジョブの制御と管理を司るサービス。以下の機能を包含する。 • バックアップフェイルオーバー機能 • RDBMS を使用したジョブ履歴、ログ管理機能( JDBC 接続) •JobScheduler Agent – ジョブのリモート実行エージェント •JOC (Job Operation Center) – WEB UI のジョブ管理画面 •JOE (JobScheduler Object Editor) – ジョブ定義を作成するための、 Java で稼働するスタンドアロンアプリケーション。 •JID (JobScheduler Information Dashboard) – 待機中、実行中、完了したジョブの状態、ログを一覧できる Java で稼働するスタンドアロンアプリケーション。 •JITL (JobScheduler Integrated Template Library) – ファイル転送やログローテンション等、予め含まれるテンプレート。以下のものが用意されている。 • Logging and Cleanup • Sanity Checking • Mail Forwarding • Remote Job Execution • File Transfer • File Operations (rename, copy, remove, check existence, ...) 9 2013/10/20 OSC Tokyo/Fall 2013
    10. 10. JobScheduler の構成例 デモ検証環境 デモ検証環境 シングル構成 シングル構成 管理端末 RDBMS HA 構成 HA 構成 RDBMS Live フォルダ JID JOC JOE JobScheduler Engine JobScheduler Agent プライマリ エンジン クラスタ構成スーパーバイザ クラスタ構成 JOC JobScheduler RDBMS Engine JID JOE JOC JobScheduler Engine JobScheduler Agent RDBMS バックアップ エンジン 2013/10/20 JID JOE JobScheduler Agent 管理端末 JOC JobScheduler Engine RDBMS JOC JobScheduler Engine JOC JobScheduler Engine ワーカー OSC Tokyo/Fall 2013 管理端末 JID JOE JobScheduler Agent 10
    11. 11. JOC JOE JID 11 2013/10/20 OSC Tokyo/Fall 2013
    12. 12. JobScheduler のジョブ • Job Chain Standalone Job Standalone Job – 単体で稼動するジョブを定義 • Order Job Job Chain – 複数ジョブに対して順序関係を考慮し て組み合わせるジョブ (order job) を定 義 Order Job • Schedule – ジョブの稼動予定を定義 Schedule • ジョブ定義は shellscript, windows bat 以外に Java,JavaScript,VBScript, javax.script で定義可能 • JobScheduler の特徴 – ジョブ関連の全ての定義が XML ファイルで管理 – 様々な操作を行うジョブが SOS 社から提供されている 2013/10/20 • ファイル操作、ファイル転送、 DB 制御、 SQL 操作、エージェントレ ス実行、 12 メール制御、レポーティング機能 などなど OSC Tokyo/Fall 2013
    13. 13. 定義ファイル例( XML ) Order Job ⇒ order_job.job.xml <?xml version="1.0" encoding="ISO-8859-1"?> <job order="yes" stop_on_error="no"> Standalone Job ⇒ simple.job.xml <script language="shell"> <?xml version="1.0" encoding="ISO-8859-1"?> <![CDATA[ <job name=“simple"> echo $SCHEDULER_JOB_NAME <script language="shell"> ]]> <![CDATA[ </script> echo $SCHEDULER_JOB_NAME <run_time/> ]]> </job> </script> <run_time schedule="my_schedule" /> </job> Job Chain ⇒ my_job_chain.job_chain.xml <?xml version="1.0" encoding="ISO-8859-1"?> <job_chain orders_recoverable="yes" visible="yes"> <job_chain_node state="test" job=“order_job"/> </job_chain> Schedule ⇒ my_schedule.schedule.xml 2013/10/20 <?xml version="1.0" encoding="ISO-8859-1"?> <schedule > <period single_start="10:00"/> 13 </schedule> OSC Tokyo/Fall 2013
    14. 14. ジョブ定義例 ( スクリプト ) 処理をして次のジョブをキックするジョブ • Java ※class 定義などを省略し、簡単化しています // print my hostname spooler_log.info(‘Hello World. I run at ' + spooler.hostname()); // kick next job spooler.job(‘path/to/kicked').start(); • Perl # print my hostname $spooler_log->info(' Hello World. I run at ' . $spooler->hostname); # kick next job $spooler->job('path/to/kicked')->start(); • JavaScript // print my hostname spooler_log.info(‘Hello World. I run at ' + spooler.hostname); // kick next job spooler.job(‘path/to/kicked').start(); 2013/10/20 OSC Tokyo/Fall 2013 14
    15. 15. WEB API # curl 'http://localhost:4444/<start_job%20job="sos/dailyschedule/CreateDaysSchedule "%20/>' <?xml version="1.0" encoding="ISO-8859-1"?> <spooler> <answer time="2013-07-08 17:51:19.202"> <ok> <task job="/sos/dailyschedule/CreateDaysSchedule" id="27" task="27" state="none" name="" enqueued="2013-07-08 17:51:19.211" start_at="2013-07-08 17:51:19.203" steps="0" log_file="/home/scheduler/sosberlin.com/jobscheduler/scheduler/logs/scheduler-2013-07-08-161409.scheduler.log" force_start="yes"> <log level="info"/> </task> </ok> </answer> </spooler> PHP のライブラリが SOS より提供 ⇒ プログラムからジョブ制御が可能 2013/10/20 OSC Tokyo/Fall 2013 15
    16. 16. デモシナリオ ジョブ 1 ジョブ 2-1 ジョブ 3 ジョブ 2-2 ジョブ 2-3 Job Chain: ParallelSample AnyJob Before execute execute execute sync AnyJob After Job Chain: ParallelExecution Job 2-1 sync Job 2-2 Job 2-3 16 2013/10/20 OSC Tokyo/Fall 2013
    17. 17. ジョブ管理も CI ・ CD JobScheduler の定義ファイルは全て XML ジョブのプログラムやジョブ定義を 開発 開発したジョブをバージョ ン 管理システムに反映 継続的にテスト・デプロイを 実施 2013/10/20 バージョン管理システム より CI サーバへ取り込み OSC Tokyo/Fall 2013 17
    18. 18. Fabric 等と組み合わせるとこんなジョ ブも Fabric AWS ログイン インスタンス作成 ジョブ制御 パラメータ制御 エラー制御 スケジューリング OS/NW 設定 SSH コマンド発行 アプリケーションインス トール/設定 データアップロード アプリケーション実行 実行結果ダウンロード インスタンスシャットダ ウン 2013/10/20 OSC Tokyo/Fall 2013 18
    19. 19. JobScheduler Advanced Data Exchange (JADE)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                19 2013/10/20 OSC Tokyo/Fall 2013
    20. 20. 導入事例 • 国内製造業 A 社 o o 流通・小売業向けの各種機器を製造 機器導入先のエンドユーザー企業で、機器の 保守のほか、ネットワーク監視、運用監視 サービスも併せて提供している 20 2013/10/20 OSC Tokyo/Fall 2013
    21. 21. 背景 • 監視システムのリプレースプロジェクト o o o o • Nagios を監視エンジンとして使用したシステムを開 発・導入 2012 年 1 月開発開始、同年 9 月から本稼働 フロントエンドは CakePHP で開発 監視対象ノードは現在 6,000 を超える 監視対象 o o 疎通やサーバの生死等のネットワーク監視 業務運用系の監視 ←これは Nagios だけでは難し い   2013/10/20 店舗レジの開閉店処理の実施有無 マスタファイルの送信処理の成否 OSC Tokyo/Fall 2013 21
    22. 22. 業務運用系の監視の特徴 • 監視内容 o o o o 基本的にはファイル(ログ)監視 エンドユーザー企業によって、監視の方法や 要求レベルは異なる ネットワーク環境等もいろいろ( ISDN や PHS も) 常に 24x365 監視ではなく、土日や年末年始 は監視しないといったこともある • 監視規模 o 2013/10/20 1 つのエンドユーザー企業で、数百店舗(= 22 ノード)の監視が必要となることも OSC Tokyo/Fall 2013
    23. 23. どう実現するか? <いままでは> シェルや Perl スクリ プトで監視 店舗マスタを CSV 連 携 cron で監視実行、 at でリトライ 監視結果はログファ イルとして監視シス テムに連携 • • • • <これからは> JobScheduler ! ワンストップのフロ ントエンドシステム で、複雑な監視スケ ジュールを制御 JobScheduler のジョ ブで Nagios に連携 • • • 23 2013/10/20 OSC Tokyo/Fall 2013
    24. 24. 新システム構成 24 2013/10/20 OSC Tokyo/Fall 2013
    25. 25. ジョブ(ジョブチェーン)一覧 画面 25 2013/10/20 OSC Tokyo/Fall 2013
    26. 26. 面 (基本設定) 26 2013/10/20 OSC Tokyo/Fall 2013
    27. 27. 面 (対象ノード) 27 2013/10/20 OSC Tokyo/Fall 2013
    28. 28. 面 (スケジュール) 28 2013/10/20 OSC Tokyo/Fall 2013
    29. 29. ジョブ実行履歴画面 29 2013/10/20 OSC Tokyo/Fall 2013
    30. 30. JobScheduler を採用したメ リット • 監視システムとのワンストップのフロント エンドシステムを開発できた o • JobScheduler は API が提供されているので、フ ロントエンドを独自に開発できる 既存の監視スクリプトを流用できた o JobScheduler は何でも実行できる  Shell / Perl / Java / JavaScript ... • Nagios への連携ジョブを共通化できた • オープンソース! o JobScheduler はジョブチェーンが組めるので、 共通ジョブを開発しておけば便利 30 2013/10/20 OSC Tokyo/Fall 2013
    31. 31. 日本 JobScheduler ユーザーグルー プ • 2013/4 発足 • JobScheduler いけるやん、という人の集まり • 独 SOS サイトにも掲載 “Company News : Japanese language JobScheduler user group on Facebook” http://www.sos-berlin.com/modules/news/article.php?storyid=42 • 会則/会費ありません • 会員資格ありません、 Google Groups に参加して下 さい https://groups.google.com/forum/?fromgroups#!forum/jobscheduler-ja • 現在メンバー30名 • JobScheduler を使う上での疑問やノウハウの共有 31 • 勉強会と言う名の飲み会 2013/10/20 OSC Tokyo/Fall 2013
    32. 32. 活動内容 • グループサイトの運営 https://sites.google.com/site/jobschedulerja/home – Wiki, tips, ドキュメントを掲載 • Facebook ページ http://ja-jp.facebook.com/pages/Jobscheduler-Japan- ユーザーグルー プ /594469610565511 – 各種告知 – いいね!をお願いします!! • 普及活動 2013/10/20 – July Tech Festa 2013 – Open Source Conference Tokyo/Fall OSC Tokyo/Fall 2013 32
    33. 33. 最後に • Please join us!! https://groups.google.com/forum/? fromgroups#!forum/jobscheduler-ja 33 2013/10/20 OSC Tokyo/Fall 2013
    34. 34. ご清聴ありがとうございま した 34 2013/10/20 OSC Tokyo/Fall 2013

    ×