Create: 2013/02/20
LastUpdate: 2015/07/05
「SOS JobScheduler」は、オープンソースのジョブ管理ツールです。ドイツの企業である「Software-und Organisations-Service GmbH (※略称:SOS GmbH)」が開発を行なっています。
Linux/Windows版はGPLのもと、無償で公開されているようですが、HP-UX/Solaris/AIX 版は、有償のようです。
ドイツ語版と英語版があります。英語のドキュメントが用意されているので、英語が得意でない私でも何とか使えました。
非常に優れたジョブ管理ツールだと思います。
私が使い始めた2013年02月 時点では、日本語対応していませんでしたが、2014年10月時点では、JOCとJOEが、日本語表示できるようになりました。
ただし、ジョブの標準出力に日本語を使用すると、JOCのログ表示画面で文字化けしたりするので、完全に日本語対応しているわけではありません。画面の項目が日本語で表示されるだけだと思ったほうが良いです。
注) 2013/05/17 リリースの"1.3.12.3137" に「日本JobScheduler ユーザグループ(NJUG)」の翻訳作業の成果が取り込まれたそうです。JOCは日本語で表示できます。
JOC、JOEを日本語化する手順は、NJUG または、63rabbit を参照してください。
JobScheduler の特長は、「JobScheduler - Features」で見ることができます。JOC、JOEを日本語化する手順は、NJUG または、63rabbit を参照してください。
英語ですがGoogle翻訳で大体理解できると思います。
API、WebService などもあり、かなり高機能です。
ジョブ定義用のGUI(JOE)もありますが、慣れてくれば、サーバ上でプログラミング感覚でジョブ定義用のXMLファイルを編集することも可能です。私の感覚ですが、GUIを使うより、XMLファイルを直接編集するほうが楽だし、早いです。
詳しい情報を日本語で読みたいひとは、以下のブログも参照してみてください。
- OSSのJobSchedulerを使ってジョブ管理
- オープンソースのジョブ管理ツール「SOS JobScheduler」を知っていますか?
- JobScheduler Japan ユーザーグループ
- JobScheduler基礎編 - @IT
実際に環境を作って JobScheduler を使ってみたい場合は、「JobSchedulerアーキテクチャ解説(PDF)」が参考になります。
いろいろなシステム構成ができるようですが、私は、XenServer6.1に下図のようなテスト環境を構築して試しました。
JOEなどは、Windows版もありますが、個人的に好きなLinux(32bit)中心の構成にしました。
なお、私が使い始めた2013年02月 時点では、32bit版のJobSchedulerしかありませんでしたが、2014年10月時点では32bit版と64bit版があります。使用するOSに合わせて選択します。インストール手順は同じです。
インストールの詳細は、「インストールマニュアル(PDF)」を参照してください。
- JobScheduler Engine ・・・ ジョブの管理を行うメインエンジン。Standalone構成
- JobScheduler Agent ・・・ JobScheduler Engine からの命令でジョブを実行して、実行結果などの情報を返す。
- Job Operation Center ( JOC ) ・・・ ジョブの実行結果確認や手動でのジョブ実行制御を行うためのWeb管理画面
- JobScheduler Object Editor ( JOE ) ・・・ ジョブの定義を行うためのツール(GUI)
ここでの、JobSchedulerの基本的な使い方としては、
- JOEでジョブを定義
- JOCでジョブを実行(JobScheduler Engine が Agent にジョブの実行を指示)
- JOCでジョブの実行結果を参照
ジョブの定義は、liveフォルダの xmlファイルに保存され、ジョブの実行結果などがDBに保存されます。
ジョブ定義例やAPI、イベントハンドラなどの標準的な使用例は、ドキュメント以外にもSOS GmbH のサイトや、コミュニティサイトで見ることができます。(英語です)
詳しくは、ページ下の『参考サイト』を見てください。
(※ NJUG のページ には、日本語の資料があります。)
昔、JP1やSenju を使ったときも、上図のようなシステム構成が多かったと思います。Managerは、ジョブ管理の専用機で、Host-A と Host-B でシステムが稼動していて、ここでジョブ(バッチ処理)が実行される。運用オペレータは、JOC を使い、開発者は、JOE を使う、といったイメージです。
ただ、操作面では、JP1やSenjuと比較すると、複雑なジョブ連携の定義や実行結果・予定の確認などは、JP1やSenjuのほうがビジュアルで分かりやすいと思います。
個人的には、JobSchedulerを、WEBシステムでリアルタイムバッチなどを処理するバックエンドや、ファイルを集配信するEAIの中核を担うミドルウェアして使ってみたら面白いと思います。
以下の『メニュー』に、「上図のテスト環境を構築する手順」と、このテスト環境で「私が試した JobScheduler の使用手順」を紹介します。
使い始めの頃に書いた記事は JOE を使用した手順を紹介していますが、XML定義に慣れた頃からは、vi や emacs で直接XMLファイルを編集するような手順の紹介になってます。
特に記載がなければ JobScheduler のバージョンは "1.3.12.3044" を使用しています。
[ ] は、動作確認に使用した JobScheduler のバージョンです。
JobSchedulerは、ver.1.3 以降、多くの機能追加・変更があるので、ver1.3 で動作確認した手順が、ver1.7 では通用しない場合もあると思います。(特に、内部API)
最新版の正しい使用方法は、ドキュメント を参照してください。
■ メニュー
- 管理者向け
- テスト環境の構築
- 1.操作端末のセットアップ
- 2.Manager のセットアップ(JobSchedulerEngine+JOC+JOE)
- 3.Host-A / Host-Bのセットアップ(JobSchedulerAgent)
- 1.操作端末のセットアップ
- 使い方(Engine、Agent)
- JobSchedulerEngine の起動/停止@ [ver.1.3]
- JobSchedulerAgent の起動/停止@ [ver.1.3]
- メール送信の設定 [ver.1.3]
- イベントハンドラの設定 [ver.1.3]
- JOCでユーザ認証をする [ver.1.3]
- アクセス制限の設定 [ver.1.3]
- スーパバイザで設定ファイルを一元管理する [ver.1.3]
- メンテナンス
- 実行履歴を掃除する [ver.1.3]
- ログファイルを掃除する [ver.1.3]
- JobScheduler をアップデートする [ver.1.3]
- クラスタ構成
- バックアップ・クラスタの構築 [ver.1.3]
- 負荷分散クラスタの構築 [ver.1.3]
- テスト環境の構築
- ユーザ向け
- 使い方(基礎編)
- VNCクライアント でManagerのデスクトップに接続する@
- JOC、JOEの画面を開く@ [ver.1.3]
- Standalone Job
- Managerで単独ジョブを即時実行する [ver.1.3]
- Host-Aで単独ジョブを即時実行する [ver.1.3]
- Host-Aで単独ジョブを指定時刻に計画実行する [ver.1.3]
- Host-Aの単独ジョブをファイルトリガで実行する [ver.1.3]
- Javaアプリケーション のジョブを実行する [ver.1.3]
- Perlアプリケーション のジョブを実行する [ver.1.3]
- rootなどの特定ユーザでジョブを実行する [ver.1.3]
- sshでリモート実行するジョブを作成する [ver.1.3]
- いろいろなジョブの実装例(XML)とステータスの意味 [ver.1.3]
- いろいろなジョブのオプションを試す [ver.1.3]
- 起動時にパラメータを指定する [ver.1.3]
- <minitor>で動的にパラメータを設定する [ver.1.3]
- 外部ファイルに定義したパラメータを使用する [ver.1.7]
- 異常終了時に自動的に規定回数リトライする [ver.1.3]
- 排他ロックを設定する [ver.1.3]
- 任意のカレンダーを設定する [ver.1.3]
- JOCで起動スケジュールを設定する(run_timeのいろいろなオプションを試す) [ver.1.3]
- 終了コードを判定してジョブを実行する [ver.1.3]
- 終了コードを判定して後処理をする [ver.1.3]
- JobChain (Order Job)
- Host-A、Host-Bで複数ジョブ(JobChain)を計画実行(即時)する [ver.1.3]
- Order を作成して即時実行する [ver.1.3]
- Order を作成して指定時刻に計画実行する [ver.1.3]
- ファイルトリガで実行する [ver.1.3]
- ジョブ間のパラメータの受け渡し [ver.1.3]
- 異常終了時に自動的に規定回数リトライする [ver.1.3]
- 異常終了時にサスペンド(中断)して手動でリトライする [ver.1.3]
- スキップ/ストップ実行 [ver.1.3]
- 終了コードを判定してJobChain の流れを制御する [ver.1.3]
- JobChainをネストする [ver.1.3]
- JITL(JobChainSplitter)でジョブを並列実行する [ver.1.7]
- ConfigrationMonitor でパラメータ設定を1箇所にまとめる -1- [ver.1.7]
- ConfigrationMonitor でパラメータ設定を1箇所にまとめる -2- [ver.1.7]
- JobCahinをリモート実行する [ver.1.7]
- イベントハンドラ
- ジョブでイベントを生成する [ver.1.3]
- ジョブの<monitor>でイベントを生成する [ver.1.3]
- ジョブでイベントを検査する [ver.1.3]
- JobChainの同期 [ver.1.3]
- XSL形式のイベントハンドラ [ver.1.3]
- XML形式のイベントハンドラ [ver.1.3]
- 使用例:マージ&スプリット [ver.1.3]
- 使用例:パラレル実行 [ver.1.3]
- 使い方(JID)
- JID(JobSchedulerInformationDashboard)の画面を開く [ver.1.3]
- JOE、JOCなどを統合して統合管理コンソールにする [ver.1.3]
- 使い方(外部API)
- Telnet でXMLコマンドを使用する [ver.1.3]
- PHP でXMLコマンドを使用する [ver.1.3]
- Jetty でXMLコマンドを使用する [ver.1.3]
- WebServiceを使用する [ver.1.3]
- WebServiceで実行したジョブの処理結果を別のWebServiceに送信する [ver.1.3]
- 使用例:PHPとJettyで自分好みにデザインした稼働スケジュールを表示する [ver.1.3]
- 使い方(応用編)
- 複数のJobChainを並列実行して、複数の同期ポイントを設定する [ver.1.7]
- 異種ファイルは並列処理しながら、同種ファイルは順次処理する [ver.1.7]
- 複雑なジョブの組み合わせをイベントで制御する [ver.1.7]
- XenServer + JobScheduler でサーバを監視してスケールアウトを自動化する [ver.1.7]
- WEBサーバ2台へのリリースを自動化する [ver.1.7]
- AmazonSNSをトリガにしてジョブを実行する [ver.1.7]
- 使い方(基礎編)
- 付録
- 1台に複数のJobSchedulerをインストールする [ver.1.3]
- Chef で JobSchedulerを自動生成する@ [ver.1.3]
- JobSchedulerのログを rsyslog に出力する [ver.1.5]
- Docker で JobScheduler を自動生成する@ [ver.1.7]
■ 参考サイト