JobScheduler

提供: 赤信号走り隊の覚書
2014年9月17日 (水) 22:30時点におけるHirofumi IRIE (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

概要

JobSchedulerとは、Javaで実装されたOSSのジョブ管理ツールで、ドイツのSoftware und Organisations-Service GmbH(以下、SOS)が公開している。本投稿時点(2014/09/13)では、Release 1.7.4241とRelease 1.6.4246が公開されている。

インストール

JobScheduler本体

JobScheduler本体をインストールするには、JavaとRDBMS(デフォルトではMySQL)が必要である。以下、JavaとMySQL(および、MySQL Connector/J。CentOSなどではパッケージ名:mysql-connector-java)が既にインストールされている前提とする。

1. データベースの作成

名前は何でも良い。ここでは、すべてschedulerとする。注意点は、文字エンコーディングにutf8mb4は使えないこと。大きなキーを作成するようなので、utf8mb4ではMySQLのキーサイズ制限でエラーになる。

mysql -u root -e "CREATE DATABASE scheduler CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
mysql -u root -e "GRANT ALL PRIVILEGES ON scheduler.* TO 'scheduler'@'localhost' IDENTIFIED BY 'scheduler';"

2. JobSchedulerのダウンロード

投稿時点での1.6系をダウンロードする例。

wget http://download.sos-berlin.com/JobScheduler.1.6/jobscheduler_linux-x64.1.6.4246.tar.gz
tar xzf jobscheduler_linux-x64.1.6.4246.tar.gz
rm -f jobscheduler_linux-x64.1.6.4246.tar.gz

3. インストール設定

jobscheduler_install.xmlに設定を記述する。 なお、記述すべき箇所に"[:choose〜]"といった記述があるが、これはコメントアウトせずに削除する必要がある。これは、setup.shが、"[:choose〜"の記述をjobscheduler_install.xmlに発見すると、インストール設定が行われていないとみなしてエラー扱いにするからだ。

本体のインストール先を指定

    <com.izforge.izpack.panels.TargetPanel id="target">
        <installpath>/usr/local/lib/jobscheduler</installpath>
    </com.izforge.izpack.panels.TargetPanel>

設定やログ出力先を指定

    <com.izforge.izpack.panels.UserPathPanel id="userpath">
        <UserPathPanelElement>/var/run/jobscheduler</UserPathPanelElement>
    </com.izforge.izpack.panels.UserPathPanel>

ネットワークの指定

schedulerAllowedHostの0.0.0.0はどこからでも。

    <com.izforge.izpack.panels.UserInputPanel id="network">
        <userInput>
            <entry key="schedulerHost" value=""/>
            <entry key="schedulerPort" value="4444"/>
            <entry key="jettyHTTPPort" value="40444"/>
            <entry key="jettyHTTPSPort" value="48444"/>
            <entry key="schedulerId" value="scheduler"/>
            <entry key="schedulerAllowedHost" value="0.0.0.0"/>
            <entry key="launchScheduler" value="yes"/>
        </userInput>
    </com.izforge.izpack.panels.UserInputPanel>

データベースの指定

    <com.izforge.izpack.panels.UserInputPanel id="database">
        <userInput>
            <entry key="databaseDbms" value="mysql"/>
            <entry key="databaseCreate" value="on"/>
        </userInput>
    </com.izforge.izpack.panels.UserInputPanel>
    <com.izforge.izpack.panels.UserInputPanel id="dbconnection">
        <userInput>
            <entry key="databaseHost" value="localhost"/>
            <entry key="databasePort" value="3306"/>
            <entry key="databaseSchema" value="scheduler"/>
            <entry key="databaseUser" value="scheduler"/>
            <entry key="databasePassword" value="scheduler"/>
            <entry key="connectorJTDS" value="yes"/>
            <entry key="connectorMaria" value="yes"/>
        </userInput>
    </com.izforge.izpack.panels.UserInputPanel>
    <com.izforge.izpack.panels.UserInputPanel id="jdbc">
        <userInput>
            <entry key="connector" value="/usr/share/java/mysql-connector-java.jar"/>
        </userInput>
    </com.izforge.izpack.panels.UserInputPanel>

4. インストーラの実行

./setup.sh -u jobscheduler_install.xml

これが終わったら、ダウンロード・展開したものはディレクトリごと削除してかまわない。

5. UIの日本語化

上記設定でいけば、/var/run/jobscheduler/scheduler/config/operations_gui/custom.jsで次のように記述することで日本語表示できる。

_sos_lang = 'ja';

6. サービスとして登録する

scheduler/bin/jobscheduler.sh startとすれば起動できる。が、 インストーラを実行したからといって、サービスとして登録してはくれない。なので、簡単なシェルを記述して、jobschedulerといった名前で/etc/init.dに放り込む。

#!/bin/bash
#
# chkconfig:    345 99 1
#
# description:  Startup service wrapper for SOS JobScheduler
# processname:  jobscheduler
# config: none
# pidfile: none
#
 
# source function library
. /etc/rc.d/init.d/functions
 
RETVAL=0
SERVICE_NAME=`basename $0`
JOBSCHEDULER=/usr/local/lib/jobscheduler/scheduler/bin/jobscheduler.sh
 
start() {
    $JOBSCHEDULER start
    RETVAL=$?
}
 
stop() {
    $JOBSCHEDULER stop
    RETVAL=$?
}
 
restart() {
    $JOBSCHEDULER restart
    RETVAL=$?
}
 
status() {
    $JOBSCHEDULER version
    RETVAL=$?
}
 
case "$1" in
  start)
        start
        ;;
  stop) 
        stop
        ;;
  restart)
        restart
        ;;
  status)
        status
        ;;
  *)
  echo $"Usage: $0 {start|stop|status|restart}"
  exit 1
esac
 
exit $RETVAL

後は、chkconfigを実行して起動。

sudo chkconfig --add jobscheduler
sudo chkconfig jobscheduler  on
sudo service jobscheduler start

7. UIが表示されるか確認

http://[ホスト名]:4444/にアクセスして確認。