每期一个小窍门: 利用 supervisor 保证进程级别的简单高可用

Posted 李昊轩的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每期一个小窍门: 利用 supervisor 保证进程级别的简单高可用相关的知识,希望对你有一定的参考价值。

supervisor安装

supervisor 是一个简单好用的 进程级别的监控组件, 可以帮助我们保证进程的高可用.
下面是supervisor的安装与使用方法.

安装supervisor

yum install -y supervisor

开机自启

systemctl enable supervisord; systemctl start supervisord

vi /etc/supervisord.conf

此段落可以开启supervisor可视化页面, 端口自定

[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:30005        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123               ; (default is no password (open server))

一般使用子文件 *.ini来约定管理的进程, 方便解耦

[root@Server-i-foo ~]# vi /etc/supervisord.d/
coupon-service.ini    filebeat-service.ini  task-service.ini

一个简单的java -jar 进程 例子

[program:task-service]
command=java -jar /home/xxx/task.jar --spring.profiles.active=prod             ; the program (relative uses PATH, can take args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1                    ; number of processes copies to start (def 1)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
autostart=true                ; start at supervisord start (default: true)
autorestart=true              ; retstart at unexpected quit (default: true)
startsecs=10                  ; number of secs prog must stay running (def. 1)
startretries=10                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
user=root                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A=1,B=2           ; process environment additions (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

结果如下, 很好用, 值得推荐!

以上是关于每期一个小窍门: 利用 supervisor 保证进程级别的简单高可用的主要内容,如果未能解决你的问题,请参考以下文章

每期一个小窍门: k8s容器亲和性的小例子

每期一个小窍门: mongodb 通过正则 匹配删除数据库

每期一个小窍门: mongodb 通过正则 匹配删除数据库

每期一个小窍门: mongodb 通过正则 匹配删除数据库

每期一个小窍门: k8s容器亲和性的小例子

每期一个小窍门: k8s容器亲和性的小例子