読者です 読者をやめる 読者になる 読者になる

KZKY memo

自分用メモ.

python: Supervisord 基本

Supervisord

ClouderaManagerのこれを使用してHadoop Serviceを起動している.
subprocessesの管理もできるので分散システムに関しては向いている.

  • 日本語の記事がかなりまとまっているので基本はそれを参考
  • 調べるときは本家を見る
  • Configはini形式

環境

Installation

ubuntuなら

sudo apt-get install supervisor

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

すこし待つと立ち上がある