オープンソースコンポーネントのsupervisord
16571 ワード
公衆番号:「糞製品マネージャー」 qq:1013896790 交流を歓迎する
オープンソースコンポーネントはインターネット分野で非常に重要な一部であり、製品やプロジェクトを構築する際に、オープンソースコンポーネントを使用することで、開発効率を向上させ、自分のビジネスロジックに注目することができます.一方、オープンソースコンポーネントは、アーキテクチャ、テクノロジーの詳細においても、私たちが参考にして学ぶ価値のあるものがたくさんあります.
supervisord
supervisordって何?
supervisordはプロセス管理ソフトウェアであり、異なるプロセスに対して同じ方法で起動、停止、再起動、監視を行うことができます.
なぜsupervisordを使うのか
サーバ上のサービスを統一的に管理し、監視し、メンテナンス担当者は異なるサービスの起動と停止方法が何であるかを記憶する必要がなく、supervisorctlサービス名start/stop/restartなどを通過することができます.また、supervisordには、その名の通り、supervisorが監視しているサービスが異常に終了すると、supervisordはSIGCHLD信号を受信し、supervisordはすぐにサービスを再起動し、作業を継続します.
supervisordの使い方
supervisordのインストールと構成は非常に簡単です.
インストール:
supervisordはyumまたはpipでインストールできます.
https://pypi.org/project/supervisor/#files
tarパッケージ
tar zxvf supervisor.tar.gz;cd supervisor;python setup.py install
whlパッケージ
pip install supervisor.whl
オフラインインストールではsetuptoolsとmeld 3の2つのパッケージに依存する可能性がありますが、同じpypiでダウンロードしてインストールした後、supervisordをインストールできます. setuptools (latest) from https://pypi.org/pypi/setuptools/. meld3 (latest) from https://pypi.org/pypi/meld3/.
構成(転入元)http://lixcto.blog.51cto.com/4834175/1539136):
supervisord -c supervisor.conf
supervisor.confはsupervisordとsupervisorctlで同時に使用され、-cパラメータを追加しない場合、supervisorは以下の順序で検索されます. $CWD/supervisord.conf $CWD/etc/supervisord.conf /etc/supervisord.conf /etc/supervisor/supervisord.conf (since Supervisor 3.3.0) ../etc/supervisord.conf (Relative to the executable) ../supervisord.conf (Relative to the executable)
使用:
上記の構成を例にとると、theprogramnameというプロセスを操作するには、コマンドは
supervisorctl start/stop/restart theprogramname
手動killでtheprogramenameというプロセスを落とすと、すぐにsupervisorに引っ張られることに気づきます
詳細はsupervisordの公式サイトを参照してください.
http://www.supervisord.org/index.html
オープンソースコンポーネントはインターネット分野で非常に重要な一部であり、製品やプロジェクトを構築する際に、オープンソースコンポーネントを使用することで、開発効率を向上させ、自分のビジネスロジックに注目することができます.一方、オープンソースコンポーネントは、アーキテクチャ、テクノロジーの詳細においても、私たちが参考にして学ぶ価値のあるものがたくさんあります.
supervisord
supervisordって何?
supervisordはプロセス管理ソフトウェアであり、異なるプロセスに対して同じ方法で起動、停止、再起動、監視を行うことができます.
なぜsupervisordを使うのか
サーバ上のサービスを統一的に管理し、監視し、メンテナンス担当者は異なるサービスの起動と停止方法が何であるかを記憶する必要がなく、supervisorctlサービス名start/stop/restartなどを通過することができます.また、supervisordには、その名の通り、supervisorが監視しているサービスが異常に終了すると、supervisordはSIGCHLD信号を受信し、supervisordはすぐにサービスを再起動し、作業を継続します.
supervisordの使い方
supervisordのインストールと構成は非常に簡単です.
インストール:
supervisordはyumまたはpipでインストールできます.
yum install supervisor
pip install supervisor
機器がネットワークに接続できない場合は、オフラインインストール方式でpypiでtarパッケージまたはwhlアップロード機器をダウンロードしてインストールできますhttps://pypi.org/project/supervisor/#files
tarパッケージ
tar zxvf supervisor.tar.gz;cd supervisor;python setup.py install
whlパッケージ
pip install supervisor.whl
オフラインインストールではsetuptoolsとmeld 3の2つのパッケージに依存する可能性がありますが、同じpypiでダウンロードしてインストールした後、supervisordをインストールできます.
構成(転入元)http://lixcto.blog.51cto.com/4834175/1539136):
[unix_http_server]
file=/tmp/supervisor.sock ; socket ,supervisorctl XML_RPC supervisord
。 ,supervisorctl
, none。
;chmod=0700 ; , socket 0700
, 0700。
;chown=nobody:nogroup ; , socket user.group
, supervisord 。
;username=user ; supervisorctl ,
, 。
;password=123 ; , , SHA
:{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d
。。。
;[inet_http_server] ; TCP socket,Web Server supervisorctl
, 。
;port=127.0.0.1:9001 ; IP , IP :9001 *:9001。
, [inet_http_server] ,
;username=user ; uinx_http_server 。
;password=123 ; 。
[supervisord] ; supervisord
, ,supervisor
logfile=/tmp/supervisord.log ; supervisord , 。
$CWD/supervisord.log,$CWD 。。
logfile_maxbytes=50MB ; , 50M ,
。 0 ,
50M, 。
logfile_backups=10 ; , 50M , 。
10 , , 10
0 , 。
10。。。
loglevel=info ; , critical, error, warn, info, debug, trace, or blather
info。。。
pidfile=/tmp/supervisord.pid ; supervisord pid 。
$CWD/supervisord.pid。。。
nodaemon=false ; true,supervisord
false, 。。。
minfds=1024 ; , supervisor 。
cat /proc/sys/fs/file-max
1024。。。
minprocs=200 ; , supervisor 。
ulimit -u , linux
200。。。
;umask=022 ;
022。。
;user=chrism ; root , root supervisord 。
, supervisord
。。。
;identifier=supervisor ; supervisord , XML_RPC 。
supervisor , XML_RPC ,
supervisor
supervisord。。。
;directory=/tmp ; supervisord , ,
supervisord ,
。。。
;nocleanup=true ; false , supervisord ,
( AUTO ) 。 ,
。 true
false, true。。。
;childlogdir=/tmp ; AUTO , 。
, OK ,
python -c "import tempfile;print tempfile.gettempdir()"
;environment=KEY="value" ; ,supervisord linux linux
, supervisord 。
supervisord , 。
。
:environment=name="haha",age="hehe"
。。。
;strip_ansi=false ; true, ANSI 。 ANSI
?
,\t 。
false。。。
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor] ; XML_RPC , supervisord web server
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl] ; supervisorctl
serverurl=unix:///tmp/supervisor.sock ; supervisorctl supervisord , UNIX socket
, [unix_http_server]
unix:///tmp/supervisor.sock。。
;serverurl=http://127.0.0.1:9001 ; supervisorctl supervisord , TCP socket
[inet_http_server]
http://127.0.0.1:9001。。。
;username=chris ;
。。
;password=123 ;
。。
;prompt=mysupervisor ;
supervisor。。
;history_file=~/.sc_history ; shell history ,
no file 。。 , 。。。
; The below sample program section shows all possible program subsection values,
; create one or more 'real' program: sections to be able to control them under
; supervisor.
;[program:theprogramname] ; ,":" ,
。 program , program
;command=/bin/cat ; ,
:/home/test.py -a 'hehe'
, command ,
。 , command=service httpd start。
httpd linux service , supervisor
。
;process_name=%(program_name)s ; , numprocs 1 ,
, %(program_name)s program ,
numprocs , 。 ,
。
;numprocs=1 ; 。 1 , , process_name
1 。。
;directory=/tmp ; ,
。。。
;umask=022 ; , none,
;priority=999 ; , , ,
999 。。
;autostart=true ; true , supervisord
true 。。
;autorestart=unexpected ; , ,false,unexpected
true。 false , , ,
unexpected, exitcodes
, 。 true , ,
;startsecs=1 ; , running,
1 。。
;startretries=3 ; , 。。 3 ,supervisor
FAIL
3 。。
;exitcodes=0,2 ; autorestart=unexpected 。。exitcodes
expected 。
;stopsignal=QUIT ; , TERM, HUP, INT, QUIT, KILL, USR1, or USR2
TERM 。。 , expected
;stopwaitsecs=10 ; stopsignal ,
supervisord, 。 ,supervisord
kill 。
10 。。
;stopasgroup=false ; ,supervisord ,
。 supervisord ,
。 ,
。 true , killasgroup true。
, stop
false。。 。。
;killasgroup=false ; stopasgroup , kill
;user=chrism ; supervisord root , root ,
program
。。。
;redirect_stderr=true ; true, stderr stdout
false,
;stdout_logfile=/a/path ; stdout , ,AUTO,none 。
none , 。 AUTO ,
, supervisord ,
。 redirect_stderr=true ,sterr
;stdout_logfile_maxbytes=1MB ; , [supervisord] 。 50
;stdout_logfile_backups=10 ; [supervisord] 。 10
;stdout_capture_maxbytes=1MB ; capture , 0 , stdout
, supervisor , event。
0, 0 。。。
;stdout_events_enabled=false ; ture , stdout ,
supervisord PROCESS_LOG_STDOUT event
false。。。
;stderr_logfile=/a/path ; stderr , redirect_stderr=true。
, 。 stdout_logfile
AUTO, ,supervisord 。。
;stderr_logfile_maxbytes=1MB ; ,
;stderr_logfile_backups=10 ;
;stderr_capture_maxbytes=1MB ; , stdout_capture 。 0,
;stderr_events_enabled=false ; , false
;environment=A="1",B="2" ; ,
;serverurl=AUTO ;
; The below sample eventlistener section shows all possible
; eventlistener subsection values, create one or more 'real'
; eventlistener: sections to be able to handle event notifications
; sent by supervisor.
;[eventlistener:theeventlistenername] ; program , suopervisor
, supervisord event。
listener 。 listener ,
,
;command=/bin/eventlistener ; program , listener
;process_name=%(program_name)s ; , , numprocs , 。
OK
;numprocs=1 ; listener
;events=EVENT ; event , , 。
;buffer_size=10 ; event , , 。 buffer
10 , event , event 。
10。。
;directory=/tmp ; ,
。。。
;umask=022 ; , none,
;priority=-1 ; , -1,
;autostart=true ; supervisord , true
;autorestart=unexpected ; , program , true,false,unexpected ,
unexpected exitcodes
;startsecs=1 ; , , , 1
;startretries=3 ; , 3
;exitcodes=0,2 ; ,
;stopsignal=QUIT ; , TERM, QUIT, QUIT
, expected
;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
;stopasgroup=false ; send stop signal to the UNIX process group (default false)
;killasgroup=false ; SIGKILL the UNIX process group (def false)
;user=chrism ; , listener 。
。。
;redirect_stderr=true ; true ,stderr log stdout log
false。。。
;stdout_logfile=/a/path ; ,
;stdout_logfile_maxbytes=1MB ;
;stdout_logfile_backups=10 ;
;stdout_events_enabled=false ; ,listener event
;stderr_logfile=/a/path ;
;stderr_logfile_maxbytes=1MB ;
;stderr_logfile_backups ;
;stderr_events_enabled=false ; ,listener event
;environment=A="1",B="2" ;
。。。
;serverurl=AUTO ; override serverurl computation (childutils)
; The below sample group section shows all possible group values,
; create one or more 'real' group: sections to create "heterogeneous"
; process groups.
;[group:thegroupname] ; programs , program。
。 :program ,
supervisor 。。。supervisor ,
program
;programs=progname1,progname2 ; ,
;priority=999 ; ,
999。。
; 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] ; , ,
。 , include
;files = relative/directory/*.ini
開始:supervisord -c supervisor.conf
supervisor.confはsupervisordとsupervisorctlで同時に使用され、-cパラメータを追加しない場合、supervisorは以下の順序で検索されます.
使用:
上記の構成を例にとると、theprogramnameというプロセスを操作するには、コマンドは
supervisorctl start/stop/restart theprogramname
手動killでtheprogramenameというプロセスを落とすと、すぐにsupervisorに引っ張られることに気づきます
詳細はsupervisordの公式サイトを参照してください.
http://www.supervisord.org/index.html