全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

利用Supervisor管理Redis进程的方法教程

前言

Supervisor 是一个用 Python 实现的进程管理工具,可以很方便地启动,关闭,重启,查看,以及监控进程,当进程由于某种原因崩溃或者被误杀后,可以自动重启并发送事件通知。Supervisor 可谓运维利器,使用 Supervisor 来管理进程,可以提高系统的高可用特性。

随着 Redis 越来越流行,越来越多的公司都使用上了 redis,因此 Redis 的进程管理就成了很多公司都需要面临的问题,本文介绍如何使用 Supervisor 来管理 Redis 进程。

Supervisor 简介

Supervisor 包括以下四个组件。

1、supervisord

服务端程序,主要功能是启动 supervisord 服务及其管理的子进程,记录日志,重启崩溃的子进程,等。

2、supervisorctl

命令行客户端程序,它提供一个类似 shell 的接口,通过 UNIX 域套接字或者 TCP 套接字并使用 XML_RPC 协议与 supervisord 进程进行数据通信。它的主要功能是管理(启动,关闭,重启,查看状态)子进程。

3、Web Server

实现在界面上管理进程,还能查看进程日志和清除日志。

4、XML-RPC 接口

可以通过 XML_RPC 协议对 supervisord 进行远程管理,达到和 supervisorctl 以及 Web Server 一样的管理功能。

进程被 Supervisor 管理后,其运行状态的转化图如下图 1 所示:

图 1 :子进程状态转移图

我们挑几个重要的进程状态来说明。

  • running:进程处于运行状态
  • starting:Supervisor 收到启动请求后,进程处于正在启动过程中
  • stopped:进程处于关闭状态
  • stopping:Supervisor 收到关闭请求后,进程处于正在关闭过程中
  • backoff:进程进入 starting 状态后,由于马上就退出导致没能进入 running 状态
  • fatal:进程没有正常启动
  • exited:进程从 running 状态退出

没有接触过 Supervisor 的朋友可能对上面的描述感到有些抽象,不用担心,经过下面的实践后,会快速理解 Supervisor 涉及的这些名词的。

Supervisor 初体验

我们以 CentOS 平台下为例,说明如何使用 Supervisor 这一强大的进程管理工具。

1. 安装

可以使用easy_intall来安装 Supervisor:

easy_install supervisor

也可以使用pip来安装 Supervisor:

pip install supervisor

安装过程比较简单,此处我们不再赘述。

安装完毕后,可以使用以下命令来测试安装是否成功:

echo_supervisord_conf

echo_supervisord_conf将会在终端输出 Supervisor 配置的样例。

2. 创建配置目录以及主配置文件

为了将 Supervisor 的配置放置到独立的目录中,我们先创建目录:

cd /etc
mkdir supervisor

接着,可以继续使用echo_supervisord_conf命令,将 Supervisor 样例配置重定向输出到文件文件中:

echo_supervisord_conf > /etc/supervisor/supervisord.conf

这样,我们便生成了 Supervisor 的主配置文件supervisord.conf。

为了将 Supervisor 管理的进程配置与主配置文件区分开来,我们创建独立的目录来存放进程配置。

cd /etc/supervisor
mkdir conf.d

然后,修改主配置文件 supervisord.conf,添加以下配置,将 conf.d 目录下的进程配置引入 Supervisor 管理:

