用supervisord管理杂乱的服务

标签: java 架构研究 supervisord | 发表时间:2011-09-21 14:57 | 作者:54chen Eric
出处:http://www.54chen.com

以下内容由[五四陈科学院]提供

supervisord

Supervisord是用Python实现的一款非常实用的进程管理工具,在批量服务化管理时特别有效。

环境

centos
python2.4

安装

wget http://pypi.python.org/packages/source/s/supervisor/supervisor-3.0a10.tar.gz#md5=99c6fbd45bade87301296b7a597fb68e

tar zxvf supervisor-3.0a10.tar.gz
cd supervisor-3.0a10
python setup.py install
如果上述遇到问题,请按如下操作。

依赖setuptools安装

wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c11-py2.4.egg#md5=bd639f9b0eac4c42497034dec2ec0c2b
sh setuptools-0.6c11-py2.4.egg

产生基础配置文件

echo_supervisord_conf > /etc/supervisord.conf

配置

[inet_http_server]前面的分号去掉;
定义port=192.168.1.1:8888

启动

supervisord -c /etc/supervisord.conf

查看

浏览器打开 http://192.168.1.1:8888

深入配置

[program:service]
command=sh /opt/soft/service/run.sh ; the program (relative uses PATH, can take args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
directory=/opt/soft/service/ ; directory to cwd to before exec (def no cwd)
autostart=true ; start at supervisord start (default: true)
autorestart=true ; retstart at unexpected quit (default: true)
stopsignal=QUIT ; signal used to kill process (default TERM)
stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)

以上配置了一个shell脚本的启动和stop过程。
一般java程序都喜欢在一个shell脚本内初始化classpath,再执行java main。
直接在shell中run java会出现stop失败的情况,在启动前添加 exec即可。

#!/bin/sh
export CLASSPATH=.
for jarpath in `ls library/*.jar`
do
CLASSPATH=$CLASSPATH:$jarpath
done
export CLASSPATH=$CLASSPATH
exec java com.chen.main;


帮助

supervisord,初始启动Supervisord,启动、管理配置中设置的进程。
supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。
supervisorctl reread,当一个服务由自动启动修改为手动启动时执行一下就ok

如何添加进程不启动所有的服务进程

1)修改/etc/supervisord.conf
2)supervisorctl reread
3)supervisorctl add xxservice

如何删除进程不启动所有的服务进程

1)修改/etc/supervisord.conf
2)supervisorctl reread
3)supervisorctl update

http://smarden.org/runit/runscripts.html 一些可参考的启动配置

supervisord开机自启动
chkconfig --add supervisord #加为服务
运行ntsysv,选中supervisord启动系统时跟着启动。
[/etc/rc.d/init.d/supervisord]

#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"

start()
{
echo -n $"Starting $prog: "
daemon $prog_bin --pidfile $PIDFILE
[ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
echo
}

stop()
{
echo -n $"Shutting down $prog: "
[ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
echo
}

case "$1" in

start)
start
;;

stop)
stop
;;

status)
status $prog
;;

restart)
stop
start
;;

*)
echo "Usage: $0 {start|stop|restart|status}"
;;

esac

注意
不带参数运行supervisord是以daemon方式运行。
把supervisord加入到开机启动项里就可以完成监控进程的功能了。
当supervisord以非daemon方式运行时,杀掉supervisord后,被监控的进程也退出了。
而以daemon方式运行,杀掉supervisord对被监控进程无影响。



想快点找到作者也可以到Twitter上留言: @54chen
或者你懒得带梯子上墙,请到新浪微博:@54chen

相关 [supervisord 管理 服务] 推荐:

用supervisord管理杂乱的服务

- Eric - 五四陈科学院-坚信科学,分享技术
以下内容由[五四陈科学院]提供. Supervisord是用Python实现的一款非常实用的进程管理工具,在批量服务化管理时特别有效. 如果上述遇到问题,请按如下操作. 依赖setuptools安装. [inet_http_server]前面的分号去掉;. 定义port=192.168.1.1:8888.

