相変わらずDockerの日々で、最近はWordpressのコンテナ作り。
参考サイトがないとなかなか難しいですが、ある程度は出来てきました。しかし、そのなかで使われているSupervisorというものをあんまり知らないので、ちょこっと触っとこうと思います。
Dockerもkvmもだけど、仮想化は小さい基礎の積み重ねが大事だなと、色々調べていると感じます。LPIC3-4がまるっと仮想化ってのはなかなか粋ですな。
SupervisorはMonitと同じくプロセス監視の役割をするもののようです。
たけけんもスクリプトでLoadaverageとhttpdの監視するCronを動かしてますが、こやつらはそれそのものを監視しているので、GUIを使えばhttpdを止めたりもできるようになってます。
Dockerではこういったものを併用するのは基本のようですね。
supervisorのインストールのだけども
epelのリポジトリを用意をして、yumでsupervisorをインストールする方法
Pythonのeasy_installを使う方法
の2通りがあるのだが、どちらもちょこっと触ったところ、easy_installを使った方法の方がやりやすい感じがしたので、easy_installを使ってsupervisorを使う方にします。
ちなみにyumの場合のバージョンは2.1系です。ちょっち古い??
[root@testserver]# yum --enablerepo=epel install supervisor ==================================================================================================== Package Arch Version Repository Size ==================================================================================================== Installing: supervisor noarch 2.1-8.el6 epel 292 k Installing for dependencies: python-meld3 x86_64 0.6.7-1.el6 epel 71 k
では進めていきます。インストールはこんな風にします。
# easy_install supervisor Installed /usr/lib/python2.6/site-packages/supervisor-3.0-py2.6.egg Processing dependencies for supervisor Finished processing dependencies for supervisor
echo_supervisord_conf コマンドで初期設定が出力されるようなので、/etc/supervisord.conf にリダイレクトします。
# echo_supervisord_conf > /etc/supervisord.conf
一応、yumでインストールした場合のconf
# grep -v "^;" /etc/supervisord.conf | grep -v "^$" [/root] [supervisord] http_port=/var/tmp/supervisor.sock ; (default is to run a UNIX domain socket server) logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) logfile_backups=10 ; (num of main logfile rotation backups;default 10) loglevel=info ; (logging level;default info; others: debug,warn) pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) nodaemon=false ; (start in foreground if true;default false) minfds=1024 ; (min. avail startup file descriptors;default 1024) minprocs=200 ; (min. avail process descriptors;default 200) [supervisorctl] serverurl=unix:///var/tmp/supervisor.sock ; use a unix:// URL for a unix socket
echo_supervisord_conf の出力したものとだいたい一緒です。
プロセスの監視をするために、各設定ファイルをincludeする記述を追加します。
138 ;[include] 139 ;files = relative/directory/*.ini 140 [include] 141 files = /etc/supervisord.d/*.conf
# mkdir -p /etc/supervisord.d
設定ファイルは長くなるならミドルウェアごとになるだろうし、短ければまとめちゃったらいいと思う。
参考サイト
qiita yujiodさん 各種ミドルウェアをSupervisorで管理する
yujiodさんのconfファイルを参考に、nginxの記述を追加する。
そして実行してエラーがでなければOKだ。
# supervisord /usr/lib/python2.6/site-packages/supervisor-3.0-py2.6.egg/supervisor/options.py:295: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security. 'Supervisord is running as root and it is searching '
起動が終わったらプロセスを確認してみる。
# supervisorctl status nginx RUNNING pid 1404, uptime 0:00:18
参考サイト
memorycraft Dockerってなんじゃ?
memorycraftさんの起動スクリプトを使わせていただく。
[root@kensho]# vi /etc/init.d/supervisord [root@kensho]# chmod 755 /etc/init.d/supervisord [root@kensho]# /etc/init.d/supervisord status supervisord (pid 1403) を実行中.. [root@kensho]# /etc/init.d/supervisord stop supervisord を停止中: [ OK ]
inet_httpを有効にすればGUI使えます。
16 [inet_http_server] ; inet (TCP) server disabled by default 17 ;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) 18 port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface)
なかなかイカスね。
見よう見まねでhttpdで試してみた。
# cat /etc/supervisord.d/set.conf [program:httpd] command=/usr/sbin/httpd -D FOREGROUND autostart=true autorestart=true
プロセスを見るとこうなるようだ。
# ps aux | grep httpd [/root] root 1660 0.0 0.4 175828 4808 ? S 17:50 0:00 /usr/sbin/httpd -D FOREGROUND apache 1661 0.0 0.2 175828 2520 ? S 17:50 0:00 /usr/sbin/httpd -D FOREGROUND apache 1662 0.0 0.2 175828 2520 ? S 17:50 0:00 /usr/sbin/httpd -D FOREGROUND apache 1663 0.0 0.2 175828 2520 ? S 17:50 0:00 /usr/sbin/httpd -D FOREGROUND apache 1664 0.0 0.2 175828 2520 ? S 17:50 0:00 /usr/sbin/httpd -D FOREGROUND apache 1665 0.0 0.2 175828 2520 ? S 17:50 0:00 /usr/sbin/httpd -D FOREGROUND
ふむふむ。
とりあえずこれくらいでいいかな。
次回はまたDocker。