Weitere ähnliche Inhalte Ähnlich wie JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013 (20) JobSchedulerを使ったDevOps at OSC Tokyo/Fall 20131. Open Source Conference Tokyo/Fall 2013
オープンソースジョブ管理ツー
ル「 JobScheduler 」を使った
DevOps
2013 年 10 月 20 日
日本 JobScheduler ユーザグループ
(代表)船井 覚( @satoruf )
1
2013/10/20
OSC Tokyo/Fall 2013
3. 自己紹介
• 船井 覚(ふない さとる)
• OSS ラボ株式会社 代表取締役
• 日本 JobScheduler ユーザーグループ
• 日本 openQRM ユーザーグループ
• その他、 Hadoop 、 XtreemFS 、 Fabric
etc. を企業向けに提供
3
2013/10/20
OSC Tokyo/Fall 2013
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
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. アーキテクチャ
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. 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
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. 定義ファイル例( 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. ジョブ定義例 ( スクリプト )
処理をして次のジョブをキックするジョブ
• 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. 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. デモシナリオ
ジョブ 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. ジョブ管理も CI ・ CD
JobScheduler の定義ファイルは全て XML
ジョブのプログラムやジョブ定義を
開発
開発したジョブをバージョ
ン
管理システムに反映
継続的にテスト・デプロイを
実施
2013/10/20
バージョン管理システム
より
CI サーバへ取り込み
OSC Tokyo/Fall 2013
17
19. JobScheduler Advanced
Data Exchange (JADE)
19
2013/10/20
OSC Tokyo/Fall 2013
20. 導入事例
• 国内製造業 A 社
o
o
流通・小売業向けの各種機器を製造
機器導入先のエンドユーザー企業で、機器の
保守のほか、ネットワーク監視、運用監視
サービスも併せて提供している
20
2013/10/20
OSC Tokyo/Fall 2013
23. どう実現するか?
<いままでは>
シェルや Perl スクリ
プトで監視
店舗マスタを CSV 連
携
cron で監視実行、 at
でリトライ
監視結果はログファ
イルとして監視シス
テムに連携
•
•
•
•
<これからは>
JobScheduler !
ワンストップのフロ
ントエンドシステム
で、複雑な監視スケ
ジュールを制御
JobScheduler のジョ
ブで Nagios に連携
•
•
•
23
2013/10/20
OSC Tokyo/Fall 2013
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
33. 最後に
• Please join us!!
https://groups.google.com/forum/?
fromgroups#!forum/jobscheduler-ja
33
2013/10/20
OSC Tokyo/Fall 2013
Hinweis der Redaktion 複雑な制御はプログラミングをする
一部はJITLで提供されている
ALEX