使用 Supervisor 管理进程
Posted 钢闸门的笔记收藏册
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Supervisor 管理进程相关的知识,希望对你有一定的参考价值。
1、介绍
Supervisor是一个客户端/服务器系统,允许用户在类UNIX操作系统上控制大量进程。 作用:为每个实例编写启动脚本通常是不方便的。 编写和维护会很痛苦。此外,脚本不能自动重启崩溃的进程,并且很多程序在崩溃时不能自行正常重启。Supervisord作为其子进程启动进程,并且可以配置为在崩溃时自动重启进程。它也可以自动配置为在自己的调用中启动进程。2、安装 Supervisor
yum install supervisor -y更多安装方法详见官方手册:http://www.supervisord.org/installing.html
3、配置文件详解
Supervisor配置文件通常为 supervisord.conf。它由supervisord和supervisorctl使用。如果任一应用程序在没有-c选项指定配置文件的情况下启动,应用程序将按照指定的顺序在以下位置查找名为supervisord.conf的文件。它将使用它找到的第一个文件。$ CWD / supervisord.conf $ CWD的/ etc / supervisord.conf /etc/supervisord.conf /etc/supervisor/supervisord.conf
[unix_http_server] file = /tmp/supervisor.sock # 修改sock文件用户和属组,默认0700 chmod = 0777 # 修改sock文件用户和属组,默认为启动supervisord的用户和组 chown = sup:sup # web页面验证所需的用户名。 username = admin password = 123 # 开启在web界面配置管理 [inet_http_server] # web界面的访问地址与端口。 port = 10.0.0.12:9001 # 监听本机所有网卡地址 # port = *:9001 # port = :9001 # 默认不需要用户名 user = admin # 默认不需要密码,密码为明文保存在配置文件中 password = 123 # supervisor服务参数配置 [supervisord] # 日志文件路径,默认/var/log/supervisor/supervisord.log logfile = /var/log/supervisord.log # 日志切割大小,默认50M logfile_maxbytes = 1KB # 切割的日志保留份数,默认10 logfile_backups = 3 # 日志级别,默认info。critical, error, warn, info, debug, trace, blather loglevel = debug # pid文件,默认/run/supervisord.pid pidfile = /var/run/sup/sup.log # 是否后台开启,默认false,true为前台开启 nodaemon = false # 当supervisord守护进程时,切换到此目录。 directory = /app # 程序部分 # 必须包含一个或多个程序部分,以便supervisord知道应该启动和控制哪些程序。标题值是复合值。program ":" program_name [program:redis-6661] # 该程序启动时将运行的命令。可以是绝对路径 command = /app/redis/bin/redis-cli /app/redis/conf/redis-6661.conf # 程序名称 process_name = redis-6661 # 是否自动启动,默认是 autostart = true autorestart = true # 与autorestart同用,如果进程没在root用户停止或意外,其余状态重启program exitcodes = 0,2更多参数详见官网手册:http://www.supervisord.org/configuration.html
4、使用supervisord管理redis集群
1、准备环境
6台redis[[email protected] conf]# ll total 336 -rw-r--r--. 1 root root 46723 Apr 25 20:23 redis -rw-r--r--. 1 root root 46725 Apr 25 21:01 redis-6661.conf -rw-r--r--. 1 root root 46725 Apr 25 21:01 redis-6662.conf -rw-r--r--. 1 root root 46725 Apr 25 21:01 redis-6663.conf -rw-r--r--. 1 root root 46725 Apr 25 21:01 redis-6664.conf -rw-r--r--. 1 root root 46725 Apr 25 21:01 redis-6665.conf -rw-r--r--. 1 root root 46725 Apr 25 21:02 redis-6666.conf
创建supervisord配置文件
[inet_http_server] port=:19001 username=admin password=1 [supervisorctl] ;serverurl=unix:///tmp/supervisor.sock serverurl=127.0.0.1:19001 username=super password=1 ;prompt=mysupervisor ;history_file=~/.sc_hist [program:redis-6661] directory=/app/redis command=/app/redis/bin/redis-server redis-6661.conf autostart=true autorestart=unexpected exitcodes=0,2 [program:redis-6662] directory=/app/redis command=/app/redis/bin/redis-server redis-6662.conf autostart=true autorestart=unexpected exitcodes=0,2 [program:redis-6663] directory=/app/redis command=/app/redis/bin/redis-server redis-6663.conf autostart=true autorestart=unexpected exitcodes=0,2 [program:redis-6664] directory=/app/redis command=/app/redis/bin/redis-server redis-6664.conf autostart=true autorestart=unexpected exitcodes=0,2 [program:redis-6665] directory=/app/redis command=/app/redis/bin/redis-server redis-6665.conf autostart=true autorestart=unexpected exitcodes=0,2 [program:redis-66646 directory=/app/redis command=/app/redis/bin/redis-server redis-6666.conf autostart=true autorestart=unexpected exitcodes=0,2
以上是关于使用 Supervisor 管理进程的主要内容,如果未能解决你的问题,请参考以下文章