概述

在 web 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常、报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务。因为最近系统经常GG,挂的有点莫名其妙,所以领导说需要一个工具,时刻监控 web 应用的运行情况,管理该进程。

刚好Supervisor 就是解决这种需求的工具,可以保证程序崩溃后,重新把程序启动起来等功能。下面介绍下部署教程,以下基于centos7.3系统。


相关概念

supervisor:要安装的软件的名称。

supervisord:装好supervisor软件后,supervisord用于启动supervisor服务。

supervisorctl:用于管理supervisor配置文件中program。

a2ac21dfca0293725e9bc5130647179d.png

使用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进程
83c1d9023c5bc03b70b4354061ee3378.png
a682fb43a894a4fc87d085adf06925e8.png

配置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,默认 falsecommand=/home/tomcat8090/bin/catalina.sh run ; 启动命令,与手动在命令行启动的命令是一样的user=root ; 用哪个用户启动stdout_logfile_maxbytes=500MB ; stdout 日志文件大小,默认 50MBstdout_logfile_backups=20 ; stdout 日志文件备份数stdout_logfile = /home/tomcat8090/logs/catalina.out

配置如下:

4f1009b101d02518943c020b35eabccf.png

重启supervisor

配置后需重启supervisor

#ps -ef|grep supervisor |grep -v 'grep' |awk '{print $2}'|xargs kill -9#supervisord -c /etc/supervisord.conf#supervisorsupervisor> status
4c589fc4846b3c2faffd85f86ab75c0c.png

测试过停止tomcat会自动拉起。


总结

最后有个小问题,如果不先停止所有管理进程,只是杀supervisor进程然后直接重启会产生多个管理进程,因为之前的tomcat进程是没有杀掉的,这时候看日志就会有端口冲突的问题了。

另外一个问题是一杀进程这个supervisor就自动重启tomcat了,那我之前写的自动部署tomcat脚本(每次杀掉进程替换文件)不就冲突了?这个问题还在考虑怎么解决中。

最后一个问题就是集群化管理了,如果有几百台服务器需要控制的话是可以考虑一下 supervisord-monitor这个集群化解决方案。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

a2703ec99ceb4b4348994ae087ebbeb5.png
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