変わったことといえば、やけ食いで太ったことでしょうか。
今回は、JobschedulerというOSSのスケジューラソフトを紹介します。
ある程度の規模のシステム開発においては、システム間連携は必須です。
既存のシステム・クラウドの様々なサービスを連携することが増えてきています。
ここ数年は、商用ソフトは高いため、ジョブスケジューラソフトもOSSでという要望をお客様から聞くことも増えています。
JobSchedulerとは、ドイツのSoftware Open Source社(以下、SOS社と記述)が開発したソフトウェアです。
Windows版とLinux版は、OSSとして公開され無料で使うことができます。
JobSchedulerの導入については、@ITのJobSchedulerの記事がわかりやすいかと思います。
日本でも日本ジョブスケジューラユーザグループがあり、これから盛り上がることを期待したいところです。
また、JobScheduler自体は、c++・Java・Scalaで開発しています。ソースはSOS社のサイトから取得できます。
使ってみて感じたスケジューラソフトにおけるJobSchedulerのメリットは以下です。
- cronだとちょっと面倒な設定がブラウザから設定できる
- ファイル受信したタイミングでジョブ起動ができる
- 第3土曜日、月末日など少し複雑な条件でのジョブ起動ができる
- ジョブの多重起動を防止することもできる
- ジョブの設定が全てテキストファイル(XML)なので構成管理できる
- JenkinsでCIができる
- サーバのリソースをあまり使わない
- ジョブの制御だけならAWSのEC2のmicro instanceで十分!
- ジョブ起動の設定ファイルに、シェルだけでなくperlやJavaで記述することができる
今回は、JobScheduler(JOC)をEC2とRDSにインストールする手順を書きます。
本家のドキュメントは古く32bit版のJavaを使っていますが、今回は64bit版のJavaを使います。
また、AWSのmicro instanceを使うので、無料で試すことができます。
準備するもの
- EC2 (Amazon Linux) micro instance
- RDS (MySQL 5.6) micro instance
OS(AMI)はAmazon Linux 64bit、micro instanceを設定してください。
言語設定を日本語に変更します。
$ sudo vi /etc/sysconfig/i18n LANG="ja_JP.utf8" LC_CTYPE="ja_JP.utf8"
タイムゾーンをJSTに変更します。
$ sudo mv /etc/localtime /etc/localtime.ORG $ sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
一旦、rebootします。
RDSはここを参考に設定します。
今回はMySQL 5.6を使います。
MySQLの設定は以下として設定しておきます。
- データベース名:scheduler
- ユーザ名:scheduler
- パスワード:適当な文字列
OpenJDKをyumでinstallします。
sudo yum install java-1.7.0-openjdk
これでJobSchedulerをインストールする準備が整いました。
まずは、SOS社のサイトから「Linux-x64 Full install」でJobSchedulerをダウンロードします。
ダウンロードしたものを展開します。
展開後、下記ディレクトリに移動します。
JobSchedulerは通常、GUIでインストールしますが、CUIでもインストール可能です。
今回は、CUIでインストールします。
プログラムのインストールディレクトリと、Jobの定義ファイルやログを配置するユーザディレクトリを定義します。
ここでは
ネットワークの設定です。ここではどのIPからでもアクセスできるようにschedulerAllowedHostの値を0.0.0.0で設定します。
DBを設定します。
ここでは、下記のように定義しています。
インストールが完了すると下記のようになります。
ブラウザでEC2のドメイン名:4444にアクセスすると、下記のようにジョブ管理画面が出ます。
ジョブ管理画面からは、ジョブの実行ステータス、ジョブの実行予定日時、実行したジョブの結果、ログなど様々な情報をみることができます。
これなら、多少バッチジョブの数があっても混乱することはないですね。しかも、unixコマンドを知らない人でもジョブの状況を把握したり、ジョブ起動することができます。
JobScheduler自体を起動・停止・再起動したい場合は、下記コマンドを実行すればOKです。
また、画面の日本語化は下記ファイルの
様々なサービスをインテグレーションするときにバッチジョブの連携が大変な場合は、JobSchedulerを考えてみてはいかがでしょうか。
また、シャノンではマーケティングプラットフォームをメインにしたクラウドインテグレーションを担当する仲間を募集しています。
興味を持った方はこちらから
今回のところはこの辺で...
まずは、SOS社のサイトから「Linux-x64 Full install」でJobSchedulerをダウンロードします。
wget http://sourceforge.net/projects/jobscheduler/files/jobscheduler_linux-x64.1.5.3253.tar.gz
ダウンロードしたものを展開します。
tar xvfz jobscheduler_linux-x64.1.5.3253.tar.gz
展開後、下記ディレクトリに移動します。
cd jobscheduler.1.5.3253
JobSchedulerは通常、GUIでインストールしますが、CUIでもインストール可能です。
今回は、CUIでインストールします。
インストールするための設定ファイルは下記xmlファイルです。
jobscheduler_install.xml
プログラムのインストールディレクトリと、Jobの定義ファイルやログを配置するユーザディレクトリを定義します。
ここでは
- インストールディレクトリ
- /usr/local/jobscheduler
- ユーザディレクトリ
- /home/ec2-user/jobscheduler
/usr/local/jobscheduler /home/ec2-user/jobscheduler
ネットワークの設定です。ここではどのIPからでもアクセスできるようにschedulerAllowedHostの値を0.0.0.0で設定します。
DBを設定します。
ここでは、下記のように定義しています。
- データベース名:scheduler
- ユーザ名:scheduler
下記コマンドを実行してインストールします。
chmod 755 setup.sh ./setup.sh jobscheduler_install.xml
インストールが完了すると下記のようになります。
ブラウザでEC2のドメイン名:4444にアクセスすると、下記のようにジョブ管理画面が出ます。
ジョブ管理画面からは、ジョブの実行ステータス、ジョブの実行予定日時、実行したジョブの結果、ログなど様々な情報をみることができます。
これなら、多少バッチジョブの数があっても混乱することはないですね。しかも、unixコマンドを知らない人でもジョブの状況を把握したり、ジョブ起動することができます。
JobScheduler自体を起動・停止・再起動したい場合は、下記コマンドを実行すればOKです。
#起動 /usr/local/jobscheduler/scheduler/bin/jobscheduler.sh start #停止 /usr/local/jobscheduler/scheduler/bin/jobscheduler.sh stop #再起動 /usr/local/jobscheduler/scheduler/bin/jobscheduler.sh restart #状況 /usr/local/jobscheduler/scheduler/bin/jobscheduler.sh status
また、画面の日本語化は下記ファイルの
/home/ec2-user/jobscheduler/scheduler/config/operations_gui/custom.js
_sos_lang = 'ja';とすれば大丈夫です。
様々なサービスをインテグレーションするときにバッチジョブの連携が大変な場合は、JobSchedulerを考えてみてはいかがでしょうか。
また、シャノンではマーケティングプラットフォームをメインにしたクラウドインテグレーションを担当する仲間を募集しています。
興味を持った方はこちらから
今回のところはこの辺で...