jtf13 ossジョブ管理システムによる運用自動化事例

41
1 OSS ジジジジジジジジジジジジジジジジジジ 2013 ジ 7 ジ 14 ジ ジジ JobScheduler ジジジジジジジ ジジジ ジジ () @satoruf ジジ ジ一( @inoccu ジジ ジ@ken_aio JTF2013 #techfesta 2013/07/14 JTF2013 #techfesta

Upload: oss

Post on 28-May-2015

4.998 views

Category:

Technology


8 download

DESCRIPTION

SOS JobScheduler Overview and Case study at JTF2013

TRANSCRIPT

Page 1: Jtf13 ossジョブ管理システムによる運用自動化事例

1

OSS ジョブ管理システムによる運用自動化事例

2013 年 7 月 14 日日本 JobScheduler ユーザグループ

(代表)船井 覚( @satoruf )井上 研一( @inoccu )秋穂 賢( @ken_aio )

JTF2013 #techfesta

2013/07/14 JTF2013 #techfesta

Page 2: Jtf13 ossジョブ管理システムによる運用自動化事例

2

アジェンダ

• JobScheduler の概要• JobScheduler の基本機能• 想定シナリオのデモ

• JobScheduler 事例紹介

• 日本 JobScheduler ユーザーグループ紹介

2013/07/14 JTF2013 #techfesta

Page 3: Jtf13 ossジョブ管理システムによる運用自動化事例

自己紹介

• 秋穂 賢(あきほ すぐる)

• 某 Sier 所属

• メインフレーム歴:4年• OSS 歴: 5 ヶ月

• JobScheduler イケてる!と思ってる一人3

2013/07/14 JTF2013 #techfesta

Page 4: Jtf13 ossジョブ管理システムによる運用自動化事例

JobScheduler の概要と基本機能

4

2013/07/14 JTF2013 #techfesta

Page 5: Jtf13 ossジョブ管理システムによる運用自動化事例

5

JobScheduler とは

• OSS の Job 管理製品( GNU Public License )– ドイツの Software- und Organisations-Service 製– 2003 年に商用版・ 2005 年に OSS 版をリリース

• Web ブラウザ (JOC) ・ JOE (デスクトップ)といった GUI ツールで Job の監視や管理を実施

• Windows, Linux, Solaris( 商用版のみ ), AIX( 商用版のみ ), HP-UX( 商用版のみ ) に対応

• リモートジョブ実行、冗長化機能、ロードバランス、外部認証等、エンタープライズ向け大規模システム対応

• 商用版には SOS 社のサポートが含まれる2013/07/14 JTF2013 #techfesta

Page 6: Jtf13 ossジョブ管理システムによる運用自動化事例

6

JobScheduler のユーザ

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

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

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

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

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

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

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

ドイツ大学図書館

2013/07/14 JTF2013 #techfesta

Page 7: Jtf13 ossジョブ管理システムによる運用自動化事例

7

JobScheduler の概要 - 機能 -

• ジョブ定義• ジョブ実行(時間指定 / 繰り返

し)• スケジュール• 多重実行・排他制御• 先行・後続制御• 優先度設定• イベント監視• メール通知• 外部パラメータ設定• 開始 / 終了遅延検知

• クライアント / サーバ• バックアップクラスタ• 負荷分散クラスタ• SOAP/REST の外部 API• 独自の内部 API• Javascript / Perl / Java / Shell

Script / Powershell / VBScript / javax.script でのジョブ定義

高度なジョブ管理機能Dev の使い慣れた言語での Job 定義

2013/07/14 JTF2013 #techfesta

Page 8: Jtf13 ossジョブ管理システムによる運用自動化事例

8

クライアント / サーバ

JOCJOC JIDJIDJobScheduler

EngineJobScheduler

EngineRDBMSRDBMS

JobScheduler の稼働サーバ

JOEJOE

JobScheduler の管理端末

JobSchedulerAgent

JobSchedulerAgent

ジョブの稼働サーバ

JobScheduler の基本的な構成

2013/07/14 JTF2013 #techfesta

Page 9: Jtf13 ossジョブ管理システムによる運用自動化事例

JOC

JOE

JID

2013/07/14 JTF2013 #techfesta

9

Page 10: Jtf13 ossジョブ管理システムによる運用自動化事例

10

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/07/14 JTF2013 #techfesta

Page 11: Jtf13 ossジョブ管理システムによる運用自動化事例

11

定義ファイル例( 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> Schedule my_schedule.schedule.xml⇒

<?xml version="1.0" encoding="ISO-8859-1"?><schedule > <period single_start="10:00"/></schedule>

2013/07/14 JTF2013 #techfesta

Page 12: Jtf13 ossジョブ管理システムによる運用自動化事例

12

ジョブ定義例 ( スクリプト )処理をして次のジョブをキックするジョブ

// 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/07/14 JTF2013 #techfesta

Page 13: Jtf13 ossジョブ管理システムによる運用自動化事例

13

WEB API

PHP のライブラリが SOS より提供⇒プログラマブルにジョブ管理可能

# 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/07/14 JTF2013 #techfesta

Page 14: Jtf13 ossジョブ管理システムによる運用自動化事例

14

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

XML

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

ン管理システムに反映

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

CI サーバへ取り込み

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

2013/07/14 JTF2013 #techfesta

Page 15: Jtf13 ossジョブ管理システムによる運用自動化事例

1515

デモシナリオ

• 日次のデータ処理後にデータバックアップを取得• 日次データ処理は毎日 20:00 から稼動• 日次のデータ処理は 5 多重で実行

– ただし、処理①と処理②は同時に稼動させない ( 排他制御 )

• バックアップはデータ処理が全て完了した後に実行• データバックアップは 2 多重で実行

この要件のジョブフローを定義してみる

2013/07/14 JTF2013 #techfesta

Page 16: Jtf13 ossジョブ管理システムによる運用自動化事例

16

ジョブフロー

16

処理①

処理②

処理③

処理④

処理⑤

process1

process2

process3

process4

process5

バックアップ①

バックアップ②

bkup1

bkup2

• データ処理➡バックアップ• 処理➡ 20:00 稼動• 処理➡ 5 多重

• 処理①・処理②➡排他

• バックアップ➡データ処理完了後

• バックアップ➡ 2 多重

20:0020:00排他制御排他制御

20:0020:00

20:0020:00

20:0020:00

20:0020:00

2013/07/14 JTF2013 #techfesta

Page 17: Jtf13 ossジョブ管理システムによる運用自動化事例

1717

JobScheduler でのジョブフロー

データ処理キック Job

処理①

処理②

処理③

処理④

処理⑤

p_kick

process1

process2

process3

process4

process5

同期 バックアップキック Job

バックアップ①

バックアップ②

sync b_kick

bkup1

bkup2

※デモでは全て 10秒 wait した後に 正常終了する Job を使用

20:0020:00

排他制御排他制御

2013/07/14 JTF2013 #techfesta

Page 18: Jtf13 ossジョブ管理システムによる運用自動化事例

1818

構成の説明

データ処理キック Job

処理①

処理②

処理③

処理④

処理⑤

p_kick

process1

process2

process3

process4

process5

同期 バックアップキック Job

バックアップ①

バックアップ②

sync b_kick

bkup1

bkup2

排他 lock

排他 lock

echo で Job を正常終了させ、正常終了時の XMLコマンドで後続5Job を開始させている

everyday_at2000

 毎日 20:00 稼働

「処理①~⑤⇒同期」は JobChainとなっており、処理③のみ同期⇒バックアップキック Jobと JobChain が組まれている

echo で Job を正常終了させ、正常終了時の XMLコマンドで後続2Job を開始させている

2013/07/14 JTF2013 #techfesta

Page 19: Jtf13 ossジョブ管理システムによる運用自動化事例

JobScheduler 事例紹介

ここからは、 JobScheduler の日本での導入事例をご紹介します。

2013/07/14 JTF2013 #techfesta

19

Page 20: Jtf13 ossジョブ管理システムによる運用自動化事例

自己紹介

• 井上 研一– Twitter :  @inoccu– Facebook :  kenichi.inoue

• アルティザンエッジ合同会社 代表社員 CEO– 2012 年 7 月 7 日、個人事業主として設立– 2013 年 7 月 5 日、会社になりました!– http://artisanedge.jp– http://artisanedge.jp/solution/jobscheduler/

• Dev側の人です

2013/07/14 JTF2013 #techfesta

20

Page 21: Jtf13 ossジョブ管理システムによる運用自動化事例

導入企業

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

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

2013/07/14 JTF2013 #techfesta

21

Page 22: Jtf13 ossジョブ管理システムによる運用自動化事例

背景

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

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

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

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

2013/07/14 JTF2013 #techfesta

22

Page 23: Jtf13 ossジョブ管理システムによる運用自動化事例

業務運用系の監視の特徴

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

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

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

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

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

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

2013/07/14 JTF2013 #techfesta

23

Page 24: Jtf13 ossジョブ管理システムによる運用自動化事例

どう実現するか?

<いままでは>

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

• 店舗マスタを CSV 連携

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

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

<これからは>

• JobScheduler !

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

• JobScheduler のジョブで Nagios に連携

2013/07/14 JTF2013 #techfesta

24

Page 25: Jtf13 ossジョブ管理システムによる運用自動化事例

新システム構成

2013/07/14 JTF2013 #techfesta

25

Page 26: Jtf13 ossジョブ管理システムによる運用自動化事例

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

2013/07/14 JTF2013 #techfesta

26

Page 27: Jtf13 ossジョブ管理システムによる運用自動化事例

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

2013/07/14 JTF2013 #techfesta

27

Page 28: Jtf13 ossジョブ管理システムによる運用自動化事例

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

2013/07/14 JTF2013 #techfesta

28

Page 29: Jtf13 ossジョブ管理システムによる運用自動化事例

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

2013/07/14 JTF2013 #techfesta

29

Page 30: Jtf13 ossジョブ管理システムによる運用自動化事例

ジョブ実行履歴画面

2013/07/14 JTF2013 #techfesta

30

Page 31: Jtf13 ossジョブ管理システムによる運用自動化事例

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

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

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

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

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

• オープンソース!

2013/07/14 JTF2013 #techfesta

31

Page 32: Jtf13 ossジョブ管理システムによる運用自動化事例

今後の方向性

• すべての業務監視ジョブ・対象店舗の JobSchedulerへの移行o 現時点では、かけられる工数等の問題もあ

り、すべてを移行できているわけではない

• JITL (テンプレートライブラリ)の活用

• ファイル転送での SOS FTP の活用

• 機器アップグレードでの活用ができないか?

2013/07/14 JTF2013 #techfesta

32

Page 33: Jtf13 ossジョブ管理システムによる運用自動化事例

機器アップグレードでの活用

2013/07/14 JTF2013 #techfesta

33

Page 34: Jtf13 ossジョブ管理システムによる運用自動化事例

日本 JobSchedulerユーザーグループ( JJUG )ご紹介

2013/07/14 JTF2013 #techfesta

34

Page 35: Jtf13 ossジョブ管理システムによる運用自動化事例

自己紹介• PC8001• オフコン、ビジコン• メインフレーム• ミニコン• スーパーミニコン• ミニスーパーコン• ワークステーション• RISC vs CISC

• 紙テープ、パンチカード• テープ、ディスクパック• CP/M, MS-DOS2.0• ISAM 、階層型、ネットワー

ク型データベース• RDBMS 、並列プログラミン

グ• SMP, MPP, NUMA• ネットワーク• セキュリティサービス

35

コンピュータ屋歴 32年エンタープライズ向け OSS インテグレーションコンピュータ屋歴 32年エンタープライズ向け OSS インテグレーション

2013/07/14 JTF2013 #techfesta

Page 36: Jtf13 ossジョブ管理システムによる運用自動化事例

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

• 現在メンバー16名• JobScheduler を使う上での疑問やノウハウの共有• 勉強会と言う名の飲み会

2013/07/14 JTF2013 #techfesta

36

Page 37: Jtf13 ossジョブ管理システムによる運用自動化事例

活動内容

• 勉強会– 5/2 第0回開催、–今後の活動内容について相談

– 6/7  第 1回開催、 JTF参加について相談• LT :某製造業事例、 fabric を使った JobScheduler

全自動インストール

– 月 1回くらいで情報交換

2013/07/14

37

JTF2013 #techfesta

Page 38: Jtf13 ossジョブ管理システムによる運用自動化事例

活動内容

• グループサイトの運営https://sites.google.com/site/jobschedulerja/home

– Wiki, tips, ドキュメントを掲載• Facebookページhttp://ja-jp.facebook.com/pages/Jobscheduler-Japan- ユーザーグループ /

594469610565511

–各種告知– いいね!をお願いします!!

• 普及活動– JTF (今日)–次は秋の OSC東京?

2013/07/14

38

JTF2013 #techfesta

Page 39: Jtf13 ossジョブ管理システムによる運用自動化事例

次回勉強会

• 日程:8月23日(金)19時〜21時• 会場:募集中• 内容:募集中• LT:募集中• 懇親会:たぶん、いや行くでしょ www

• 会場、ネタのご提供は、メーリングリストまでご連絡お願いします。[email protected]

39

2013/07/14 JTF2013 #techfesta

Page 40: Jtf13 ossジョブ管理システムによる運用自動化事例

最後に

• Please join us!!

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

2013/07/14

40

JTF2013 #techfesta

Page 41: Jtf13 ossジョブ管理システムによる運用自動化事例

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

41

2013/07/14 JTF2013 #techfesta