CloudForecastをDaemontoolsの管理下におく

ようやくCloudForecastをDaemontoolsで管理する話です。


このへんからFedora15だとうまく行かないことが多くなってきたので、調べるよりもCentOSScientific Linuxでやった方が良さそうなので、そちらに環境を移します。(本当はちゃんと調べたほうがいいんだろうけど)

ここからは、KVM上のCentOS 6 (x86_64) になります。

daemontools のインストール

ソースから入れてもそれほど苦にはならないが、パッケージ管理できていたほうが色々と都合が良いのでRPMからインストールします。

# wget http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/daemontools-0.76-1.el6.art.x86_64.rpm
# rpm -ivh daemontools-0.76-1.el6.art.x86_64.rpm


前のエントリでも書いたが、CentOS6からはUpstartが採用されており、従来のinittabを利用したsvscanの管理ができなくなっている。そのため、以下のようにして、対応する。

  • /etc/init/svscan.confを作成
start on runlevel [12345]
respawn
exec /command/svscanboot
  • 作成したsvscan.confを読み込ませて、実行する。
# initctl reload-configuration
# initctl start svscan

これで、daemontoolsの管理プロセスであるsvscanが起動する。

CloudForecastのradarプロセスとwebプロセスをdaemontoolsの管理下に置く

/servive 以下に配置するrunスクリプトなどの雛形を毎回手で作成するのは面倒なので、[twitter:@hansode] さんのaddsv.sh*1を利用させていただく。hansode++

# cd /service
# ./addsv.sh cf_radar
# ./addsv.sh cf_web
# vi ./cf_radar/run
# vi ./cf_web/run
# mv .cf_radar cf_radar
# mv .cf_web cf_web


以上でrunスクリプトに指定したコマンドが実行されて、無事CloudForecastのradarプロセスとwebプロセスが起動する。"-r"オプションをつけていてファイルが変更されるたびにプロセスが停止するのを、こいつが再起動してくれます。これで安心して運用できますね。


それぞれのrunスクリプトはこんな感じ。"sleep 3" はaddsv.shのひな形のままなのですが、特に検証してはいません。

  • cf_radar/run
#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
export PATH

CF_DIR=/opt/cloudforecast
CF_CONF=${CF_DIR}/cloudforecast.yaml
CF_SERVER_LIST=${CF_DIR}/server_list.yaml

exec 2>&1
sleep 3

${CF_DIR}/cloudforecast_radar -r -c ${CF_CONF} -l ${CF_SERVER_LIST}
  • cf_web/run
#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
export PATH

CF_DIR=/opt/cloudforecast
CF_CONF=${CF_DIR}/cloudforecast.yaml
CF_SERVER_LIST=${CF_DIR}/server_list.yaml
CF_WEB_PORT=5000

exec 2>&1
sleep 3

${CF_DIR}/cloudforecast_web -r -c ${CF_CONF} -l ${CF_SERVER_LIST} -p ${CF_WEB_PORT}