JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013
-
Upload
oss -
Category
Technology
-
view
2.276 -
download
3
Transcript of JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013
1
オープンソースジョブ管理ツール「 JobScheduler 」を使ったDevOps
2013 年 10 月 20 日日本 JobScheduler ユーザグループ
(代表)船井 覚( @satoruf )
Open Source Conference Tokyo/Fall 2013
2013/10/20 OSC Tokyo/Fall 2013
2
アジェンダ
• JobScheduler の概要• JobScheduler の基本機能• デモ• JobScheduler 事例紹介• 日本 JobScheduler ユーザーグループ紹介
2013/10/20 OSC Tokyo/Fall 2013
自己紹介
• 船井 覚(ふない さとる)
• OSS ラボ株式会社 代表取締役
• 日本 JobScheduler ユーザーグループ• 日本 openQRM ユーザーグループ• その他、 Hadoop 、 XtreemFS 、 Fabric
etc. を企業向けに提供3
2013/10/20 OSC Tokyo/Fall 2013
JobScheduler の概要と基本機能
4
2013/10/20 OSC Tokyo/Fall 2013
@IT 記事 絶賛連載中 !!
2013/10/20 OSC Tokyo/Fall 2013
5
JobScheduler の特長
• オープンソース( GNU Public License )– ドイツの Software- und Organisations-Service 社 製– 2003 年に商用版・ 2005 年に OSS 版をリリース– Linux/Windows 版は、全ての機能が無料で使用可能。– サポートライセンスを購入すれば、 HP-UX/Solaris/AIX 版の利用に加えて、障害対応、バグ
フィックス/ワークアラウンドの提供、新機能の早期提供、チケットシステム(OTRS) 、 JIRA の利用が提供される。
• プログラマブル– ジョブ定義は全て XML 形式のテキストファイル– ジョブの中で、 Java, Perl, JavaScript, VBScript, Powershell, javax.script の内部 API を使った
ロジックを記述可能– 外部 API ( XML 形式)により REST またはコマンドラインからジョブの実行制御、実行状況
の取得が可能
• エンタープライズ・グレード– ファイル転送やログローテンション等豊富なテンプレート機能– リモートジョブ実行、冗長化機能、ロードバランス、外部認証等、エンタープライズ向け大規
模システム対応– JasperReport (ジョブ実行レポート)や Nagios (ジョブ実行監視)との連携機能– MySQL の他、 Oracle, DB2, MS SQL Server, PostgreSQL, Firebird に対応
2013/10/20 OSC Tokyo/Fall 2013
6
7
JobScheduler のユーザ
ドイツeBank やカード決済サービス会社
イギリス財務アプリケーションのプロバイダ
オーストリア( イタリアの ) 大手金融グループ
アメリカノースカロライナ州保健福祉サービス機関
ヨーロッパを中心に金融・産業・政府・大学
などの様々な機関で使用されている
日本でも最近活用され始めている!⇒本日、活用事例の一つをご紹介
ドイツ大学図書館
2013/10/20 OSC Tokyo/Fall 2013
8
JobScheduler の概要 - 機能 -
• ジョブ定義• ジョブ実行(時間指定 / 繰り返
し)• スケジュール• 多重実行・排他制御• 先行・後続制御• 優先度設定• イベント監視• メール通知• 外部パラメータ設定• 開始 / 終了遅延検知
• クライアント / サーバ• バックアップクラスタ• 負荷分散クラスタ• SOAP/REST の外部 API• 独自の内部 API• Javascript / Perl / Java / Shell
Script / Powershell / VBScript / javax.script でのジョブ定義
高度なジョブ管理機能Dev の使い慣れた言語での Job 定義
2013/10/20 OSC Tokyo/Fall 2013
アーキテクチャ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, ...)
2013/10/20 OSC Tokyo/Fall 2013
9
デモ検証環境デモ検証環境
HA構成HA構成
シングル構成シングル構成
クラスタ構成クラスタ構成
10
JobScheduler の構成例
2013/10/20 OSC Tokyo/Fall 2013
JobScheduler Engine
JOCJOEJID
JobScheduler Agent
RDBMS
JobScheduler Engine
JOCJOEJID
JobScheduler Agent
RDBMS
JobScheduler Engine
JOC
RDBMS
JobScheduler Engine
JOCJOEJID
JobScheduler Agent
RDBMS
JobScheduler Engine
JOC
バックアップ エンジン
プライマリ エンジンスーパーバイザ
ワーカー
管理端末
管理端末管理端末
Liveフォルダ
JobScheduler Engine
JOC JOEJID
JobScheduler Agent
RDBMS
JOCJOC
JOEJOE
JIDJID
2013/10/20 OSC Tokyo/Fall 2013
11
12
JobScheduler のジョブ
Standalone Job
Job Chain
Schedule
• JobScheduler の特徴– ジョブ関連の全ての定義が XML ファイルで管理– 様々な操作を行うジョブが SOS 社から提供されている
• ファイル操作、ファイル転送、 DB 制御、 SQL操作、エージェントレス実行、メール制御、レポーティング機能 などなど
• Standalone Job– 単体で稼動するジョブを定義
• Job Chain– 複数ジョブに対して順序関係を考慮し
て組み合わせるジョブ (order job) を定義
• Schedule– ジョブの稼動予定を定義
• ジョブ定義は shellscript, windows bat以外に Java,JavaScript,VBScript,
javax.script で定義可能
Order Job
Order Job
2013/10/20 OSC Tokyo/Fall 2013
13
定義ファイル例( XML )Order Job order_job.job.xml⇒<?xml version="1.0" encoding="ISO-8859-1"?><job order="yes" stop_on_error="no"> <script language="shell"> <![CDATA[echo $SCHEDULER_JOB_NAME ]]> </script> <run_time/></job>
Standalone Job simple.job.xml⇒<?xml version="1.0" encoding="ISO-8859-1"?><job name=“simple"> <script language="shell"> <![CDATA[echo $SCHEDULER_JOB_NAME ]]> </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>
2013/10/20 OSC Tokyo/Fall 2013
Schedule my_schedule.schedule.xml⇒<?xml version="1.0" encoding="ISO-8859-1"?><schedule > <period single_start="10:00"/></schedule>
14
ジョブ定義例 ( スクリプト )処理をして次のジョブをキックするジョブ
// print my hostnamespooler_log.info(‘Hello World. I run at ' + spooler.hostname());// kick next jobspooler.job(‘path/to/kicked').start();
• 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 hostnamespooler_log.info(‘Hello World. I run at ' + spooler.hostname);// kick next jobspooler.job(‘path/to/kicked').start();
• JavaScript
2013/10/20 OSC Tokyo/Fall 2013
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/sos-berlin.com/jobscheduler/scheduler/logs/scheduler-2013-07-08-161409.scheduler.log" force_start="yes"> <log level="info"/> </task> </ok> </answer></spooler>
2013/10/20 OSC Tokyo/Fall 2013
PHP のライブラリが SOS より提供⇒プログラムからジョブ制御が可能
1616
デモシナリオ
2013/10/20 OSC Tokyo/Fall 2013
ジョブ 1 ジョブ 2-1
ジョブ 2-2
ジョブ 2-3
ジョブ 3
AnyJobBefore
execute execute execute syncAnyJob
After
Job 2-1
Job 2-2
Job 2-3
Job Chain: ParallelSample
Job Chain: ParallelExecution
sync
17
ジョブ管理も CI ・ CDJobScheduler の定義ファイルは全て
XML
ジョブのプログラムやジョブ定義を開発開発したジョブをバージョ
ン管理システムに反映
バージョン管理システムより
CI サーバへ取り込み
継続的にテスト・デプロイを実施
2013/10/20 OSC Tokyo/Fall 2013
Fabric 等と組み合わせるとこんなジョブも
AWS ログイン
インスタンス作成
OS/NW 設定
アプリケーションインス
トール/設定
データアップロード
アプリケーション実行
実行結果ダウンロード
インスタンスシャットダウ
ン
2013/10/20 OSC Tokyo/Fall 2013
18
Fabric
ジョブ制御パラメータ制御
エラー制御スケジューリング
SSHコマンド発行
JobScheduler Advanced Data Exchange (JADE)
2013/10/20 OSC Tokyo/Fall 2013
19
導入事例
• 国内製造業 A 社o 流通・小売業向けの各種機器を製造o 機器導入先のエンドユーザー企業で、機器
の保守のほか、ネットワーク監視、運用監視サービスも併せて提供している
2013/10/20 OSC Tokyo/Fall 2013
20
背景
• 監視システムのリプレースプロジェクトo Nagios を監視エンジンとして使用したシステムを開発・導入
o 2012 年 1 月開発開始、同年 9 月から本稼働o フロントエンドは CakePHP で開発o 監視対象ノードは現在 6,000 を超える
• 監視対象o 疎通やサーバの生死等のネットワーク監視o 業務運用系の監視 ←これは Nagiosだけでは難しい
店舗レジの開閉店処理の実施有無 マスタファイルの送信処理の成否
2013/10/20 OSC Tokyo/Fall 2013
21
業務運用系の監視の特徴
• 監視内容o 基本的にはファイル(ログ)監視o エンドユーザー企業によって、監視の方法や要求
レベルは異なるo ネットワーク環境等もいろいろ( ISDN や PHS
も)o 常に 24x365 監視ではなく、土日や年末年始は監
視しないといったこともある
• 監視規模o 1 つのエンドユーザー企業で、数百店舗(=ノー
ド)の監視が必要となることも
2013/10/20 OSC Tokyo/Fall 2013
22
どう実現するか?
<いままでは>
• シェルや Perl スクリプトで監視
• 店舗マスタを CSV 連携
• cron で監視実行、 atでリトライ
• 監視結果はログファイルとして監視システムに連携
<これからは>
• JobScheduler !
• ワンストップのフロントエンドシステムで、複雑な監視スケジュールを制御
• JobScheduler のジョブで Nagios に連携
2013/10/20 OSC Tokyo/Fall 2013
23
新システム構成
2013/10/20 OSC Tokyo/Fall 2013
24
ジョブ(ジョブチェーン)一覧画面
2013/10/20 OSC Tokyo/Fall 2013
25
ジョブオーダーグループ編集画面(基本設定)
2013/10/20 OSC Tokyo/Fall 2013
26
ジョブオーダーグループ編集画面(対象ノード)
2013/10/20 OSC Tokyo/Fall 2013
27
ジョブオーダーグループ編集画面(スケジュール)
2013/10/20 OSC Tokyo/Fall 2013
28
ジョブ実行履歴画面
2013/10/20 OSC Tokyo/Fall 2013
29
JobScheduler を採用したメリット• 監視システムとのワンストップのフロント
エンドシステムを開発できたo JobScheduler は API が提供されているので、
フロントエンドを独自に開発できる• 既存の監視スクリプトを流用できた
o JobScheduler は何でも実行できる Shell / Perl / Java / JavaScript ...
• Nagiosへの連携ジョブを共通化できたo JobScheduler はジョブチェーンが組めるので、共通ジョブを開発しておけば便利
• オープンソース!
2013/10/20 OSC Tokyo/Fall 2013
30
日本 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 を使う上での疑問やノウハウの共有• 勉強会と言う名の飲み会
2013/10/20 OSC Tokyo/Fall 2013
31
活動内容
• グループサイトの運営https://sites.google.com/site/jobschedulerja/home
– Wiki, tips, ドキュメントを掲載• Facebookページhttp://ja-jp.facebook.com/pages/Jobscheduler-Japan- ユーザーグループ /
594469610565511
–各種告知– いいね!をお願いします!!
• 普及活動– July Tech Festa 2013– Open Source Conference Tokyo/Fall
2013/10/20
32
OSC Tokyo/Fall 2013
最後に
• Please join us!!
https://groups.google.com/forum/?fromgroups#!forum/jobscheduler-ja
2013/10/20
33
OSC Tokyo/Fall 2013
ご清聴ありがとうございました
34
2013/10/20 OSC Tokyo/Fall 2013