前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Supervisor进程管理初体验

Supervisor进程管理初体验

作者头像
十毛
发布2019-03-27 14:39:18
1.5K0
发布2019-03-27 14:39:18
举报

在高可用服务中,我们需要保活进程,行业中使用最广泛的开源组件就是Supervisor,本文简单介绍一下如何快速使用supervisor进行进程保活。

安装

在线安装

安装pip

root账号执行一下命令

代码语言:javascript
复制
yum -y install epel-release
yum install python-pip
pip install --upgrade pip
pip install supervisor
# 如果需要通过代理,则执行命令
pip install --upgrade pip --proxy {proxy_host:proxy_port}
pip install supervisor --proxy {proxy_host:proxy_port}

离线安装

setuptools https://pypi.org/project/setuptools/#files

supervisor https://pypi.org/project/supervisor/#files

meld3 https://pypi.org/project/meld3/#files

安装setuptools
代码语言:javascript
复制
unzip setuptools-40.6.3.zip
cd setuptools-40.6.3
sudo python setup.py install
安装meld3
代码语言:javascript
复制
tar xzf meld3-1.0.2.tar.gz
cd meld3-1.0.2
sudo python setup.py install
安装supervisor
代码语言:javascript
复制
tar xzf supervisor-3.3.4.tar.gz
cd supervisor-3.3.4
sudo python setup.py install

配置

代码语言:javascript
复制
echo_supervisord_conf > /etc/supervisord.conf

启动supervisord

代码语言:javascript
复制
supervisord -c /etc/supervisord.conf

上面我们已经把 supervisrod 运行起来了,现在可以添加我们要管理的进程的配置文件。可以把所有配置项都写到 supervisord.conf 文件里,但并不推荐这样做,而是通过 include 的方式把不同的程序(组)写到不同的配置文件里,对,就是默认配置中的最后的那个include。修改后如下:

代码语言:javascript
复制
[include]
files = /etc/supervisor/*.conf

我们的配置文件在/etc/supervisor/bot.conf

代码语言:javascript
复制
[program:taskbot]
command=/home/tenmao/bot-tomcat/bin/catalina.sh run
directory=/home/tenmao/bot-tomcat               ; directory to cwd to before exec (def no cwd)
autostart=true                ; start at supervisord start (default: true)
startsecs=1                   ; # of secs prog must stay up to be running (def. 1)
startretries=3                ; max # of serial start failures when starting (default 3)
autorestart=true                ; when to restart if exited after running (def: unexpected)
stopasgroup=false ; send stop signal to the UNIX process group (default false)
killasgroup=true ; SIGKILL the UNIX process group (def false)
stdout_logfile=/home/tenmao/supervisord/log/%(program_name)s-out.log        ; stdout log path, NONE for none; default AUTO

常用命令和使用方式

启动/停止

supervisorctrl start/stop/restart [program_name]

查看状态

supervisorctrl status

更新配置

supervisorctrl update [all] 重新加载配置文件,并根据新文件增加或删除对应的进程

注意事项

  • 启动程序的方式必须是非daemon的,比如tomcat,就不能使用catalina.sh start,而需要使用catalina.sh run
  • supervisord启动的程序继承了supervisord启动时的环境变量,如果后续环境变量变化了,可能出现直接启动程序是OK的,但是用supervisord启动就会读到不同的环境变量。可以通过重启supervisord的办法同步环境变量。

常见错误

  • supervisorctl status: error: <class 'socket.error'>, [Errno 113] No route to host: file: /usr/lib64/python2.7/socket.py line: 571 解决办法:supervisorctl -c supervisor/supervisord.conf status

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
    • 在线安装
      • 安装pip
    • 离线安装
      • 安装setuptools
      • 安装meld3
      • 安装supervisor
  • 配置
  • 常用命令和使用方式
    • 启动/停止
      • 查看状态
        • 更新配置
        • 注意事项
        • 常见错误
        • 参考
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档