概述
在 web 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常、报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务。因为最近系统经常GG,挂的有点莫名其妙,所以领导说需要一个工具,时刻监控 web 应用的运行情况,管理该进程。
刚好Supervisor 就是解决这种需求的工具,可以保证程序崩溃后,重新把程序启动起来等功能。下面介绍下部署教程,以下基于centos7.3系统。
相关概念
supervisor:要安装的软件的名称。
supervisord:装好supervisor软件后,supervisord用于启动supervisor服务。
supervisorctl:用于管理supervisor配置文件中program。
使用yum命令安装(需能外网访问)
# yum install epel-release # yum install -y supervisor # systemctl enable supervisord # 开机自启动 # systemctl start supervisord # 启动supervisord服务 # systemctl status supervisord # 查看supervisord服务状态 # ps -ef|grep supervisord # 查看是否存在supervisord进程
配置Supervisor
#vi /etc/supervisord.d/tomcat8090.ini
[program:epms] ; 程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作 autorestart=True ; 程序异常退出后自动重启 autostart=True ; 在 supervisord 启动的时候也自动启动 startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒 priority=1 ; 进程启动优先级,默认999,值小的优先启动 redirect_stderr=True ; 把 stderr 重定向到 stdout,默认 false command=/home/tomcat8090/bin/catalina.sh run ; 启动命令,与手动在命令行启动的命令是一样的 user=root ; 用哪个用户启动 stdout_logfile_maxbytes=500MB ; stdout 日志文件大小,默认 50MB stdout_logfile_backups=20 ; stdout 日志文件备份数 stdout_logfile = /home/tomcat8090/logs/catalina.out
配置如下:
重启supervisor
配置后需重启supervisor
#ps -ef|grep supervisor |grep -v 'grep' |awk '{print $2}'|xargs kill -9 #supervisord -c /etc/supervisord.conf #supervisor supervisor> status
测试过停止tomcat会自动拉起。
总结
最后有个小问题,如果不先停止所有管理进程,只是杀supervisor进程然后直接重启会产生多个管理进程,因为之前的tomcat进程是没有杀掉的,这时候看日志就会有端口冲突的问题了。
另外一个问题是一杀进程这个supervisor就自动重启tomcat了,那我之前写的自动部署概述
在 web 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常、报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务。因为最近系统经常GG,挂的有点莫名其妙,所以领导说需要一个工具,时刻监控 web 应用的运行情况,管理该进程。
刚好Supervisor 就是解决这种需求的工具,可以保证程序崩溃后,重新把程序启动起来等功能。下面介绍下部署教程,以下基于centos7.3系统。
相关概念
supervisor:要安装的软件的名称。
supervisord:装好supervisor软件后,supervisord用于启动supervisor服务。
supervisorctl:用于管理supervisor配置文件中program。
使用yum命令安装(需能外网访问)
# yum install epel-release
# yum install -y supervisor
# systemctl enable supervisord # 开机自启动
# systemctl start supervisord # 启动supervisord服务
# systemctl status supervisord # 查看supervisord服务状态
# ps -ef|grep supervisord # 查看是否存在supervisord进程
配置Supervisor
#vi /etc/supervisord.d/tomcat8090.ini
[program:epms] ; 程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作
autorestart=True ; 程序异常退出后自动重启
autostart=True ; 在 supervisord 启动的时候也自动启动
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
priority=1 ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=True ; 把 stderr 重定向到 stdout,默认 false
command=/home/tomcat8090/bin/catalina.sh run ; 启动命令,与手动在命令行启动的命令是一样的
user=root ; 用哪个用户启动
stdout_logfile_maxbytes=500MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups=20 ; stdout 日志文件备份数
stdout_logfile = /home/tomcat8090/logs/catalina.out
配置如下:
重启supervisor
配置后需重启supervisor
#ps -ef|grep supervisor |grep -v ‘grep’ |awk ‘{print $2}’|xargs kill -9
#supervisord -c /etc/supervisord.conf
#supervisor
supervisor> status
测试过停止tomcat会自动拉起。
总结
最后有个小问题,如果不先停止所有管理进程,只是杀supervisor进程然后直接重启会产生多个管理进程,因为之前的tomcat进程是没有杀掉的,这时候看日志就会有端口冲突的问题了。
另外一个问题是一杀进程这个supervisor就自动重启tomcat了,那我之前写的自动部署tomcat脚本(每次杀掉进程替换文件)不就冲突了?这个问题还在考虑怎么解决中。
最后一个问题就是集群化管理了,如果有几百台服务器需要控制的话是可以考虑一下 supervisord-monitor这个集群化解决方案。tomcat脚本(每次杀掉进程替换文件)不就冲突了?这个问题还在考虑怎么解决中。
最后一个问题就是集群化管理了,如果有几百台服务器需要控制的话是可以考虑一下 supervisord-monitor这个集群化解决方案。
文章版权声明
1 原创文章作者:汇维网,如若转载,请注明出处: https://www.52hwl.com/720.html
2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈
3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)
4 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别