iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >利用Supervisor管理Redis进程的方法教程
  • 171
分享到

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

进程方法教程 2022-06-04 17:06:34 171人浏览 独家记忆
摘要

前言 Supervisor 是一个用 python 实现的进程管理工具,可以很方便地启动,关闭,重启,查看,以及监控进程,当进程由于某种原因崩溃或者被误杀后,可以自动重启并发送事件通知。Supervisor

前言

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("hellon")
  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
您可能感兴趣的文档:

--结束END--

本文标题: 利用Supervisor管理Redis进程的方法教程

本文链接: https://www.lsjlt.com/news/11834.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用Supervisor管理Redis进程的方法教程
    前言 Supervisor 是一个用 Python 实现的进程管理工具,可以很方便地启动,关闭,重启,查看,以及监控进程,当进程由于某种原因崩溃或者被误杀后,可以自动重启并发送事件通知。Supervisor...
    99+
    2022-06-04
    进程 方法 教程
  • Linux进程管理工具supervisor安装配置教程
    环境:CentOS 7 官方文档:http://supervisord.org/ 安装 # yum install -y epel-release # yum install -y supervisor 启动...
    99+
    2022-06-03
    Linux 进程管理工具 supervisor 安装 教程
  • 开源的进程管理工具Supervisor
    Supervisor是一个开源的进程管理工具,可以帮助用户监控和控制运行在Unix-like系统上的进程。它提供了一套简单的API和...
    99+
    2023-09-22
    Supervisor
  • Linux如何使用Supervisor管理后台进程
    小编给大家分享一下Linux如何使用Supervisor管理后台进程,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 1.安装easy_install supe...
    99+
    2022-10-18
  • 基于Python 的进程管理工具supervisor使用指南
    Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上。Supervisor 官方版目前只能运行在 Python 2.4 ...
    99+
    2022-06-04
    管理工具 使用指南 进程
  • redis执行redis命令的方法教程
    Redis 命令 Redis 命令用于在 redis 服务上执行操作。所以我们必须要启动Redis服务程序,也就是redis安装目录下的redis-server.exe,你可以双击执行,也可以打开cmd窗口...
    99+
    2022-06-04
    命令 方法 教程
  • Linux运维工具Supervisor的安装使用(进程管理工具)
    一、介绍 Supervisor是用python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。目前Supervisor可以运行在大多数Unix系统上,但不...
    99+
    2022-06-04
    Linux运维工具Supervisor Linux Supervisor
  • MySQL索引管理优化的方法教程
    这篇文章主要讲解了“MySQL索引管理优化的方法教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL索引管理优化的方法教程”吧! ...
    99+
    2022-10-19
  • Redis 基础教程之事务的使用方法
    Redis 基础教程之事务的使用方法 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会...
    99+
    2022-06-04
    使用方法 基础教程 事务
  • Linux进程管理方法介绍
    目录一、简介二、创建进程1、前台进程2、后台进程三、查看正在运行的进程四、终止进程五、父进程和子进程六、僵尸进程和孤儿进程七、常驻进程八、top命令九、任务和进程十、前台任务和后台任务的切换一、简介 当我们运行程序时,l...
    99+
    2022-06-05
    Linux 进程管理
  • 利用Spring Boot操作MongoDB的方法教程
    MongoDBMongoDB作为一种NoSQL数据库产品,其实已经非常著名了。去年,由于MongoDB安全认证的薄弱,上万家公司中招。虽然是一则负面新闻,但是也从侧面说明了MongoDB的流行程度。下图是DB-Engines统计的2017年...
    99+
    2023-05-31
    springboot mongodb
  • Redis教程之代理ip池设计方法详解
    前言 众所周知代理 ip 因为配置简单而且廉价,经常用来作为反反爬虫的手段,但是稳定性一直是其诟病。筛选出优质的代理 ip 并不简单,即使付费购买的代理 ip 源,卖家也不敢保证 100% 可用;另外代理 ...
    99+
    2022-06-04
    详解 方法 教程
  • php进程管理的方法有哪些
    1. 使用系统命令来管理进程,如使用exec函数来运行系统命令来启动和停止进程。2. 使用PHP的pcntl扩展来管理进程,pcnt...
    99+
    2023-09-16
    php
  • Fedora进程管理的方法有哪些
    本篇内容主要讲解“Fedora进程管理的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Fedora进程管理的方法有哪些”吧!多任务反映在计算机系统中就是多个进程,每一个任务或者作业都是...
    99+
    2023-06-17
  • Shell实现的iptables管理脚本的方法教程
    这篇文章主要讲解了“Shell实现的iptables管理脚本的方法教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell实现的iptables管理脚本的方法教程”吧!代码如下:#!/b...
    99+
    2023-06-09
  • 利用PM2部署node.js项目的方法教程
    前言 大家在开发中应该发现了,如果直接通过node app来启动,如果报错了可能直接停在整个运行,supervisor感觉只是拿来用作开发环境的。再网上找到pm2.目前似乎最常见的线上部署nodejs项目的...
    99+
    2022-06-04
    方法 项目 教程
  • linux系统进程管理的方法是什么
    Linux系统中,可以使用以下方法来进行进程管理:1. 系统监控工具:Linux系统自带了一些用于监控和管理进程的工具,如top、h...
    99+
    2023-09-15
    linux
  • python中利用xml.dom模块解析xml的方法教程
    一、什么是xml?有何特征? xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 例子:del.xml <?xml version=...
    99+
    2022-06-04
    模块 方法 教程
  • Python中利用Scipy包的SIFT方法进行图片识别的实例教程
    scipy scipy包包含致力于科学计算中常见问题的各个工具箱。它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,,特殊函数等等。 scipy可以与其它标准科学计算程序库进行比较,比如GSL(...
    99+
    2022-06-04
    实例教程 方法 图片
  • pandas进阶教程之Dataframe的apply方法
    目录apply方法介绍用例1用例2用例3总结 apply方法介绍 方法形式为 apply(func, axis=0, raw=False, result_type=None...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作