LoginSignup
4
3

More than 5 years have passed since last update.

Supervisorで複数プロセスをグループ化して、一括操作する

Last updated at Posted at 2018-07-04

はじめに

サーバーサイドの各種常駐プロセスをdaemon化したい、というときに
Supervisor を使うと便利ですよね。

私のプロジェクトでも Supervisor を使用していますが、
複数プロセスをまとめて起動/停止するオペレーションや、各プロセスの設定を使い回す際に少しハマったのでメモ。

各プロセスの設定

今回、各プロセスの設定は hogehoge.conf に記載しておくこととします。
以下の例ではGCP CloudSQLに接続するためのcloudsql_proxyのプロセスを起動しています。

cloudsql.conf
[program:cloudsql]
command=cloud_sql_proxy -instances=hogehoge::asia-northeast1:fugafuga -dir=/cloudsql/
autostart=false
autorestart=true

supervisor.confの設定

Supervisorの大元の設定ファイルとして、 supervisor.conf があります。
こちらのファイルで先ほど作成したプロセス毎のconfファイルを読み込み、設定します。

supervisor.conf

~~~中略~~~

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf

[group:first_group]
programs=cloudsql
[group:second_group]
programs=cloudsql, nginx

このように設定することで、各プロセスの定義をグループ化することができます。
以下のようなコマンドを叩くと、グループ単位での操作が可能です。

~ $ supervisorctl start first_group:*

※アスタリスクをプロセス名に変えれば、プロセス単位での操作も可能です。

また、同一のconfファイルの定義をグループ間で使い回すことができるので、
サーバーの種類に応じたプロセス定義をグループ化してまとめることが出来ます。
上記の例では、 group:second_group では cloudsql のプロセスに加えて、 nginx のプロセスもグループに加えています。

このグループ化を使うことで、サーバー間で設定ファイルを個別に作らずとも
サーバー毎の設定を group にまとめて記載しておけば、起動するgroupを変えるだけで起動プロセスの制御が可能となります。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3