2. ジョブ管理とは
l バッチジョブの実⾏制御
l *nix: Cron
l Windows: タスクマネージャ
l Mainframe: JCL, JES, etc.
l *nix/Windows商⽤製品
l JP1
l A-AUTO
l 千⼿
l IBM IWS (Tivoli), BMC Control-M, etc.
l OSS
l JobScheduler
l Hinemos
l Rundeck
l Job Arranger for Zabbix
l Jhako
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 2
3. JobSchedulerの特⻑
l オープンソース(GNU Public License V.2)
l エンタープライズで必要な全ての機能が無料で使⽤可能。(但しユニバーサルエージェント上の同
時複数タスク実⾏は有償ライセンスが必要)
l 有償ライセンスを購⼊すれば、障害対応、バグフィックス/ワークアラウンドの提供、新機能の早
期提供、チケットシステム(OTRS)、JIRAの利⽤が提供される。
l プログラマブル
l ジョブの中で、Java, Perl, JavaScript, VBScript, Powershell, javax.scriptのAPIを使ったロジックを
記述可能
l 外部APIによりRESTまたはコマンドラインからジョブの実⾏制御、実⾏状況の取得が可能
l エンタープライズ・グレード
l リモートジョブ実⾏、冗⻑化機能、ロードバランス、外部認証等、エンタープライズ向け⼤規模シ
ステム対応
l ファイル転送やログローテンション等豊富なテンプレート機能
l Zabbix/Nagios等と(ジョブ実⾏監視)との連携機能
l MySQLの他、PostgreSQL, Oracle, DB2, MS SQL Server等に対応
l 豊富な導⼊実績
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 3
6. JobSchedulerの⽤途
l バッチ処理制御
l 業務アプリケーション
l ハウスキーピング(バックアップ/ログローテ等)
l ⾃動インシデントレスポンス
l 監視システムからのアラートに応じて、ログ収集など⾃動対応
l 継続的デリバリ
l インフラ運⽤のプログラム化
l テスト⾃動化
l ⾃動システム構築
l クラウドインスタンス作成から、アプリ配備
l クラウドに依存しないオートスケール
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 6
7. JobSchedulerの構成(V.1.12〜)
l JOCコックピット
l WEB UIのジョブ管理画⾯
l 待機中、実⾏中、完了したジョブの状態、
ログを⼀覧できるWEBアプリケーション
l ジョブ定義の作成
l JobSchedulerマスターとは独⽴して稼働
l JobSchedulerマスター
l ジョブの制御と管理を司るサービス
l クラスタリング機能内蔵(Act-Stby, Act-
Act)
l RDBMSを使⽤したジョブ履歴、ログ管理
機能(JDBC接続)
l JobSchedulerエージェント
l ジョブのリモート実⾏エージェント
l ゼロコンフィグレーション
l エージェントクラスタリング
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 7
JobScheduler
マスター
JobScheduler
エージェント
JobScheduler
エージェント
JobScheduler
エージェント
JOCコックピット
RDB
JobScheduler
マスター
JobScheduler
マスター
RDB
RDB
エージェント
レス・ホスト
ssh
管理⽤PC
管理サーバ
管理対象サーバ
WEB
ブラウザ
ジョブ定義
ファイル
8. ReportingDB
JOCコックピット(V.1.11〜)
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 8
クライアント
JobSchedulerDB
認
証
サ
=
ビ
ス
コールバック
セッションマネージャ
レポーティング
インベントリ情報
XML
JSON
ハンドラ
JSイベントメッセージプラグイン JSイベントメッセージプラグイン
オブジェクト
XMLファイル
モニタリングジョブ レポーティングジョブ
実⾏計画ジョブ インベントリジョブ
scheduler.xml
Iniファイル
MySQL/MariaDB/
Postgres/Oracle/
SQLserver etc.
xmlレスポンス
イベント
REST
エージェント
http/
https
クライアント エージェント
JobSchedulerマスターJOCコックピット
xmlコマンド
OpenLDAP
MS ActiveDierctory
RDB
オプション
14. ユニバーサル・エージェント
l V1.10以降でサポート
l 従来のエージェント(クラシック・エージェント)との違い
l https://kb.sos-berlin.com/display/PKB/JobScheduler+Universal+Agent+-+Features
l Pure Java、シングルバイナリー
l ゼロ・コンフィグレーション
l エージェント側での設定を廃⽌、マスタ側からのリクエストに変更
l リモート・ファイル監視
l エージェント側ホストのファイル監視が可能
l Docker サポート
l Dockerコンテナ内でのエージェント稼働、ジョブの起動/停⽌
l MacOSX/Raspberry Pi サポート
l 有償ライセンスのみのリリース
l 無償でのダウンロード/使⽤は可能だが、各エージェント上の同時複数タスク実⾏
は出来ない
l オープンソースライセンスは、SSHのみ
l 30⽇間のトライアルライセンスをお申込いただけば、全ての機能が無料でお試し
できます
l JobSchedulerのマスターとエージェントは、異なるバージョンでも使⽤可能
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 14
15. エージェント・クラスター構成
l エージェントは、Process_classで
グループ化できる
l 1システム上に複数エージェントを
動かすことも可能
l Process_classでグループ化した
エージェントに、以下の⼆つの⽅法
でジョブの負荷分散が可能
(1)固定スケジュール
(Fixed Priority Scheduling)
l 最初に指定したエージェントが稼
働していれば常にそのエージェン
トで実⾏される
l そのエージェントが稼働していな
ければ、次に指定したエージェン
トで実⾏される
(2)ラウンドロビンスケジュール
(Round-Robin Scheduling)
l 指定したエージェントから、順番
にジョブが割り振られる
l クラスター構成のマスターと組み合
わせることも可能
15
JobScheduler
エージェント
JobScheduler
マスター
Windows/Linux
RDBMS
Process_class
JobScheduler
エージェント
JobScheduler
エージェント
JobScheduler
エージェント
JobScheduler
エージェント
JobScheduler
エージェント
Process_class
固定スケジュール
ラウンドロビン
スケジュール
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved
JOCコックピット
Windows/Linux
16. ジョブの定義⽅法
l JOCコックピットによる定義例
l XMLファイルによる定義例
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 16
<?xml version="1.0" encoding="ISO-8859-1"?>
<job >
<params />
<script language="shell">
<![CDATA[
#!/bin/sh
echo “$SCHEDULER_JOB_NSME is running”
echo “Current Timestamp `date`”
exit $?
]]>
</script>
</job>
18. ジョブストリーム(V.1.13〜)
l 従来からあるジョブチェーンと同様に、ジョブ間の依存関係
を定義し⼀連のジョブを実⾏する
l BMC Control-Mとの互換性
l ジョブチェーンとの違い
l オーダーによる前⽅依存制御ではなく、イベントによる後⽅依存制御
l pre- and post-processing APIがないため、ジョブで定義する必要がある
l 並列実⾏-待合せ制御が、ジョブチェーンのsplit/sync or joinより⾼速
l 閉じない⼊れ⼦ツリーが可能
l 詳細は以下を参照
l https://kb.sos-berlin.com/display/PKB/Job+Streams
Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved2020/10/23 18
20. ジョブストリームのオブジェクト
l イベントとグローバルイベント
l イベントは、ジョブの実⾏結果を知らせるために作成されるトークンです。(従来からあるイベントとは別物で
す)
l イベントは後続のジョブが実⾏されるかどうかの条件を評価するために使⽤されます。
l グローバルイベントはマスタークラスタ構成の間でジョブの実⾏のために共有されるイベントです。これらは別の
ジョブスケジューラーマスター上でジョブの実⾏結果を知らせるために作成されるトークンです。
l インコンディションとアウトコンディション
l ジョブは実⾏する条件(インコンディション)を複数持つことができます。これらの条件には、真(true)または偽
(false)になるように評価されるいくつかの条件式を含むことができます。評価結果が真であればジョブが開始さ
れ、偽であれば開始されずにそれ以降のジョブストリームの実⾏を保留(suspend)します。インコンディションの
条件式は、イベントの存在や特定のジョブまたはジョブチェーンの実⾏結果などを、AND/OR等の論理演算⼦で評価
することができます。
l ジョブはジョブ実⾏後に評価される複数のアウトコンディションを持つことができます。アウトコンディションに
は複数の条件式を持つことができ、評価結果に応じて後続ジョブのインコンディションで使⽤されるイベントを追
加または削除できます。
l アウトコンディションがもつ条件式は、イベントの存在や特定のジョブまたはジョブチェーンの実⾏結果などを、
AND/OR等の論理演算⼦で評価することができます。
l スターターとセッション(V.1.13.4以降)
l スターターはジョブストリームを開始するために使⽤します。スターターはランタイム設定に基づいてジョブスト
リームを開始、またはアクションメニューの “即時開始”操作を使って⼿動で開始することもできます。
l スターターはジョブストリームのセッションを作成します。各セッションにはそれぞれインスタンスIDが付与され、
イベントはセッション毎に作成されます。例えば、セッションAで作成されたイベントはセッションBからはアクセ
スできません。
l スターターは各ジョブストリームで複数作成でき、それぞれ必要ジョブと終了ジョブを設定できます。(V.1.13.5以
降)
l 必要ジョブが終了しない限りセッションは継続し、終了ジョブが終了するとセッションが終了します。
Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved2020/10/23 20
21. ジョブストリームの使⽤
l デフォルトインストレーションではジョブストリーム機能は無効になっているので、以下を実施します
l JobSchedulerインストール時に有効化する場合
l GUIインストーラー︓step9で Enable Conditions-Pluginにチェックを⼊れる
l CLIインストーラー︓jobscheduler_install.xmlの以下のvalueをonに変更
<entry key="jobStreamsPlugin" value="on"/>
l JobSchedulerインストール後に有効化する場合
l /config/scheduler.xmlのコメントアウトされている以下の⾏を有効にして、マスター再起動
<plugin java_class="com.sos.jobstreams.plugins.JobStreamsPlugin"/>
l 共通
l /config/scheduler.xmlの以下の⾏は、ジョブストリームのセッションピリオド開始時間(UTC)なので、⽇本時間0時=UTC 15
時に変更しておく
<param name="sos.jobstream_period_begin" value="15:00"/>
Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved2020/10/23 21
22. ジョブストリームの実⾏
l スケジュール実⾏︓スターターメニューでランタイムを設定
l 途中停⽌︓⽌めたいジョブメニューで「停⽌」を選択
l 途中から実⾏︓開始したいジョブメニューで「インスタンスでタスク開始」を選
択
l 途中ジョブをスキップ
l 以下を参照
l https://kb.sos-berlin.com/display/PKB/Run-time+of+jobs+in+a+Job+Stream
l スターターから時間差で複数ジョブ起動
1.相対時間での起動指定
l スターター編集画⾯で、他のジョブを追加をクリックし、起動したいジョブを追加し、ディレイ
(秒)を指定
l 例)スターターランタイム指定時間から1時間後に起動->3600
2.絶対時間での起動指定
l スターター編集画⾯で、他のジョブを追加をクリックし、起動したいジョブを追加し、ディレイ
(秒)を0で登録
l 起動したいジョブのランタイム設定を開き、周期追加で繰り返し間隔を「時間帯」で選択
l 開始〜終了の時間を、実⾏させたい時間帯で登録
Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved2020/10/23 22
24. V.2計画
l V.1アーキテクチャーを変更
l 2020/12 リリース予定
l 最初のリリースは、新規ユーザー向けに限られた
機能を提供
l 後続リリースでV.1系からの移⾏機能を提供
l 2年間はV.1系と併存
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 24
25. V.2ターゲット
l ⾼可⽤性
l アーキテクチャーレベル(⾮同期分散処理)での⾼可⽤性
l DB障害時もジョブ実⾏継続
l ⾼速クラスターフェイルオーバー
l ⼤規模
l 〜 50万ジョブネット
l 〜 100万ジョブ
l 〜 1,000エージェント
l ⾼性能
l ジョブ起動オーバーヘッドなし
l 1万タスクを1秒以内で同時起動
l ⾼セキュリティ
l JOC・コントローラー・エージェント間の全通信にクライアント・サーバー認証
l 定義ファイルにも証明書を付加
l 外部認証局(CA)をサポート
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 25
26. V.1アーキテクチャー
l マスター
l DBにすべての情報・ログを保存するためDB負荷⼤
l DB障害時、全サービス停⽌
l 起動時すべての定義情報をメモリー上に展開
l 実⾏スケジュールはバッチ処理で更新
l クラスターフェイルオーバーは〜2分待機後バックアップが起動(Act-
Stby)
l Act-Actマスター構成は元々マスター上のジョブ実⾏が前提だったため、エー
ジェント実⾏には不向き
l ユニバーサルエージェント
l 常時マスターとのハートビート通信
l マスターエージェント間の通信量⼤
l マスターとの通信遮断時、ジョブも停⽌
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 26
27. V.2アーキテクチャー
l JOCコックピット
l WEB GUI/REST API
l ジョブ実⾏制御
l 履歴情報
l ジョブ定義の作成
l クラスターサービス
l ジョブ定義の管理とコントローラーへの配布
l クラスター制御、イベントキュー、ロギングなど
l コントローラー
l DB接続を廃⽌
l ジョブ定義をJOCコックピットから取得
l 実⾏履歴をJOCコックピットに送信
l 実⾏計画とジョブ定義をエージェントに配布
l ⾃律型エージェント
l コントローラーとの通信障害時にも⾃律的にジョブ実⾏制御
l エージェントクラスター内で実⾏計画とジョブ定義を同期
l 実⾏履歴をコントローラーに送信
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 27
28. V.2アーキテクチャー
l 公開鍵認証の導⼊
l 各モジュール間通信の公開鍵認証
l JOCコックピットまたは外部認証局で証明書を作成・署名
l ルート証明書と中間証明書を各コントローラーとエージェントに配布
l ジョブ定義の公開鍵認証
l JOCコックピットまたは外部認証局でジョブ定義ファイル毎に署名
l 各コントローラー及びエージェントで配布された署名が⼀致するかを確認
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 28
31. V.2ワークフロー
l 従来からあるジョブチェーンと同様に、ジョブ間の依存関係を定義し⼀連
のジョブを実⾏する
l DAG(有向⾮巡回グラフ、Directed Acyclic Graph)モデル
l BPMN(ビジネスプロセスモデリング表記法、Business Process Model
and Notation)ベースの記法、ただし準拠ではない
l ジョブチェーンとの違い
l オーダーによる前⽅依存制御ではなく、DAGによる後⽅依存制御
l pre- and post-processing APIがないため、BMMNで定義
l 並列実⾏-待合せ制御が、ジョブチェーンのsplit/sync or joinより⾼速
l 閉じない⼊れ⼦ツリーが可能
l ジョブストリームとの違い
l イベント・コンディションではなく、BPMNで定義
l スターターではなくオーダーによる実⾏制御
l 複数のワークフローを⼊れ⼦定義可能
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 31
34. サポートサービス
l 無償サービス
l GPL版ソフトウェアのダウンロード提供
l メーリングリスト/フォーラムでの応答
l SOS社ナレッジベース/ユーザーグループでの情報提供
l 有償サービス
l 年間サブスクリプションライセンスご契約者様には、下
記サービスを年間対応件数無制限にてサポート
§ 有償版ソフトウェアの提供
§ 導⼊⽅法、パラメータ、仕様についての質問
§ 新機能の早期提供
§ 障害調査
§ 発⽣現象の確認と過去事例の調査
§ バグフィックス/ワークアラウンドの提供
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 34
35. プロフェッショナルサービス
l 年間サブスクリプションライセンスのご契約者様には、下記オプション
サービスを提供
l 拡張サポートサービス
l 標準サポートには含まれない、ジョブ設計/作成⽀援、性能チューニング等に関する、
QA及びアドバイス、ベストプラクティスの提供
l 可能であればお客様環境へのssh/vpnアクセス、調査
l SOS社エンジニアの直接対応も可能(英語のみ)
l マイグレーションサービス
l 他社ジョブ管理製品からの移⾏⽀援サービス
l お客様の既存ジョブ定義をご提供いただき、調査/分析の上お⾒積もりいたします
l トレーニングサービス
l JobScheduler初級トレーニング(4時間x2回)
l アーキテクチャ概要、システム構成、操作⽅法、ジョブ作成⽅法
l 詳細は、お問い合わせください
l お問い合わせフォーム
http://www.ossl.co.jp/jpn/node_184
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 35
36. ⽇本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 勉強会と⾔う名の飲み会
2020/10/23 Copyright 2020(C) OSS Laboratories Inc. All Rights Reserved 36