背景
有多台服务器,每台服务器需要管理/守护多个进程(进程crash后立即重启)
服务器 CentOS 7.3 x64
supervisor版本 3.1.4
cesi版本 1.0
选择方案
守护进程的方案选择
1. crontab方案
优点:比较简单,不需要安装额外的软件
缺点:全手工管理,易出错,服务器、进程多了以后管理成本高
2. supervisor方案
优点:可以集中管理所有的进程,配合cesi可管理集群
缺点:需要额外安装软件,引入新的依赖,supervisor进程挂掉的情况下被守护的进程也会挂掉
考虑到维护管理成本,选择使用supervisor方案,为了方便的管理多台,引入cesi来管理supervisor集群
安装supervisor
supervisor介绍
安装过程比较简单
参考
# 安装epel源
$ yum install epel-release
# 安装supervisor
$ yum install -y supervisor
$ systemctl enable supervisord # 开机自启动
# systemctl start supervisord # 启动supervisord服务
常用命令
$ systemctl stop supervisord # 停止服务
$ systemctl start supervisord # 启动服务
$ systemctl status supervisord # 查看服务状态
$ systemctl reload supervisord # 重新加载配置文件
$ systemctl restart supervisord # 重启服务
supervisorctl是用来管理supervisord进程的管理工具
supervisorctl reload # 重启supervisord进程,会导致所有被守护的进程重启
supervisorctl update # 更新配置文件,如果配置文件有变更(新增、修改、减少被守护进程),可使用此命令重新加载配置文件
问题记录
如果使用pip安装,在设置启动脚本的时候,需要注意一下,systemctl start supervisord后会报错,实际上应用已经正常启动,原因是教程中的systemctl配置文件有一处错误,需要去掉PIDFile项,supervisord有自己的pid存放位置,
参考官方的启动脚本
配置supervisor
# vim /etc/supervisord.conf
# 打开http服务
# 修改 [inet_http_server] 节点,去掉注释,修改ip、端口、用户名、密码
[inet_http_server] ; inet (TCP) server disabled by default
port=127.0.0.1:9001 ; ip_address:port specifier, *:port for all iface
;username=user ; default is no username (open server)
;password=123 ; default is no password (open server)
...
# 打开配置文件夹
[include]
files = /etc/supervisord.d/*.ini
reload进程即可
supervisorctl reload
至此,supervisor配置完成
配置nginx反向代理
由于服务商的安全策略,9001端口不能提供http服务,使用nginx配置一个反向代理
# vi /path/to/nginx/vhost/supervisor.conf
server{
charset utf-8;
listen 80;
server_name supervisor.domain.com;
access_log $log_root/supervisor.log;
error_log $log_root/supervisor_error.log;
location / {
proxy_pass http://127.0.0.1:9001;
}
}
通过supervisor.domain.com即可访问supervisor的管理页面
cesi安装与配置
supervisor自带的管理界面略有一点小问题,在nginx反向代理后,点击页面上的功能链接,还是会自动跳到127.0.0.1:9001路径下,导致功能不可用,因此引入cesi来作supervisor的管理界面,同时也可以管理集群,一举多得
cesi介绍
安装cesi
参考文档
yum install git python-flask
git clone https://github.com/gamegos/cesi /opt/cesi
sqlite3 /opt/cesi/userinfo.db < /opt/cesi/userinfo.sql
ln -s /opt/cesi/defaults/cesi.conf /etc/cesi.conf # 配置文件软链接
# 作为服务运行
cp /opt/cesi/defaults/cesi.service /etc/systemd/system/cesi.service
systemctl daemon-reload
systemctl start cesi
配置cesi
# vi /etc/cesi.conf
# 配置节点,与上一步配置的用户、端口一致
[node:first]
username = abc
password = 123
host = 127.0.0.1
port = 9001
# 配置cesi自身
[cesi]
database = /opt/cesi/userinfo.db
activity_log = /opt/cesi/activity.log
host = 127.0.0.1 # 仅允许本地的连接
重启cesi
systemctl restart cesi
配置nginx反向代理
# vi /path/to/nginx/vhost/cesi.conf
server{
charset utf-8;
listen 80;
server_name cesi.domain.com;
access_log $log_root/cesi.log;
error_log $log_root/cesi_error.log;
location / {
proxy_pass http://127.0.0.1:5000; # cesi默认端口
}
}
使用cesi.domain.com即可访问cesi,配置完成。
分享到:
相关推荐
4. **日志记录**:Supervisor可以收集被管理进程的输出,将其重定向到指定的日志文件,便于问题排查和监控。 5. **多进程支持**:Supervisor不仅可以管理单个进程,还可以管理一组进程,如Python的多线程或多进程...
**CentOS上的Supervisor安装与.NET Core进程守护** 在服务器管理中,确保应用程序稳定运行是至关重要的。`Supervisor`是一个用Python编写的进程管理工具,它可以用来管理和监控后台进程,确保它们在出现异常时自动...
- **supervisor**:一个进程管理工具,用于监控并重启关键服务。 #### 三、系统环境配置 假设我们已经在Linux系统上准备好了以下环境: - 操作系统:CentOS 7 - Python版本:3.6 - Django版本:2.2 #### 四、...
#功能:weblogic守护进程:监控weblogic进程,当发现进程停止时调用重启脚本重启 #参数:进程唯一标识码,例如“weblogic” #依赖脚本:数据库操作脚本dbExecurteSQL.sh,weblogic重启脚本$PSSC_DOMAIN/startPssc.sh...
在这一篇PHP程序员玩转Linux系列文章中,我们将重点讨论如何使用supervisor来管理守护进程。 **进程基础概念** 在理解守护进程之前,我们需要先了解进程的基本概念。进程是操作系统资源分配的最小单位,它代表了一...
**Supervisor管理进程监控安装与配置详解** Supervisor是一个用Python编写的进程管理工具,它能够帮助我们在Linux系统中管理后台服务进程,提供了一个简单易用的接口来启动、停止、重启以及监控进程。它的主要功能...
Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀...
因此,"Go-进程管理工具supervisor的一个go-lang实现"为我们提供了一个基于Go语言的类似`supervisord`的功能。 这个Go语言版本的进程管理工具可能采用了Go语言的并发特性,如goroutines和channels,来实现多进程的...
Supervisor是一款流行的进程管理工具,它允许用户在命令行或通过配置文件来控制进程的启动、停止和监控。然而,如果你想要创建一个自定义的、更轻量级的进程监管系统,模仿Supervisor的机制,那么可以使用C语言来...
在Ubuntu系统中,Supervisor是一个强大的进程管理工具,它能够帮助我们管理和监控后台守护进程(daemon processes)。Supervisor使得在Linux环境下,特别是Ubuntu系统中,能够轻松地控制、重启和监视应用进程,确保...
因此,在实际应用中,可以考虑使用像Supervisor这样的进程管理工具,或者使用更合适的语言如Python(例如使用`daemonize`库)来创建守护进程。 总的来说,PHP守护进程是一个技术上的挑战,需要理解操作系统级别的...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业...定时任务源码+项目说明(集成django使用,配合监控工具flower,进程管理工具supervisor的demo).zip
### Python使用Supervisor来管理进程的方法 #### 一、Supervisor简介 Supervisor是一个客户端/服务器系统,允许用户监控和控制一系列在*nix系统中运行的进程。它为每个进程提供了一个守护进程(称为`supervisord`...
本文将深入探讨如何使用Shell脚本来监控Docker容器以及Supervisor进程的状态,以确保服务的稳定运行。 首先,Docker是一种流行的开源容器化平台,它允许开发者打包应用及其依赖环境到一个可移植的容器中,然后在...