1.JS7®JobSchedulerについて
JS7® JobScheduler インストール方法(Docker版)は以下の記事をご確認ください。
https://qiita.com/satoruf/items/fa9846f4376d1a50a67e
JS7® JobScheduler インストール方法(Linux/CLI版)は以下の記事をご確認ください。
https://qiita.com/satoruf/items/fa9846f4376d1a50a67e
JS7®JobSchedulerは独SOS社(Software- und Organisations-Service GmbH)によって開発されている、ジョブ管理システムです。
OSSジョブ管理ツールの定番JobSchedulerをリニューアルし、従来より耐障害性、大規模環境対応を強化し、ミッションクリティカルな要求に対応しました。
JS7® の主な特徴は、下記となります。
- オープンソース(GNU Public License V.3)
- Linux/Windows版は、無料で使用可能。(但しクラスタリング構成は有償ライセンスが必要)
- 有償ライセンスを購入すれば、クラスタリング構成に加えて、障害対応、バグフィックス/ワークアラウンドの提供、新機能の早期提供、などのサービスが提供される。
- 有償ライセンスの機能が使用できる、30日間無償トライアルライセンスも提供されている。申し込みはこちらから
- 耐障害性
- 自律型アーキテクチャー(非同期疎結合)による高可用性
- データベース/ネットワーク障害時もジョブ実行継続
- 3秒以内のコントローラーフェイルオーバー
- 大規模環境対応
- 〜 20万ワークフロー
- 〜 100万ジョブ
- 〜 1,000エージェント
- 〜 20,000タスク並列実行
- 高性能
- ジョブ起動オーバーヘッドなし
- 1万タスクを5ミリ秒で同時起動
- 高セキュリティ
- JOC・コントローラー・エージェント間の全通信にクライアント・サーバー認証
- 定義ファイルにも証明書を付加
- 外部認証局(CA)をサポート
詳細な情報については、以下をご覧下さい。
- ナレッジベース(英語) https://kb.sos-berlin.com/display/PKB/JS7
- 日本語紹介資料 https://www.ossl.co.jp/
- 日本JobSchedulerユーザーグループ https://sites.google.com/site/jobschedulerja/
- https://groups.google.com/forum/?hl=ja#!forum/jobscheduler-ja
- https://www.facebook.com/Jobscheduler-Japan-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97-594469610565511/timeline/
- JIRA(英語)
https://change.sos-berlin.com/secure/Dashboard.jspa - User Forum(英語) http://sourceforge.net/projects/jobscheduler/forums/forum/486122
- SOS社ホームページ http://www.sos-berlin.com
ジョブ・ワークフローの実行方法については、JS7® JobSchedulerクイックスタート、JS7® JobSchedulerワークフロー間連携を御覧ください。
2. JS7®の構成について
JS7®は以下のコンポーネントで構成されています。
- JOCコックピット
- WEB GUI/REST API
- ジョブ実行制御配布
- 履歴情報収集・保存
- ジョブ定義・リソースの作成
- ジョブ定義の管理とコントローラーへの配布
- クラスター制御、イベントキュー、ロギングなど
- コントローラー
- DB接続を廃止
- ジョブ定義をJOCコックピットから取得
- 実行履歴をJOCコックピットに送信
- 実行計画とジョブ定義をエージェントに配布
- 自律型エージェント
- コントローラーとの通信障害時にも自律的にジョブ実行制御
- エージェントクラスター内で実行計画とジョブ定義を同期
- 実行履歴をコントローラーに送信
3.稼働条件
V.2.2.0 (2021/12現在)
コントローラー/JOCコックピット
- CPU 2core<、メモリ8GB<、ディスク空き容量10GB<
- OracleJDK/openJDK 8 - 12
- RHEL/CentOS 7 < (32/64bit)
- Windows Server 2016 < (32/64bit)
エージェント
- Any Linux/Windows (OracleJDK/openJDK 1.8がサポートされる環境)
- AIX 6,7 PowerPC
- Solaris 9,10,11 SPARC/x86-64
- HP-UX 11 IA64
- etc.
4.データベースサポート
- Oracle® 12c, 18c, 19c
- SQL Server® 2012, 2014, 2017, 2019
- MariaDB® 10.x
- MySQL® 5.7, 8.0
- PostgreSQL® 10 - 13
- H2 1.4.200
詳細はこちらを参照(英語)
https://kb.sos-berlin.com/display/PKB/JS7+-+Database
5.JS7インストール環境(Windows)
・Windows Server 2016 StandardEvaluation
・JS7 2.X.X
・PostgreSQL 13.4
・OracleJDK 1.8
※Windows版v2.1.0ではJOCのみJAVA11では動きません
・作業はすべてAdministratorアカウントで実施
・スタンドアロン構成
・JOC、Controller、Agent、DBは同居
※Windows版のAgentでも、別サーバにインストールする場合は、Agentのポート(デフォルトでは、4445ポート)をFirewallのルールに許可する設定を追加する必要があります。
6.インストール手順
(1)JAVAのインストール
以下のサイトからJAVAをダウンロードし、適当なディレクトリに配置し、インストーラを実行します。
https://www.oracle.com/java/technologies/downloads/
・ファイル名:jdk-8u311-windows-x64.exe
・配置先:C:\Users\Administrator\Documents
インストーラ起動後、画面に従いインストールします。
コマンドプロンプトを起動し、JAVAのインストール確認を行います。
>java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)
(2)PostgreSQLインストール
以下のサイトからPostgreSQL13をダウンロードし、適当なディレクトリに配置し、インストーラを実行します。
https://www.postgresql.org/
・ファイル名:postgresql-13.4-2-windows-x64.exe
・配置先:C:\Users\Administrator\Documents
インストーラ起動後、画面に従いインストールします。
コマンドプロンプトを起動し、PostgreSQLのインストール確認を行います。
>cd C:\Program Files\PostgreSQL\13\bin
>psql --version
psql (PostgreSQL) 13.4
(3)JS7 DBの作成
「SQL Shell(psql)」を起動し、PostgreSQLにアクセスし、JS7のDB/DBユーザ/ロールを作成し、DBユーザにロールを割り当てを行います。
※postgresユーザ(スーパユーザ)を使用する際はDBの作成のみでユーザ/ロール等の作成は必要ありません。
また、スキーマには以下の権限が必要となるため設定を行います。
・to manage objects
Tables, Views, Functions, Stored Procedures: CREATE, DROP, ALTER
・to access objects at run-time
Tables, Views: SELECT, INSERT, UPDATE, DELETE
Functions, Stored Procedures: EXECUTE
# DBの作成
postgres=# CREATE DATABASE js7 ENCODING 'UTF8';
# ユーザの作成
postgres=# CREATE USER js7_user WITH PASSWORD 'js7_user';
# ロールの作成
postgres=# CREATE ROLE js7_role WITH LOGIN;
# 上記の権限をロールに付与
postgres=# GRANT USAGE ON SCHEMA PUBLIC TO js7_role;
postgres=# GRANT SELECT,UPDATE,INSERT,DELETE ON ALL TABLES IN SCHEMA PUBLIC TO js7_role;
postgres=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA PUBLIC TO js7_role;
postgres=# GRANT CREATE ON SCHEMA PUBLIC TO js7_role;
# ユーザにロールを割り当て
postgres=# GRANT js7_role TO js7_user;
ロールの確認
postgres=# \du
ロール一覧
ロール名 | 属性 | 所属グループ
-----------+--------------------------------------------------------------------------+--------------
js7_role | | {}
js7_user | | {js7_role}
postgres | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
(4)JOCインストール
以下のサイトからJOCをダウンロードし、適当なディレクトリに配置し、解凍します。
https://www.sos-berlin.com/en/jobscheduler-downloads
・ファイル名:js7_joc_windows.2.X.X.zip
・配置先:C:\Users\Administrator\Documents
解凍後フォルダを移動し、インストーラを実行します。
パス:C:\Users\Administrator\Documents\js7_joc_windows.X.X.0\joc.2.X.X
ファイル名:setup.cmd
「GNU GPL v3.0 License」を選択し、「次へ」を押します。
「ライセンス利用許諾に同意します」を選択し、「次へ」を押します。
JOCインストール先を設定します。
本書ではデフォルトのため、そのまま「次へ」を押します。
ポート、JettyBaseディレクトリ、JVMを設定します。
本書ではデフォルトのため、そのまま「次へ」を押します。
JOCタイトル、セキュリティレベルを設定します。
本書ではデフォルトのため、そのまま「次へ」を押します。
JOCインストール時にDBのテーブルを作成するため、画面のように各項目を選択し、「次へ」を押します。
データベースの情報を入力し、「次へ」を押します。
ホスト:localhost
ポート:5432
データベース:js7
ユーザ:js7_user
パスワード:js7_user
インストーラが用意しているJDBCドライバを使用するため、画面のように選択し、「次へ」を押します。
既存のものでなく、別のJDBCドライバを使用する際には「外部提供JDBCドライバが使用されます」を選択し、JDBCドライバのパスを指定することができます。
インストールが開始され、JOCのファイル、DBのテーブル、サービス等がインストールされます。
(5)Controllerインストール
以下のサイトからControllerをダウンロードし、適当なディレクトリに配置し、解凍します。
https://www.sos-berlin.com/en/jobscheduler-downloads
・ファイル名:js7_controller_windows_installer.2.X.X.zip
・配置先:C:\Users\Administrator\Documents
解凍後フォルダを移動し、インストーラを実行します。
パス:C:\Users\Administrator\Documents\js7_controller_windows_installer.2.X.X\controller.2.X.X
ファイル名:setup.cmd
「GNU GPL v3.0 License」を選択し、「次へ」を押します。
「ライセンス利用許諾に同意します」を選択し、「次へ」を押します。
Controllerインストール先を設定します。
本書ではデフォルトのため、そのまま「次へ」を押します。
設定ファイル、ログファイルのパスを設定します。
本書ではデフォルトのため、そのまま「次へ」を押します。
本書ではデフォルトの「C:\ProgramData\sos-berlin.com\js7\controller」を指定しております。
本書ではデフォルトの設定のため、「次へ」を押します。
※環境に合わせてポート等の修正を行います。
ログディレクトリやPIDファイルの保存先を変更する際は上記にて設定を行います。
本書ではデフォルトの設定のため、「次へ」を押します。
※環境に合わせてJVM等の設定を行います。
インストールが開始され、Controllerのファイル、サービス等がインストールされます。
(6)Agentインストール
以下のサイトからAgentをダウンロードし、適当なディレクトリに配置し、解凍します。
https://www.sos-berlin.com/en/jobscheduler-downloads
・ファイル名:js7_agent_windows_installer.2.1.0.zip
・配置先:C:\Users\Administrator\Documents
解凍後フォルダを移動し、インストーラを実行します。
パス:C:\Users\Administrator\Documents\js7_agent_windows_installer.2.1.0\agent.2.1.0
ファイル名:setup.cmd
「GNU GPL v3.0 License」を選択し、「次へ」を押します。
「ライセンス利用許諾に同意します」を選択し、「次へ」を押します。
Agentインストール先を選択し、「次へ」を押します。
本書ではデフォルトの「C:\Program Files\sos-berlin.com\js7\agent」を指定しております。
設定ファイル、ログファイルのパスを選択し、「次へ」を押します。
本書ではデフォルトの「C:\ProgramData\sos-berlin.com\js7\agent_4445」を指定しております。
ログディレクトリやPIDファイルの保存先を変更する際は上記にて設定を行います。
本書ではデフォルトの設定のため、「次へ」を押します。
※環境に合わせてJVM等の設定を行います。
インストールが開始され、Agentのファイル、サービス等がインストールされます。
(7)Controller/Agentの登録
JOCのWebUIにログインします。
http://<IPアドレス>:4446
ユーザ:root
パスワード:root
ログイン後、Controllerの登録画面が表示されます。
スタンドアロンタイプを選択し、
「http://localhost:4444」
を入力し、テスト接続で問題がないことを確認し登録します。
※Controllerのインストール時にポートを変更している場合は変更したポートを指定します。
次にJobSchedulerメニューからroot > Manage Controllers/Agents の順で移動し、「Add Agent」を選択し、Agentの登録を行います。
以下の情報を入力し、「Submit」を押します。
AgentID:localhost
AgentName:localhost
AliasNames:localhost
URL:http://localhost:4445
※Agentのインストール時にポートを変更している場合は変更したポートを指定します。
ダッシュボードに移行し、登録したController、Agentの状態を確認することができます。
7.インストール手順 (ヘッドレスモード)
JS7は上記のようにグラフィカルインストーラを使用せずにインストールすることもできます。
以下にヘッドレスモードでのインストール手順を記載します。
※JAVA、PostgreSQLはインストール、設定済みとします。
(1)JOCインストール(ヘッドレスモード)
以下のサイトからJOCをダウンロードし、適当なディレクトリに配置し、解凍します。
https://www.sos-berlin.com/en/jobscheduler-downloads
・ファイル名:js7_joc_windows.2.X.X.zip
・配置先:C:\Users\Administrator\Documents
※インストールファイルは、上記で記載したグラフィカルインストールで使用したものと同じです。
解凍後、インストール設定ファイルの「joc_install.xml」を開き編集します。
パス:C:\Users\Administrator\Documents\js7_joc_windows.2.X.X\joc.2.X.X
ファイル名:joc_install.xml
JOCをインストールするパスをフルパスで指定します。
<!-- SELECT THE INSTALLATION PATH
The path must be absolute!
For example:
/opt/sos-berlin.com/js7/joc on Unix
C:\Program Files\sos-berlin.com\js7\joc on Windows -->
<installpath>C:\Program Files\sos-berlin.com\js7\joc</installpath>
<中略>
<!-- Path to Jetty base directory
For example:
/home/[user]/sos-berlin.com/js7/joc on Unix
C:\ProgramData\sos-berlin.com\js7\joc on Windows -->
<entry key="jettyBaseDir" value="C:\ProgramData\sos-berlin.com\js7\joc"/>
使用するデータベースを指定します。本書ではPostgreSQLを使用するので「pgsql」と指定します。
<!-- Choose the database management system.
Supported values are 'mysql' for MySQL, 'oracle' for Oracle,
'mssql' for Microsoft SQL Server, 'pgsql' for PostgreSQL.
Used only if databaseConfigurationMethod=withoutHibernateFile -->
<entry key="databaseDbms" value="pgsql"/>
データベース接続の設定をします。
<entry key="databaseHost" value="localhost"/>
<!-- Enter the port number for the database instance. Default ports are for MySQL 3306,
Oracle 1521, Microsoft SQL Server 1433, PostgreSQL 5432. -->
<entry key="databasePort" value="5432"/>
<!-- Enter the database schema -->
<entry key="databaseSchema" value="js7"/>
<!-- Enter the user account for database access -->
<entry key="databaseUser" value="js7_user"/>
<!-- Enter the password for database access -->
<entry key="databasePassword" value="js7_user"/>
設定完了後、ファイルを保存し閉じます。
※本書ではポート、JVM等はデフォルトの設定のため設定しておりませんが、必要に応じて設定します。
コマンドプロンプトを起動し、JOCのインストールを行います。
>cd C:\Users\Administrator\Documents\js7_joc_windows.2.X.X\joc.2.X.X
>setup.cmd joc_install.xml
JOCのインストール完了後、コマンドプロンプトは終了します。
そのため、インストールが成功しているかの確認は、インストールログを確認する必要があります。
パス:C:\Program Files\sos-berlin.com\js7\joc\jetty_base\logs
ファイル:Install_V2.X.X_yyyymmddxxxxx.log
(2)Controllerインストール(ヘッドレスモード)
以下のサイトからControllerをダウンロードし、適当なディレクトリに配置し、解凍します。
https://www.sos-berlin.com/en/jobscheduler-downloads
・ファイル名:js7_controller_windows_installer.2.X.X.zip
・配置先:C:\Users\Administrator\Documents
※インストールファイルは、上記で記載したグラフィカルインストールで使用したものと同じです。
コマンドプロンプトを起動し、Controllerのインストールを行います。
>cd C:\Users\Administrator\Documents\js7_controller_windows_installer.2.X.X\controller.2.X.X
>setup.cmd controller_install.xml
※本書ではControllerのインストールディレクトリ、ポート等はデフォルトのため「controller_install.xml」を修正しておりません、ポート等の変更を行う場合はファイルの修正が必要となります。
Controllerのインストール完了後、コマンドプロンプトは終了します。
そのため、インストールが成功しているかの確認は、インストールログを確認する必要があります。
パス:C:\Program Files\sos-berlin.com\js7\controller\controller\var\logs
ファイル:Install_V2.X.X_yyyymmddxxxxx.log
また、Controllerのインストールは、インストーラを使用せずにZIPファイルを使用しインストールすることも可能です。
以下のサイトからController(ZIPファイル)をダウンロードし、適当なディレクトリに配置し、解凍します。
https://www.sos-berlin.com/en/jobscheduler-downloads
・ファイル名:js7_controller_windows.2.X.X.zip
・配置先:C:\Users\Administrator\Documents
解凍後、「controller」フォルダをJS7インストールディレクトリに配置します。
フォルダ:C:\Users\Administrator\Documents\js7_controller_windows.2.X.X\controller
配置先:C:\Program Files\sos-berlin.com\js7\controller
「controller_instance.cmd-example」をコピーし、起動スクリプトを名前を「controller_instance.cmd」へ変更します。
パス:C:\Program Files\sos-berlin.com\js7\controller\bin
ファイル名:controller_instance.cmd ※「controller_instance.cmd-example」をコピーして作成する。
Controllerのサービスを登録します。
コマンドプロンプトを起動し、サービス登録スクリプトを実行します。
パス:C:\Program Files\sos-berlin.com\js7\controller\controller\bin
コマンド:controller_instance.cmd install-service
>cd C:\Program Files\sos-berlin.com\js7\controller\bin
>controller_instance.cmd install-service
1 個のファイルをコピーしました。
1 個のファイルをコピーしました。
...try to copy "C:\Program Files\sos-berlin.com\js7\controller\service\amd64\prunsrv.exe"
to "C:\Program Files\sos-berlin.com\js7\controller\service\js7_controller_controller.exe"
1 個のファイルをコピーしました。
...try to copy "C:\Program Files\sos-berlin.com\js7\controller\service\manager\prunmgr.exe"
to "C:\Program Files\sos-berlin.com\js7\controller\service\js7_controller_controllerw.exe"
1 個のファイルをコピーしました。
"js7_controller_controller" Service has been installed
Please use "C:\Program Files\sos-berlin.com\js7\controller\service\js7_controller_controllerw.exe" to change Service configurations
Controllerのサービスを開始します。
Windows 管理ツール > サービス の順で移動し、「SOS JS7 Controller -id=controller」のサービスを開始します。
(3)Agentインストール(ヘッドレスモード)
以下のサイトからAgentをダウンロードし、適当なディレクトリに配置し、解凍します。
https://www.sos-berlin.com/en/jobscheduler-downloads
・ファイル名:js7_agent_windows_installer.2.X.X.zip
・配置先:C:\Users\Administrator\Documents
※インストールファイルは、上記で記載したグラフィカルインストールで使用したものと同じです。
コマンドプロンプトを起動し、Agentのインストールを行います。
>cd C:\Users\Administrator\Documents\js7_agent_windows_installer.2.X.X\agent.2.X.X
>setup.cmd agent_install.xml
※本書ではAgentのインストールディレクトリ、ポート等はデフォルトのため「agent_install.xml」を修正しておりません、ポート等の変更を行う場合はファイルの修正が必要となります。
Agentのインストール完了後、コマンドプロンプトは終了します。
そのため、インストールが成功しているかの確認は、インストールログを確認する必要があります。
パス:C:\Program Files\sos-berlin.com\js7\agent\var_4445\logs
ファイル:Install_V2.X.X_yyyymmddxxxxx.log
また、Agentののインストールは、インストーラを使用せずにZIPファイルを使用しインストールすることも可能です。
以下のサイトからAgent(ZIPファイル)をダウンロードし、適当なディレクトリに配置し、解凍します。
https://www.sos-berlin.com/en/jobscheduler-downloads
・ファイル名:js7_agent_windows.2.X.X.zip
・配置先:C:\Users\Administrator\Documents
解凍後、「agent」フォルダをJS7インストールディレクトリに配置します。
フォルダ:C:\Users\Administrator\Documents\js7_agent_windows.2.X.X\agent
配置先:C:\Program Files\sos-berlin.com\js7
「agent_instance.cmd-example」をコピーし、起動スクリプトを名前を「agent_4445.cmd」へ変更します。
パス:C:\Program Files\sos-berlin.com\js7\agent\bin
ファイル名:agent_4445.cmd ※「agent_instance.cmd-example」をコピーして作成する。
※本書はAgentのインストールディレクトリ、ポート等はデフォルトのため、「agent_<ポート番号>.cmd」を修正しておりません、ポート等の変更を行う場合はファイルの修正が必要となります。
Agentのサービスを登録します。
コマンドプロンプトを起動し、サービス登録スクリプトを実行します。
パス:C:\Program Files\sos-berlin.com\js7\agent\bin
コマンド:agent_<ポート番号>.cmd install-service
※コマンドの実行には以下のようにポート、データディレクトリを指定する必要があります。
>cd C:\Program Files\sos-berlin.com\js7\agent\bin
>agent_4445.cmd install-service
1 個のファイルをコピーしました。
1 個のファイルをコピーしました。
1 個のファイルをコピーしました。
...try to copy "C:\Program Files\sos-berlin.com\js7\agent\service\amd64\prunsrv.exe"
to "C:\Program Files\sos-berlin.com\js7\agent\service\js7_agent_4445.exe"
1 個のファイルをコピーしました。
...try to copy "C:\Program Files\sos-berlin.com\js7\agent\service\manager\prunmgr.exe"
to "C:\Program Files\sos-berlin.com\js7\agent\service\js7_agent_4445w.exe"
1 個のファイルをコピーしました。
"js7_agent_4445" Service has been installed
Please use "C:\Program Files\sos-berlin.com\js7\agent\service\js7_agent_4445w.exe" to change Service configurations
※サービス登録後、Agentのデータディレクトリの「C:\Program Files\sos-berlin.com\js7\agent\ver_<ポート番号>」のディレクトリが作成されます。
Agentのサービスを開始します。
Windows 管理ツール > サービス の順で移動し、「SOS JS7 Agent -port=4445」のサービスを開始します。