python: Supervisord 基本
Supervisord
ClouderaManagerのこれを使用してHadoop Serviceを起動している.
subprocessesの管理もできるので分散システムに関しては向いている.
- 日本語の記事がかなりまとまっているので基本はそれを参考
- 調べるときは本家を見る
- Configはini形式
環境
- Ubuntu 14.04
Default Confの設定
/etc/supervisor/supervisord.conf
にdefault設定が入っている.
自前で用意もできる
$ echo_supervisord_conf > supervisord.conf
起動時に-c optionで,独自confを設定できる.
/etc/supervisor/conf.d/の下にいろいろ${program}.confとini形式で書いていく.
cat programのデーモン化の例
- /etc/supervisor/conf.d/cat.conf
[program:cat] command=/bin/cat
起動,確認,停止
$ sudo service supervisor start
$ sudo supervisorctl status cat RUNNING pid 20439, uptime 0:00:07
$ sudo supervisorctl stop cat
pipでインストールした時にsupervisorをservice化
pipでsupervisordをインストールすると,configファイルが入っていないし,serviceとしても登録されないが,ここの通りに行えば大丈夫.
しかし,いくつか注意が必要
configファイルでは,
- pidファイルへのパス
デーモンスクリプトでは,
- supervisordへのパス
が異なるかもしれないので変更すること
- pidファイルへのパス: /var/run/supervisord.pid
- supervisordへのパス: /usr/local/bin/supervisord
でいいと思う.http serverがでに立ち上がっているといるエラーは,実際にunixsocketでlistenしていると思うので,ここの通りに,
sudo unlink /tmp/supervisor.sock
確認
sudo service supervisord start
すこし待つと立ち上がある