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

34
1 オオオオオオオオオオオオオオオ JobScheduler オオオオ DevOps 2013 オ 10 オ 20 オ オオ JobScheduler オオオオオオオ オオオ オオ () @satoruf Open Source Conference Tokyo/Fall 2013 2013/10/20 OSC Tokyo/Fall 2013

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

Page 1: 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

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

2

アジェンダ

• JobScheduler の概要• JobScheduler の基本機能• デモ• JobScheduler 事例紹介• 日本 JobScheduler ユーザーグループ紹介

2013/10/20 OSC Tokyo/Fall 2013

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

自己紹介

• 船井 覚(ふない さとる)

• OSS ラボ株式会社 代表取締役

• 日本 JobScheduler ユーザーグループ• 日本 openQRM ユーザーグループ• その他、 Hadoop 、 XtreemFS 、 Fabric

etc. を企業向けに提供3

2013/10/20 OSC Tokyo/Fall 2013

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

JobScheduler の概要と基本機能

4

2013/10/20 OSC Tokyo/Fall 2013

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

@IT 記事 絶賛連載中 !!

2013/10/20 OSC Tokyo/Fall 2013

5

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

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

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

7

JobScheduler のユーザ

ドイツeBank やカード決済サービス会社

イギリス財務アプリケーションのプロバイダ

オーストリア( イタリアの ) 大手金融グループ

アメリカノースカロライナ州保健福祉サービス機関

ヨーロッパを中心に金融・産業・政府・大学

などの様々な機関で使用されている

日本でも最近活用され始めている!⇒本日、活用事例の一つをご紹介

ドイツ大学図書館

2013/10/20 OSC Tokyo/Fall 2013

Page 8: JobSchedulerを使ったDevOps at 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

Page 9: JobSchedulerを使ったDevOps at 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

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

デモ検証環境デモ検証環境

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

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

JOCJOC

JOEJOE

JIDJID

2013/10/20 OSC Tokyo/Fall 2013

11

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

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

Page 13: JobSchedulerを使ったDevOps at 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>

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

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

Page 15: JobSchedulerを使ったDevOps at 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 より提供⇒プログラムからジョブ制御が可能

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

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

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

17

ジョブ管理も CI ・ CDJobScheduler の定義ファイルは全て

XML

ジョブのプログラムやジョブ定義を開発開発したジョブをバージョ

ン管理システムに反映

バージョン管理システムより

CI サーバへ取り込み

継続的にテスト・デプロイを実施

2013/10/20 OSC Tokyo/Fall 2013

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

Fabric 等と組み合わせるとこんなジョブも

AWS ログイン

インスタンス作成

OS/NW 設定

アプリケーションインス

トール/設定

データアップロード

アプリケーション実行

実行結果ダウンロード

インスタンスシャットダウ

2013/10/20 OSC Tokyo/Fall 2013

18

Fabric

ジョブ制御パラメータ制御

エラー制御スケジューリング

SSHコマンド発行

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

JobScheduler Advanced Data Exchange (JADE)

2013/10/20 OSC Tokyo/Fall 2013

19

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

導入事例

• 国内製造業 A 社o 流通・小売業向けの各種機器を製造o 機器導入先のエンドユーザー企業で、機器

の保守のほか、ネットワーク監視、運用監視サービスも併せて提供している

2013/10/20 OSC Tokyo/Fall 2013

20

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

背景

• 監視システムのリプレースプロジェクトo Nagios を監視エンジンとして使用したシステムを開発・導入

o 2012 年 1 月開発開始、同年 9 月から本稼働o フロントエンドは CakePHP で開発o 監視対象ノードは現在 6,000 を超える

• 監視対象o 疎通やサーバの生死等のネットワーク監視o 業務運用系の監視 ←これは Nagiosだけでは難しい

店舗レジの開閉店処理の実施有無 マスタファイルの送信処理の成否

2013/10/20 OSC Tokyo/Fall 2013

21

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

業務運用系の監視の特徴

• 監視内容o 基本的にはファイル(ログ)監視o エンドユーザー企業によって、監視の方法や要求

レベルは異なるo ネットワーク環境等もいろいろ( ISDN や PHS

も)o 常に 24x365 監視ではなく、土日や年末年始は監

視しないといったこともある

• 監視規模o 1 つのエンドユーザー企業で、数百店舗(=ノー

ド)の監視が必要となることも

2013/10/20 OSC Tokyo/Fall 2013

22

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

どう実現するか?

<いままでは>

• シェルや Perl スクリプトで監視

• 店舗マスタを CSV 連携

• cron で監視実行、 atでリトライ

• 監視結果はログファイルとして監視システムに連携

<これからは>

• JobScheduler !

• ワンストップのフロントエンドシステムで、複雑な監視スケジュールを制御

• JobScheduler のジョブで Nagios に連携

2013/10/20 OSC Tokyo/Fall 2013

23

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

新システム構成

2013/10/20 OSC Tokyo/Fall 2013

24

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

ジョブ(ジョブチェーン)一覧画面

2013/10/20 OSC Tokyo/Fall 2013

25

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

ジョブオーダーグループ編集画面(基本設定)

2013/10/20 OSC Tokyo/Fall 2013

26

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

ジョブオーダーグループ編集画面(対象ノード)

2013/10/20 OSC Tokyo/Fall 2013

27

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

ジョブオーダーグループ編集画面(スケジュール)

2013/10/20 OSC Tokyo/Fall 2013

28

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

ジョブ実行履歴画面

2013/10/20 OSC Tokyo/Fall 2013

29

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

JobScheduler を採用したメリット• 監視システムとのワンストップのフロント

エンドシステムを開発できたo JobScheduler は API が提供されているので、

フロントエンドを独自に開発できる• 既存の監視スクリプトを流用できた

o JobScheduler は何でも実行できる Shell / Perl / Java / JavaScript ...

• Nagiosへの連携ジョブを共通化できたo JobScheduler はジョブチェーンが組めるので、共通ジョブを開発しておけば便利

• オープンソース!

2013/10/20 OSC Tokyo/Fall 2013

30

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

日本 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

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

活動内容

• グループサイトの運営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

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

最後に

• Please join us!!

https://groups.google.com/forum/?fromgroups#!forum/jobscheduler-ja

2013/10/20

33

OSC Tokyo/Fall 2013

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

ご清聴ありがとうございました

34

2013/10/20 OSC Tokyo/Fall 2013