4. 代表的なジョブ管理(商⽤製品)
l JP1(⽇⽴製作所)
l 1994年リリース(Unix版)、現在V.11
l A-Auto(ユニリタ/BSP)
l 1977年リリース(メインフレーム版)
l 1993年リリース(Unix版)、現在V.8(Windows版のみ)
l Systemwalker Operation Manager(富⼠通)
l 1995年リリース(Unix版)、現在V.13
l WebSAM JobCenter(NEC)
l 現在R.14
l 千⼿(野村総合研究所)
l 1994年リリース、現在V.15?(2016)
l CA-Unicenter ® Workload Automation(Computer Associates/Platinum/Autosystems)
l 1992年リリース、現在V.15?(2016)
l BMC Controll-M ®(BMC)
l Tivoli® Workload Scheduler(IBM)
l Windows Task Scheduler(Microsoft)
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 4
5. 代表的なジョブ管理(OSS)
l JobScheduler(独SOS社)
l 2005年公開、現在V.1.10
l ⽇本語版、商⽤サポートあり
l Hinemos(NTTデータ)
l IPAの2004年度委託開発事業としてNTTデータが開発した、監視とジョブ管理の統合シ
ステム、現在V.5
l コア機能のみOSS、有償オプションは商⽤版のみ
l JobArranger for Zabbix(⼤和総研ビジネスイノベーション)
l Zabbixと連携するジョブ管理システム、商⽤サポートあり
l 2012年リリース、現在V.3
l jHako
l JobArranger の開発者が作り直したジョブ管理システム
l 2014年公開、2016年現在更新なし
l Rundeck(SimplifyOps社)
l 2010年公開、現在V.2.6
l 商⽤版あり、エージェントレス型、ssh/WinRMによってジョブ実⾏
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 5
6. SOS JobSchedulerの特⻑
l オープンソース(GNU Public License V.2)
l Linux/Windows版は、無料で使⽤可能。
l サポートライセンスを購⼊すれば、HP-UX/Solaris/AIX版の利⽤に加えて、障害対応、バグフィッ
クス/ワークアラウンドの提供、新機能の早期提供、チケットシステム(OTRS)、JIRAの利⽤が提
供される。
l プログラマブル
l ジョブの中で、Java, Perl, JavaScript, VBScript, Powershell, javax.scriptのAPIを使ったロジックを
記述可能
l 外部API(XML形式)によりRESTまたはコマンドラインからジョブの実⾏制御、実⾏状況の取得
が可能
l エンタープライズ・グレード
l ファイル転送やログローテンション等豊富なテンプレート機能
l リモートジョブ実⾏、冗⻑化機能、ロードバランス、外部認証等、エンタープライズ向け⼤規模シ
ステム対応
l JasperReport(ジョブ実⾏レポート)やNagios/Zabbix(ジョブ実⾏監視)との連携機能
l MySQLの他、PostgreSQL, Oracle, DB2, MS SQL Server, Firebirdに対応
l 豊富な導⼊実績
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 6
8. 国内導⼊実績
l 流通・⼩売業向け製造業
l 機器導⼊先運⽤監視サービスに利⽤
l データセンタ事業者
l 監視サービス設定の⾃動化
l 通信事業者
l 社内設備テスト環境の⾃動化
l 流通業
l 通販サイトのリリース⾃動化
l 新聞社
l 記事データの集配信
l ⾃動⾞部品製造業
l サービスプロバイダ
l 他多数
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 8
9. 株式会社アンタス様導⼊事例
l 背景
l 某新聞社様向けファイル交換システム
l 既存システム⽼朽化のため、リプレースをご検討
l JobSchedulerの採⽤
l 既存システムでは、独⾃開発アプリケーションで制御していたスケジューリングを
JobSchedulerに変更
l 70以上のジョブと180以上のジョブチェインを登録、制御
l ラッシュ時には数秒単位で50以上のジョブチェーンを起動、制御
l 選択理由とメリット
l 実績とノウハウ
l JobSchedulerは、オープンソースの運⽤管理⾃動化システムとして海外を中⼼に実
績が多かった。
l 機能の充実
l JobSchedulerは、豊富な機能とAPIにより、監視システムや既存システムとの連携
に柔軟に対応できた。
l WebAPIでJobSchedulerの制御が可能であるため、顧客業務にあわせたUIを独⾃に
開発することができた。
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 9
11. ⾃動化の鍵:ワークフロー制御
l ⼈間判断フロー:Enhydra Shark
l 承認、指⽰など各ステークホルダが⼊⼒
l プログラム制御:JobScheduler
l エラー制御、分岐判断のロジックを記述
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 11
12. JobSchedulerの⽤途
l バッチ処理制御
l 業務アプリケーション
l ハウスキーピング(バックアップ/ログローテ等)
l ⾃動インシデントレスポンス
l 監視システムからのアラートに応じて、⾃動対応
l 継続的デリバリ
l インフラ運⽤のプログラム化
l テスト⾃動化
l ⾃動システム構築
l クラウドインスタンス作成から、アプリ配備
l クラウドに依存しないオートスケール
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 12
13. JobSchedulerの主要機能
l ジョブ定義
l ジョブ実⾏(時間指定/繰り返し)
l スケジュール
l 多重実⾏・排他制御
l 先⾏・後続制御
l 優先度設定
l イベント監視
l メール通知
l 外部パラメータ設定
l 開始/終了遅延検知
l クライアント / サーバ
l バックアップクラスタ
l 負荷分散クラスタ
l SOAP/RESTの外部API
l 独⾃の内部API
l Javascript / Perl / Java / Shell Script /
Powershell / VBScript / javax.scriptで
のジョブ定義
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 13
⾼度なジョブ管理機能
Devの使い慣れた⾔語でのJob定義
14. JobSchedulerの構成
l JobSchedulerマスター
l ジョブの制御と管理を司るサービス。以下の機
能を包含する。
l バックアップフェイルオーバー機能
l RDBMSを使⽤したジョブ履歴、ログ管理
機能(JDBC接続)
l JobSchedulerエージェント
l ジョブのリモート実⾏エージェント
l JOC (Job Operation Center)
l WEB UIのジョブ管理画⾯
l JOE (JobScheduler Object Editor)
l ジョブ定義を作成するための、Javaで稼働する
スタンドアロンアプリケーション。
l JID (JobScheduler Information
Dashboard)
l 待機中、実⾏中、完了したジョブの状態、ログ
を⼀覧できるJavaで稼働するスタンドアロンア
プリケーション。
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 14
JobScheduler
マスター
JobScheduler
Agent
JobScheduler
Agent
JobScheduler
Agent
JID JOE
JOC
RDB
JobScheduler
マスター
JOC
JobScheduler
マスター
JOC
RDB
RDB
Agentless
hosts
GUIクライアント
管理サーバ
管理対象サーバ
15. スタンドアローン構成 クライアントサーバ構成
アクティブスタンバイ構成 アクティブアクティブ構成
システム構成例
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 15
JobScheduler
マスター
JOC JOE
JID
JobScheduler
エージェント
RDBMS
JobScheduler
マスター
JOC
JOE
JID
JobScheduler
エージェント
RDBMS
JobScheduler
マスター
JOC
JOE
JID
JobScheduler
エージェントJobScheduler
マスター
JOC
JobScheduler プラ
イマリーマスター
JOC
JOE
JID
JobScheduler
エージェント
RDBMS
JobScheduler バッ
クアップマスター
JOC
管理端末
管理端末 管理端末
./live
フォルダ
共有ストレージ
RDBMS
./live
フォルダ
共有ストレージ
16. アクティブ・スタンバイ構成(Passive Cluster)
l データベースと構成情報
(./config/live)ディレクトリは、
プライマリーとバックアップで共有
が必要
l 特別なクラスターソフトウェア
(Lifekeeper/Pacemakerなど)は
不要
l バックアップは、スタンバイモード
で実⾏し、プライマリーを監視する
l プライマリーが障害時、すべての
ジョブの実⾏状況はバックアップに
引き継がれる
l エージェントで実⾏中のジョブは、
フェイルオーバーの影響を受けない
l Sshログインで実⾏中のジョブは、
フェイルオーバー時エラーとなる
16
JobScheduler
エージェント
JobScheduler
バックアップマスター
Windows/Linux
RDBMS
JobScheduler
エージェント
SSHノード
SSHノード
sshログイン
JobScheduler
プライマリーマスター
Windows/Linux
./live
heartbeat
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved
17. アクティブ・アクティブ構成(Active Cluster)
l データベースと構成情報
(./config/live)ディレクトリは、全マ
スターで共有が必要
l 特別なクラスターソフトウェア
(Lifekeeper/Pacemakerなど)は不要
l ジョブスケジュールは全マスターで共有
され、負荷分散される
l マスターの⼀台が障害時、すべてのジョ
ブの実⾏状況は残りのマスターに引き継
がれる
l エージェントで実⾏中のジョブは、フェ
イルオーバーの影響を受けない
l Sshログインで実⾏中のジョブは、フェ
イルオーバー時エラーとなる
17
JobScheduler
エージェント
JobScheduler
アクティブマスター
Windows/Linux
RDBMS
JobScheduler
エージェント
SSHノード
SSHノード
sshログイン
JobScheduler
アクティブマスター
Windows/Linux
./live
heartbeat
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved
18. エージェント・クラスター構成
l エージェントは、Process_classで
グループ化できる
l 1システム上に複数エージェントを
動かすことも可能
l Process_classでグループ化した
エージェントに、以下の⼆つの⽅法
でジョブの負荷分散が可能
(1)固定スケジュール
(Fixed Priority Scheduling)
l 最初に指定したエージェントが稼
働していれば常にそのエージェン
トで実⾏される
l そのエージェントが稼働していな
ければ、次に指定したエージェン
トで実⾏される
(2)ラウンドロビンスケジュール
(Round-Robin Scheduling)
l 指定したエージェントから、順番
にジョブが割り振られる
l クラスター構成のマスターと組み合
わせることも可能
18
JobScheduler
エージェント
JobScheduler
マスター
Windows/Linux
RDBMS
Process_class
JobScheduler
エージェント
JobScheduler
エージェント
JobScheduler
エージェント
JobScheduler
エージェント
JobScheduler
エージェント
Process_class
固定スケジュール
ラウンドロビン
スケジュール
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved
20. リモートジョブ実⾏⽅法
l JobScheduler マスターが稼働するサーバから、外部のサーバへのジョブ実⾏をする場合、
下記の3種類の⽅法がある。
l エージェント実⾏(JobScheduler Agentが稼働している別のサーバへのリモートジョブ実⾏)
l ssh実⾏(JobScheduler マスターが稼働していない別のサーバへ、sshログインしてのリモートジョ
ブ実⾏)
l スーパーバイザ構成(スーパーバイザJobSchedulerから、ワーカーJobSchedulerへのリモートジョ
ブ実⾏)
スーパーバイザ構成は、ワーカー⾃⾝もデータベースと
ジョブ定義を保持し、スーパーバイザと同期するため、
スーパーバイザ⼜は通信が障害時にもワーカーのジョブは
実⾏される。
エージェントの場合は、ジョブ定義を⾃⾝で保持しないため、
JobScheduler⼜は通信障害時には新たなジョブが実⾏できない。
l エージェント実⾏とssh実⾏の違い
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 20
JobScheduler,
Engine
JOC
JOE
JID
JobScheduler,
Agent
RDBMS
JobScheduler,
Engine
JOC
RDBMS
Linuxでは、NOPASSでsudo su -u設定で
可能
Windowsでは次期バージョンからサポー
ト予定
必要
21. ユニバーサル・エージェント
l 最新版でリリース(V1.10)
l 従来のエージェント(クラシック・エージェント)との違い
https://kb.sos-berlin.com/display/PKB/JobScheduler+Universal+Agent+-+Features
l Pure Java、シングルバイナリー
l 次ページ「サポートプラットフォーム」を参照
l ゼロ・コンフィグレーション
l エージェント側での設定を廃⽌、マスタ側からのリクエストに変更
l リモート・ファイル監視
l エージェント側ホストのファイル監視が可能
l Docker サポート
l Dockerコンテナ内でのエージェント稼働、ジョブの起動/停⽌
l Raspberry Pi サポート
l 有償ライセンスのみのリリース(V1.10以降)
l オープンソースライセンスは、SSHのみ
l 無償ダウンロード版は、同時実⾏タスク数が1個に制限
l 尚、JobSchedulerのマスタ(エンジン)とエージェントは、異なるバージョンでも、使⽤
可能です。(マスタ/エージェント互換性情報を参照ください)
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 21
22. 稼働条件(V.1.10〜)
l マスタ(エンジン)
l Windows server 2008 R2/2012 R8 (32bit/64bit)
l CentOS/Redhat Enterprise Linux 5/6/7 (32bit/64bit)
l Cloud (Amazon EC2, Microsoft Azure)
l ミドルウェア:サポートされるソフトウェアとバージョン
l Java: Oracle JRE 1.8.x 以上、AIXの場合のみIBM Java 1.8 以上
l DBMS:
l Oracle 8.1.7, 9.2, 10g, 11g, 12c
l Microsoft SQL Server 2008R2, 2012
l IBM DB2 8.x<
l MySQL/MariaDB version 5.x<
l PostgreSQL 8.x, 9.x
l Sybase ASE 15.0/16.0
https://kb.sos-berlin.com/pages/viewpage.action?pageId=3638020
https://kb.sos-
berlin.com/display/PKB/Which+common+Database+Management+Systems+
are+supported+by+JobScheduler
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 22
28. 内部API
l JobSchedulerは、プログラムからのジョブ制御を可能にするため、内部
APIと外部APIを備えている。
l 内部API
l Job定義の中で呼び出すことによって、様々なJobScheduler Engineの機能を
使い、動的にジョブやスケジュールの定義を操作できる。
l Java, JavaScript, Perl, JScript, VBScript, Powershell, javax.scriptのAPIが⽤意
されている。
l 内部APIを使って、動的にジョブやスケジュールの定義を操作できる。
l Javaの内部APIを使って、⾃分のホスト名をログに情報を出⼒した後、特定
ジョブを即時実⾏する例(scriptタグのCDATA内に記述)
// print my hostname
spooler_log.info(‘My hostname is ' + spooler.hostname());
// kick next job
spooler.job(‘path/to/job').start();
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 28
29. 外部API(WEB API)
l 外部APIを⽤いるとジョブ定義の動的追加や指定ジョブの即時実⾏などの操作を
外部プログラムからJobSchedulerに対して実施できる。
l 外部APIは、XML形式によりRESTまたはコマンドラインからジョブの実⾏制御、
実⾏状況の取得が可能である。
l 例えば、localhostのポート4444にインストールされたJobScheudlerの特定ジョ
ブを実⾏するには下記URLにアクセスする。
http://localhost:4444/<start_job job="path/to/job"/>
l JobSchedulerからのレスポンスはリクエストと同様にXML形式で返す。ブラウザ
からアクセスした場合、JobSchedulerの状態を⽰すXMLがレスポンスとしてブラ
ウザの画⾯に表⽰される。
※必要に応じて<を%3Cに、>を%3Eにエスケープする必要があります
l また、SOS社から外部APIをラッピングするPHPのライブラリが提供されており、
このライブラリを⽤いると、独⾃に開発した画⾯とJobSchedulerを連携させるこ
とが容易に実現できる。
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 29
30. PowerShell サポート (Windows)
l JobScheduler管理
l PowerShellコマンドラインインターフェース(CLI)の提供
l Cmdletsから、JobSchedulerの機能を使⽤可能
l マスター/エージェント/ジョブ/オーダーの状況取得
l ジョブ/オーダーの制御
l 実⾏タスクの制御
l PowerShell Jobs
l ジョブ定義をPowerShellで記述
l JobScheduler APIをPowerShellから使⽤可能
l PowerShell標準エラーハンドリング/エラー出⼒使⽤可能
l e.g. verbose and debug output
302016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved
32. モニタリングインターフェース
l Historyテーブルに記録されているログを分析(タスクが正常に終了したか、もし
くはエラーや警告で終了したか)し、通知設定した情報のフィルタリングを⾏う。
l フィルタリングされた情報をHistoryテーブルとは別のNotificationsテーブルに情
報を書き込み、対象の監視システムへ通知される
l 監視システムの通知は、予め構成ファイルで定義されたコマンドが実⾏される
l 既存のJobChain等を編集する必要はなく
SystemMonitorNotification_<MonitorSystem>.xmlに通知を⾏うJobChainsを記載
し設定を⾏う
l 通知設定を⾏っても JobChainのパフォーマンス等の影響はない
l 詳細なログ情報を、監視システムへ送信することが出来る
l エラーは定期的に監視システムに送信される
32
JobScheduler
DB
JobScheduler
ジョブ実⾏
CheckHistoryジョブ
Historyテーブルを
定期的にチェックする
CleanupNotificationsジョブ
有効期限が切れている通知を
削除
ResetNotificationsジョブ
⼀部の監視システムで、通知された
問題が知られていることを「Acknowledge」操
作でそれ以上の通知は送信させないようにする
SystemNotifierジョブ
監視システムに通知
監視システム
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved
33. Cronコンバータ
l JobSchedulerは、既存cronジョブを変換するために下記の⽅法を⽤意している。
※本機能を使⽤する場合は、JobSchedulerインストール時にcronパッケージを選択しておく
l 動的変換ジョブ
l JOC画⾯のStand alone Jobから、sos/cron/scheduler_cron_adopterジョブを実⾏すると、⾃動的に
crontab情報を読み込んでJobSchedulerのJobに変換される。
l Crontabには、事前に以下の設定追加が必要。
# job_name = my_cron_job ##JobSchedulerのJob名
# job_title = test cron job1##Jobのタイトル
# job_timeout = 1 ##Jobのタイムアウト値
*/5 * * * * rppt/usr/bin/hoge.sh
l 変換スクリプト
# cd /opt/sos-berlin.com/jobscheduler/[user-id]/bin/
l Stand alone Jobへの変換
# ./cronconverter.sh –crontab [crontab_name] –target [out_file]
l Job chainへの変換
# ./cronconverter.sh –crontab [crontab_name] –target [out_file] –createJobChains true
l ⽣成された定義ファイル(xml)を、登録するために分割する
# cd /opt/sos-berlin.com/jobscheduler/[user-id]/bin/
# java –jar lib/saxon9he.jar –s:”[変換元ファイル名]” –xsl:”scheduler_data/config/xml2live.xml”
sos.destination=“out_dir”
l out_dirに出⼒されたファイルを、config/liveに移動する
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 33
34. HyClops JobMonitoring概要
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 34
ジョブをZabbix監視アイテムに⾃動登録
l JobSchedulerにジョブを登録すると、⾃動的にZabbixに
ジョブ監視アイテムを設定
Zabbixからジョブのアラート監視
l ジョブ定義で指定したアラート(開始遅延、実⾏失敗
等)を監視
Zabbixからジョブの実⾏時間監視
l 各ジョブの実⾏時間履歴を監視、傾向グラフを表⽰
Zabbix監視閾値をジョブから⾃動変更
l 特定のジョブを実⾏する際に、cpu loadやmemory freeの
閾値を変更し、実⾏完了後元に戻す
36. マイグレーションサービスの提供
l 既存ジョブ管理システムからの移⾏⽀援サービス
l CA-Unicenter ® Autosys
l BMC Controll-M ®
l Tivoli® Workload Scheduler
l Windows Task Scheduler
l *nix cron
l ご相談ください!
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 36
44. ロードマップ 2017〜(予定)
l SNMPサポート
l JOE on Cockpit
l アーキテクチャーの⾒直し
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 44
45. SNMPサポート
l SNMP コンポーネント
§ SNMPマネージャー/Trap レシー
バを使⽤した監視システムから監
視が可能
§ JobSchedulerの SNMPマスター
エージェントとSNMPエージェント
が提供され、モニタリングイン
ターフェースと連携する
l SNMP メッセージフロー
l JobScheduler インスタンス
l すべてのインスタンスの履歴は
RDBMSに格納される
l JobScheduler SNMPエージェン
ト
§ SNMPエージェントは、モニタリン
グインターフェースと連携し、エ
ラーを通知する
§ マスターエージェントは、リクエ
スト/レスポンスとトラップに対
応
45
JobScheduler
モニタリング
インターフェース
Active Cluster
JobScheduler
JS1
Active Cluster
JobScheduler
JS2
Active Cluster
JobScheduler
JS3
RDBMS
access
database
JobScheduler
SNMP
エージェント
監視システム
SNMP
マネージャー
SNMP
マスター
エージェント
JobSchedueler モニタリング
SNMP
Trap
レシーバー
send traps
request /
response
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved
46. JOE on Cockpit
l 現在のJOEを完全に書き換え
l JOCコックピットのWeb UIに統合
l JOCコックピットのデザインに統⼀
l 現在のJOEの機能は踏襲
l ジョブの依存関係などの表現を強化
l セルフサービスポータルの提供
l 初⼼者向けのジョブ作成UIを提供
l ジョブ監視/制御機能も統合
462016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved
47. アーキテクチャーの⾒直し
l アーキテクチャーレベルでの⾼可⽤性の強化
l マスター/エージェント通信の⾮同期化/疎結合化
l 通信遮断時の耐性強化
l 分散型アーキテクチャーの採⽤
l SPOF(単⼀障害点)の排除
l セルフヒーリング機能
l RDBMSへの依存を排除
l マスター/エージェント再起動時の整合性は、アプリケーションレベルで保
障
l RDBMS障害時も稼働、RDBMSはレポーティング⽬的のみ
l ⾼価なRDBMSのHA構成も不要
472016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved
48. ⽇本JobSchedulerユーザーグループ
l 2013/4発⾜
l JobSchedulerいけるやん、という⼈の集まり
l 独SOSサイトにも掲載
“Company News : Japanese language JobScheduler user group on Facebook”
http://www.sos-berlin.com/modules/news/article.php?storyid=42
l 会則/会費ありません
l 会員資格ありません、Google Groupsに参加して下さい
https://groups.google.com/forum/?fromgroups#!forum/jobscheduler-ja
l JobSchedulerを使う上での疑問やノウハウの共有
l 勉強会と⾔う名の飲み会
2016/10/20 Copyright 2016(C) OSS Laboratories Inc. All Rights Reserved 48