CloudForecastをDaemontoolsの管理下におく
ようやくCloudForecastをDaemontoolsで管理する話です。
このへんからFedora15だとうまく行かないことが多くなってきたので、調べるよりもCentOSやScientific 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}