jtf13 ossジョブ管理システムによる運用自動化事例
DESCRIPTION
SOS JobScheduler Overview and Case study at JTF2013TRANSCRIPT
1
OSS ジョブ管理システムによる運用自動化事例
2013 年 7 月 14 日日本 JobScheduler ユーザグループ
(代表)船井 覚( @satoruf )井上 研一( @inoccu )秋穂 賢( @ken_aio )
JTF2013 #techfesta
2013/07/14 JTF2013 #techfesta
2
アジェンダ
• JobScheduler の概要• JobScheduler の基本機能• 想定シナリオのデモ
• JobScheduler 事例紹介
• 日本 JobScheduler ユーザーグループ紹介
2013/07/14 JTF2013 #techfesta
自己紹介
• 秋穂 賢(あきほ すぐる)
• 某 Sier 所属
• メインフレーム歴:4年• OSS 歴: 5 ヶ月
• JobScheduler イケてる!と思ってる一人3
2013/07/14 JTF2013 #techfesta
JobScheduler の概要と基本機能
4
2013/07/14 JTF2013 #techfesta
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
6
JobScheduler のユーザ
ドイツeBank やカード決済サービス会社
イギリス財務アプリケーションのプロバイダ
オーストリア( イタリアの ) 大手金融グループ
アメリカノースカロライナ州保健福祉サービス機関
ヨーロッパを中心に金融・産業・政府・大学
などの様々な機関で使用されている
日本でも最近活用され始めている!⇒本日、活用事例の一つをご紹介
ドイツ大学図書館
2013/07/14 JTF2013 #techfesta
7
JobScheduler の概要 - 機能 -
• ジョブ定義• ジョブ実行(時間指定 / 繰り返
し)• スケジュール• 多重実行・排他制御• 先行・後続制御• 優先度設定• イベント監視• メール通知• 外部パラメータ設定• 開始 / 終了遅延検知
• クライアント / サーバ• バックアップクラスタ• 負荷分散クラスタ• SOAP/REST の外部 API• 独自の内部 API• Javascript / Perl / Java / Shell
Script / Powershell / VBScript / javax.script でのジョブ定義
高度なジョブ管理機能Dev の使い慣れた言語での Job 定義
2013/07/14 JTF2013 #techfesta
8
クライアント / サーバ
JOCJOC JIDJIDJobScheduler
EngineJobScheduler
EngineRDBMSRDBMS
JobScheduler の稼働サーバ
JOEJOE
JobScheduler の管理端末
JobSchedulerAgent
JobSchedulerAgent
ジョブの稼働サーバ
JobScheduler の基本的な構成
2013/07/14 JTF2013 #techfesta
JOC
JOE
JID
2013/07/14 JTF2013 #techfesta
9
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
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
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
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
14
ジョブ管理も CI ・ CDJobScheduler の定義ファイルは全て
XML
ジョブのプログラムやジョブ定義を開発開発したジョブをバージョ
ン管理システムに反映
バージョン管理システムより
CI サーバへ取り込み
継続的にテスト・デプロイを実施
2013/07/14 JTF2013 #techfesta
1515
デモシナリオ
• 日次のデータ処理後にデータバックアップを取得• 日次データ処理は毎日 20:00 から稼動• 日次のデータ処理は 5 多重で実行
– ただし、処理①と処理②は同時に稼動させない ( 排他制御 )
• バックアップはデータ処理が全て完了した後に実行• データバックアップは 2 多重で実行
この要件のジョブフローを定義してみる
2013/07/14 JTF2013 #techfesta
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
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
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
JobScheduler 事例紹介
ここからは、 JobScheduler の日本での導入事例をご紹介します。
2013/07/14 JTF2013 #techfesta
19
自己紹介
• 井上 研一– 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
導入企業
• 国内製造業 A 社o 流通・小売業向けの各種機器を製造o 機器導入先のエンドユーザー企業で、機器
の保守のほか、ネットワーク監視、運用監視サービスも併せて提供している
2013/07/14 JTF2013 #techfesta
21
背景
• 監視システムのリプレースプロジェクトo Nagios を監視エンジンとして使用したシステムを開発・導入
o 2012 年 1 月開発開始、同年 9 月から本稼働o フロントエンドは CakePHP で開発o 監視対象ノードは現在 6,000 を超える
• 監視対象o 疎通やサーバの生死等のネットワーク監視o 業務運用系の監視 ←これは Nagiosだけでは難しい
店舗レジの開閉店処理の実施有無 マスタファイルの送信処理の成否
2013/07/14 JTF2013 #techfesta
22
業務運用系の監視の特徴
• 監視内容o 基本的にはファイル(ログ)監視o エンドユーザー企業によって、監視の方法や要求
レベルは異なるo ネットワーク環境等もいろいろ( ISDN や PHS
も)o 常に 24x365 監視ではなく、土日や年末年始は監
視しないといったこともある
• 監視規模o 1 つのエンドユーザー企業で、数百店舗(=ノー
ド)の監視が必要となることも
2013/07/14 JTF2013 #techfesta
23
どう実現するか?
<いままでは>
• シェルや Perl スクリプトで監視
• 店舗マスタを CSV 連携
• cron で監視実行、 atでリトライ
• 監視結果はログファイルとして監視システムに連携
<これからは>
• JobScheduler !
• ワンストップのフロントエンドシステムで、複雑な監視スケジュールを制御
• JobScheduler のジョブで Nagios に連携
2013/07/14 JTF2013 #techfesta
24
新システム構成
2013/07/14 JTF2013 #techfesta
25
ジョブ(ジョブチェーン)一覧画面
2013/07/14 JTF2013 #techfesta
26
ジョブオーダーグループ編集画面(基本設定)
2013/07/14 JTF2013 #techfesta
27
ジョブオーダーグループ編集画面(対象ノード)
2013/07/14 JTF2013 #techfesta
28
ジョブオーダーグループ編集画面(スケジュール)
2013/07/14 JTF2013 #techfesta
29
ジョブ実行履歴画面
2013/07/14 JTF2013 #techfesta
30
JobScheduler を採用したメリット• 監視システムとのワンストップのフロント
エンドシステムを開発できたo JobScheduler は API が提供されているので、
フロントエンドを独自に開発できる• 既存の監視スクリプトを流用できた
o JobScheduler は何でも実行できる Shell / Perl / Java / JavaScript ...
• Nagiosへの連携ジョブを共通化できたo JobScheduler はジョブチェーンが組めるので、共通ジョブを開発しておけば便利
• オープンソース!
2013/07/14 JTF2013 #techfesta
31
今後の方向性
• すべての業務監視ジョブ・対象店舗の JobSchedulerへの移行o 現時点では、かけられる工数等の問題もあ
り、すべてを移行できているわけではない
• JITL (テンプレートライブラリ)の活用
• ファイル転送での SOS FTP の活用
• 機器アップグレードでの活用ができないか?
2013/07/14 JTF2013 #techfesta
32
機器アップグレードでの活用
2013/07/14 JTF2013 #techfesta
33
日本 JobSchedulerユーザーグループ( JJUG )ご紹介
2013/07/14 JTF2013 #techfesta
34
自己紹介• PC8001• オフコン、ビジコン• メインフレーム• ミニコン• スーパーミニコン• ミニスーパーコン• ワークステーション• RISC vs CISC
• 紙テープ、パンチカード• テープ、ディスクパック• CP/M, MS-DOS2.0• ISAM 、階層型、ネットワー
ク型データベース• RDBMS 、並列プログラミン
グ• SMP, MPP, NUMA• ネットワーク• セキュリティサービス
35
コンピュータ屋歴 32年エンタープライズ向け OSS インテグレーションコンピュータ屋歴 32年エンタープライズ向け OSS インテグレーション
2013/07/14 JTF2013 #techfesta
日本 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
活動内容
• 勉強会– 5/2 第0回開催、–今後の活動内容について相談
– 6/7 第 1回開催、 JTF参加について相談• LT :某製造業事例、 fabric を使った JobScheduler
全自動インストール
– 月 1回くらいで情報交換
2013/07/14
37
JTF2013 #techfesta
活動内容
• グループサイトの運営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
次回勉強会
• 日程:8月23日(金)19時〜21時• 会場:募集中• 内容:募集中• LT:募集中• 懇親会:たぶん、いや行くでしょ www
• 会場、ネタのご提供は、メーリングリストまでご連絡お願いします。[email protected]
39
2013/07/14 JTF2013 #techfesta
最後に
• Please join us!!
https://groups.google.com/forum/?fromgroups#!forum/jobscheduler-ja
2013/07/14
40
JTF2013 #techfesta
ご清聴ありがとうございました
41
2013/07/14 JTF2013 #techfesta