[include]
files = ./conf.d/*.ini

3. 创建管理进程

为方便测试 Supervisor 的功能,我们编写以下 python 脚本,并保存为 hello.py。

import time
import sys
while True:
  print("hello\n")
  sys.stdout.flush()
  time.sleep(1)

hello.py 的主要功能是往标准输出中不断地输出 “hello” 字符串。

4. 创建进程配置

为将 hello.py 脚本被 Supervisor 接管,我们在 /etc/supervisor/conf.d 目录创建其配置 hello.ini:

[program:hello]
command=python /home/lihao/codes/python/hello.py    
stdout_logfile=/home/lihao/codes/python/hello.log
stderr_logfile=/home/lihao/codes/python/hello_error.log
  • command:运行进程使用的命令
  • stdout_logfile:指定标准输出文件
  • stderr_logfile:标准错误输出文件

需要指出的是,被 Supervisor 管理的进程,不能使用 daemon 模式,而必须在前台运行,否则会报错。

5. 运行 supervisord

由于我们需要使用指定目录下的 Supervisor 主配置文件,在运行 Supervisord 时,需要使用-c参数来指定主配置文件的路径:

supervisord -c /etc/supervisor/supervisord.conf

6. 使用 supervisorctl 管理进程

使用 supervisorctl 可以查看监控的进程状态:

supervisorctl -c /etc/supervisor/supervisord.conf

输出:

hello RUNNING pid 8475, uptime 7:59:46
supervisor>

可以看到,脚本 hello.py 已经运行了起来(当然使用 ps aux | grep hello也可以看到其进程信息)。打开文件 /home/lihao/codes/python/hello.log,可以看到文件中不断有”hello”输出。

在 supervisorctl 命令行下,也可以使用start,stop,restart,status,等命令来启动,关闭,重启,查看状态监控的进程,也可以输入help来查看命令帮助。限于篇幅,此处不再展开,详细的 supervisorctl 命令可以参考:http://www.supervisord.org/running.html#running-supervisorctl。

Supervisor 管理 Redis 进程

在说完 Supervisor 的基本使用后,我们来看下如何使用 Supervisor 来管理 Redis 进程。

Redis 的 Supervisor 配置

有了上面的基础,我们很容易写出 Redis 服务进程的 Supervisor 配置:

[program:redis]
command=/usr/local/bin/redis-server
autostart=true
autorestart=true
startsecs=3

使用 supervisorctl reload 载入新的 Redis 配置后,Redis 进程便让 Supervisor 启动了起来。如果需要指定 Redis 的输出日志,可以通过stdout_logfile配置选项指定,具体也可以参考上述的 hello 例子。

由于 Supervisor 管理的进程不能设置为 daemon 模式,故如果 Redis 无法正常启动,可以查看一下 Redis 的配置,并将daemonize选项设置为 no。

daemonize no

Supervisord 开机启动

为了处理机器宕机重启的情况,Redis 服务进程需要实现机器重启后自动重启的功能。 为此,需要配置 supervisord 进程随着机器启动而启动。要实现这一目的 ,可以在 /etc/init 目录下添加 supervisord.conf 文件:

description  "supervisord"
start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec supervisord -n -c /etc/supervisor/supervisord.conf

这样,每当机器重启后,supervisord 进程都会自动启动起来,避免机器每次重启后都需要手工启动 supervisord 进程的操作。Supervisord 进程启动后,接下来会将其管理的进程自动地启动起来。这样,便实现了被 Supervisor 管理的进程随着机器启动而启动的效果。读者可以自行在测试机器上测试一下。

Supervisor Web 管理界面

如果需要开启 Web 管理界面功能,需要在supervisord.conf配置中添加以下配置:

[inet_http_server]
port=*:9001
username=user
password=123

然后,打开浏览器,输入地址 http://127.0.0.1:9001,这时,会弹出输入框,要求输入用户名和密码(用户名:user,密码:123),便可以进入 Supervisor 提供的进程管理界面。

图 2 :Supervisor Web 管理界面

在此界面下,可以对单个进程进行重启,关闭,查看日志等操作,也可以对所有的进程进行重启,关闭等操作。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

参考资料

  • http://www.supervisord.org/
  • Python Web 开发实战,董伟明著,电子工业出版社
  • http://www.jianshu.com/p/9abffc905645
  • http://www.supervisord.org/running.html#running-supervisorctl
  • http://supervisord.org/configuration.html
  • http://www.supervisord.org/subprocess.html
  • https://lincolnloop.com/blog/automatically-running-supervisord-startup/
  • https://serverfault.com/questions/96499/how-to-automatically-start-supervisord-on-linux-ubuntu
  • https://segmentfault.com/a/1190000003955182


# supervisor  # redis  # 进程管理  # 查看进程  # nodejs 图解express+supervisor+ejs的用法(推荐)  # python进程管理工具supervisor的安装与使用教程  # centos7使用supervisor的详细教程  # PHP框架Laravel中实现supervisor执行异步进程的方法  # PHP程序员玩转Linux系列 使用supervisor实现守护进程  # 基于Python 的进程管理工具supervisor使用指南  # Python使用Supervisor来管理进程的方法  # Mac下Supervisor进程监控管理工具的安装与配置  # node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用  # python进程管理工具supervisor使用实例  # 使用Python的Supervisor进行进程监控以及自动启动  # 详解supervisor使用教程  # 重启  # 配置文件  # 可以使用  # 可以看到  # 主要功能  # 这一  # 如何使用  # 可以通过  # 设置为  # 目录下  # 以对  # 命令行  # 可以查看  # 过程中  # 的是  # 是一个  # 运行状态  # 自动重启  # 几个  # 样例 


相关文章: 制作网站公司那家好,网络公司是做什么的?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  制作网站的公司有哪些,做一个公司网站要多少钱?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何在宝塔面板中创建新站点?  网站制作的步骤包括,正确网址格式怎么写?  简单实现Android验证码  如何通过FTP服务器快速搭建网站?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何在橙子建站中快速调整背景颜色?  如何在云服务器上快速搭建个人网站?  微信h5制作网站有哪些,免费微信H5页面制作工具?  专业网站建设制作报价,网页设计制作要考什么证?  建站之星如何快速生成多端适配网站?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  SQL查询语句优化的实用方法总结  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  建站主机如何选?高性价比方案全解析  建站主机如何选?性能与价格怎样平衡?  独立制作一个网站多少钱,建立网站需要花多少钱?  韩国服务器如何优化跨境访问实现高效连接?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  建站主机CVM配置优化、SEO策略与性能提升指南  linux top下的 minerd 木马清除方法  javascript中的try catch异常捕获机制用法分析  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  行程制作网站有哪些,第三方机票电子行程单怎么开?  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何在Golang中引入测试模块_Golang测试包导入与使用实践  微信小程序 五星评分(包括半颗星评分)实例代码  高端建站如何打造兼具美学与转化的品牌官网?  网站制作员失业,怎样查看自己网站的注册者?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何在IIS服务器上快速部署高效网站?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何高效生成建站之星成品网站源码?  如何通过VPS搭建网站快速盈利?  网站制作软件有哪些,制图软件有哪些?  如何配置支付宝与微信支付功能?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  开心动漫网站制作软件下载,十分开心动画为何停播?  宝塔建站无法访问?如何排查配置与端口问题?  建站之星伪静态规则如何正确配置?  建站之星免费版是否永久可用?  如何快速上传建站程序避免常见错误? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。