Tim:服务管理框架的尝试

- Shengbin - python.cn(jobs, news)
大型软件系统开发需要模块化,在分布式系统中,模块化通常是将功能分成不同的远程服务(RPC)来实现. 比如可以用Java RMI、Web Service、Facebook开源的Thrift等一些技术. 同样,在一个大型系统中,服务化之后服务的可维护、可管理、可监控以及高可用、负载均衡等因素同服务本身同样重要.

服务管理框架的尝试

- mk - Tim[后端技术]
大型软件系统开发需要模块化,在分布式系统中,模块化通常是将功能分成不同的远程服务(RPC)来实现. 比如可以用Java RMI、Web Service、Facebook开源的Thrift等一些技术. 同样,在一个大型系统中,服务化之后服务的可维护、可管理、可监控以及高可用、负载均衡等因素同服务本身同样重要.

Airbnb开源web服务自动化管理工具SmartStack

- - IT经理网
Airbnb最近在Github上开源了web服务自动化管理工具SmartStack,该工具能实现web服务之间的通讯,同时能自动关闭出现问题的服务,确保整个系统的可用性. 为web应用搭建SOA架构听上去不错,但是管理如此之多的服务——这些服务各自为政同时又互相通信,是一件非常棘手的事情. Airbnb解决这个问题的方法是自行开发出web服务自动化通讯管理工具——SmartStack.

云存储服务Fiabee让你的网络文件管理更轻松

- Leo - 36氪
Fiabee是一家提供文件云存储服务的创业公司. 现在这家公司在西班牙和旧金山都有分部. 与其他云存储服务相比,Fiabee现在提供的服务主要有三大特色. 第一,Fiabee提出了一项名为“与你所有在线服务同步的功能”. 在这项服务中,用户可以与Flickr,Facebook,Twitter和Picasa中的照片同步,也可以将google或者LinkeIn的联系人列表备份到“云端”.

SVN服务器创建及使用--以文档文件的管理示例

- - CSDN博客推荐文章
 来源: http://blog.csdn.net/kupe87826/article/details/8139908      . 参考: http://wenku.baidu.com/view/ed3e3435ee06eff9aef807ff.html.        我以前管理文档文件都是复制、备份、粘贴的方式,如果文档这方面的工作比较少还好,如果多了就感觉比较费时间.

给托管服务商和网站管理员的一些建议

- - 搜索引擎技术博客
发表者:Pierre Far,网站管理员趋势分析专员. 原文: Tips for hosting providers and webmasters. 转载自: 谷歌中文网站管理员博客. 发布时间:2011年12月29日 下午 02:22:00. 一些网站管理员在论坛上咨询影响他们站点托管的问题,为帮助托管服务商和站长们识别、诊断以及解决这些问题,我们与您分享一些常见的问题及解决方法.

解决接口调用黑洞,ESP接口服务管理平台介绍

- - CSDN博客架构设计推荐文章
解决接口调用黑洞,ESP接口服务管理平台. 1, 自动注册,接口服务时,自动向指定的平台,注册上报接口服务信息. a) 自动注册到管理平台. b) 注册的接口包含,主机信息,接口服务信息,接口方法信息. d) 注册后的接口可以管理. e) 允许同时注册多个相同的接口服务. f) 如果不同功能接口方法名相同,可修改编码,从而区别出不同的方法,访问时按编码访问.

Facebook运维内幕曝光:一人管理2万台服务器

- - ITeye资讯频道
目前,Facebook 已经凭借它在网络基础建设上的可扩展能力成为了行业的领军者. Facebook 数据中心运维主管 Delfina Eberly(图中人物) 在“7x24 Exchange 2013 秋季会议”上的演讲中为我们透露了 Facebook 部分内部运维数据,下面我们来具体了解下. 服务器数量惊人,一人管理 2 万台.