使用 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

原文地址:https://www.cnblogs.com/LC161616/p/8947382.html

时间: 2024-10-15 11:29:38

使用 Supervisor 管理进程的相关文章

使用Supervisor管理进程二

supervisor安装完成后会生成三个执行程序:supervisortd.supervisorctl.echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令).客户端(用于和守护进程通信,发送管理进程的指令).生成初始配置文件程序. 3.配置 运行supervisord服务的时候,需要指定supervisor配置文件,如果没有显示指定,默认在以下目录查找: $CWD/supervisord.conf$CWD/etc/supervisord.c

docker supervisor管理进程

一.使用supervisor来管理 supervisor:进程管理工具,基于C/S架构.(其提供web接口给用户查询和 控制),它允许用户去监控和控制在类unix系统的进程. 使用supervisor可以更好的控制.管理.重启我们希望运行的进程. 在这演示一下如何同时使用ssh和 apache 服务.(通过docker buid生成新镜像) 配置 1.首先创建一个dockerfile目录 dockerfile文件内容 supervisor配置文件内容 第一段supervsord配置软件本身,使用

docker技术剖析--docker supervisor管理进程

http://hongge.blog.51cto.com/ 使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令放到一个启动脚本里面,启动的时候直接启动这个脚本. 例如:docker run –d 镜像 /run.sh 另外就是安装进程管理工具. 本节将使用进程管理工具 supervisor 来管理容器中的多个进程.使

使用supervisor管理进程

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(不仅仅是 Python 进程).除了对单个进程的控制,还可以同时启动.关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动. 安装 Supervisor 可以运行在 Linux.Mac OS X 上.如前所述,supervisor 是 Python 编写的

Centos7 使用 supervisor 管理进程

一.安装 //直接使用pip安装(pip的安装 http://www.cnblogs.com/yxhblogs/p/8971251.html) pip install supervisor 二.配置 //运行echo_supervisord_conf 命令重定向到一个配置文件 echo_supervisord_conf > /etc/supervisord.conf 三.修改配置文件 //创建一个目录 mkdir /etc/supervisor.d //把/etc/supervisord.con

celery和supervisor配合使用,实现supervisor管理celery进程

在这里我选择redis作为celery异步任务的中间人,系统选择CentOS6.5 64位.redis.celery和supervisor的安装参见官方文档. 安装完毕后: 1, 创建celery的实例/home/user_00/learn/tasks.py文件 tasks.py: # -*-coding:utf-8-*- from celery import Celery, platforms app = Celery('tasks', backend='redis://localhost:6

使用Supervisor管理Celery进程。

讲过一篇celery的,但是celery启动后并不是daemon的,在生产环境中这肯定是不可以的,那怎么办呢? 这就需要使用supervisor进行进程管理了,下面详细介绍. 一. supervisor是干什么的. supervisor是有Python语言编写的,基于linux操作系统的一款服务器管理工具,用以监控服务器进程的运行. supervisor要求管理的程序是非daemon程序,supervisord会帮你把他转换成daemon程序. 因此如果使用supervisor来管理nginx进

docker之使用supervisor管理多个进程

docker题外话: centos7安装supervisor: 源码编译安装: 下载源码文件:supervisor-3.3.1.tar.gz 下载地址:https://pypi.python.org/pypi/supervisor 安装: [[email protected] src]# tar -zxf supervisor-3.3.1.tar.gz [[email protected] src]# cd supervisor-3.3.1/ [[email protected] supervi

Palo通过supervisor进行进程管理

下面一段文字是摘自doris官方文档:注:在生产环境中,所有实例都应使用守护进程启动,以保证进程退出后,会被自动拉起,如 Supervisor.如需使用守护进程启动,需要修改各个 start_xx.sh 脚本,去掉最后的 & 符号 首先安装supervisor,具体请参照本人的另一篇博客CentOS7 安装supervisor守护进程管理器 1 配置palo be 进程管理 1.1 修改各个 start_be.sh 脚本,去掉最后的 & 符号 /home/workspace/palo-0.