天天看点

Supervisor管理集群Tomcat

简介

Supervisor(http://supervisord.org/)C/S架构的进程控制系统,是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,基于linux操作系统的一款服务器管理工具,不支持Windows系统。

用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能。

Supervisor类似于monit,monit和supervisor的一个比较大的差异是supervisor管理的进程必须由supervisor来启动,

monit可以管理已经在运行的程序;supervisor还要求管理的程序是非daemon程序,supervisord会帮你把它转daemon程序,因此如果用supervisor来管理nginx的话,必须在nginx的配置文件里添加一行设置daemon off让nginx以非daemon方式启动。

应用场景

​ 公司服务器众多,项目多以tomcat为主,而且服务器上tomcat节点比较多,此时通过脚本管理tomcat已经非常棘手,就需要一个统一的进程管理工具去统一管理项目。因此选用supervisor来管理。

传统的将程序放置后台启动:

&放置后台启动;但是一般和nohup(不挂断运行命令)一起用;常用方法;nohup command &

注意:supervisor只能管理前台进程。

安装配置

官网:http://www.supervisord.org/

supervisor安装完成后会生成三个执行程序:

supervisord : supervisor的守护进程服务(用于接收进程管理命令)

supervisorctl : 客户端(用于和守护进程通信,发送管理进程的指令)

echo_supervisord_conf : 生成初始配置文件程序。

安装supervisor设置开机自启

[[email protected] ~]# yum -y install supervisor
[[email protected] ~]# systemctl enable supervisord.service
           

通过supervisor管理tomcat

配置jdk环境:

jdk下载:拾光记忆不微伤分享

原文链接:https://blog.csdn.net/qq_22805577/article/details/80075775

[[email protected] ~]# tar xzf jdk-8u60-linux-x64.tar.gz -C /usr/local/
[[email protected] ~]# chown -R root.root /usr/local/jdk1.8.0_60
[[email protected] ~]# cat>>/etc/profile<<\EOF
> ###jdk环境###
> export JAVA_HOME=/usr/local/jdk1.8.0_60
> export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
> export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
> EOF
[[email protected] ~]# source /etc/profile
[[email protected] ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
[[email protected] ~]#
           

安装tomcat:

官网下载地址:http://tomcat.apache.org/

[[email protected] ~]# tar xzf apache-tomcat-8.5.35.tar.gz
[[email protected] ~]# mv apache-tomcat-8.5.35 /opt/tomcat1
           

supervisor主配置文件详解:

[[email protected] ~]# cat /etc/supervisord.conf

[unix_http_server] # 负责supervisorctl和supervisord主程序通讯的

;[inet_http_server] # supervisor自带UI界面有关

[supervisord] # supervisord主程序的配置

[supervisorctl] # supervisorctl命令行(客户端)

;[program:theprogramname] # supervisord管理的子项目配置

;[eventlistener:theeventlistenername] #监听

[include]

files = /etc/supervisor/conf.d/*.conf ;加载其他配置文件

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001                ; 通过网页可以控制子进程
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

; 进程的配置样例

; 设置进程的名称,使用 supervisorctl 来管理进程时需要使用该进程名,这里的进程名是 your_program_name
[program:your_program_name] 
;numprocs=1                 ; 进程数量,默认为1
;process_name=%(program_name)s   ; 默认为 %(program_name)s,即 [program:x] 中的 x
directory=/home/yiming ; 执行 command 之前,先切换到工作目录
command=python test.py
autostart=true ;如果设置为true,当supervisord启动的时候,进程会自动重启。
user=yiming                 ; 使用 yiming 用户来启动该进程
autorestart=true   ; 程序崩溃时自动重启,重启次数是有限制的,默认为3次
startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了           
redirect_stderr=true        ; 错误日志重定向到标准输出
loglevel=info
           

创建supervisor管理tomcat的子配置文件:

下面添加的参数,上面的主配置文件详解有解释

command::前台启动Tomcat命令

environment:指定环境

[[email protected] ~]# vim /etc/supervisord.d/tomcat1.ini
[program:tomcat1]
command=/opt/tomcat1/bin/catalina.sh run
environment=JAVA_HOME="/usr/local/jdk1.8.0_60",JAVA_BIN="/usr/local/jdk1.8.0_60/bin"
directory=/opt/tomcat1/bin/
numprocs=1
user = root
autostart = true
autorestart=true
startsecs = 5
           

bash终端管理

命令行模式:

#常用supervisorctl命令

supervisorctl status 状态

supervisorctl stop 停止

supervisorctl start 启动

supervisorctl restart 重启

supervisorctl reread 重读

supervisorctl update 更新

交互模式:

[[email protected] ~]# supervisorctl
unix:///var/run/supervisor/supervisor.sock no such file
supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail
avail  fg        pid   remove  shutdown  status  update
clear  maintail  quit  reread  signal    stop    version

supervisor> status
unix:///var/run/supervisor/supervisor.sock no such file
supervisor> exit
[[email protected] ~]#
           

用supervisor启动Tomcat

[[email protected] ~]# systemctl start supervisord.service
[[email protected] ~]# supervisorctl status
tomcat1                          RUNNING   pid 3710, uptime 0:00:14
[[email protected] ~]# ps -ef | grep tomcat
           

浏览器访问

http://ip:8080

Supervisor管理集群Tomcat

配置supervisor管理多台Tomcat

分别拷贝一份Tomcat和supervisor管理tomcat的子配置文件

[[email protected] ~]# cp -a /opt/tomcat1/ /opt/tomcat2
[[email protected] ~]# cp /etc/supervisord.d/tomcat1.ini /etc/supervisord.d/tomcat2.ini
           

修改第二台Tomcat的端口,防止与第一台端口冲突

[[email protected] ~]# vim /opt/tomcat2/conf/server.xml
#分别修改下面这三个端口
<Server port="8006" shutdown="SHUTDOWN">
 <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
 <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
           

修改刚才拷贝的supervisor管理tomcat的子配置文件

[[email protected] ~]# vim /etc/supervisord.d/tomcat2.ini
[program:tomcat2]
command=/opt/tomcat2/bin/catalina.sh run
environment=JAVA_HOME="/usr/local/jdk1.8.0_60",JAVA_BIN="/usr/local/jdk1.8.0_60/bin"
directory=/opt/tomcat2/bin/
numprocs=1
user = root
autostart = true
autorestart=true
startsecs = 5
           

修改完配置文件,更新supervisor

[[email protected] ~]# supervisorctl update
tomcat2: added process group
[[email protected] ~]# supervisorctl status
tomcat1                          RUNNING   pid 3710, uptime 0:17:17
tomcat2                          RUNNING   pid 3914, uptime 0:00:06
[[email protected] ~]# ps -ef | grep tomcat
           

网站访问页面记得填写修改的端口

http://ip:8081

Supervisor管理集群Tomcat

supervisor 自带Web管理界面

出于安全考虑,默认配置是没有开启web管理界面,需要修改supervisord.conf配置文件打开http访权限,将下面的配置:

[[email protected] ~]# vim /etc/supervisord.conf

Supervisor管理集群Tomcat

[[email protected] ~]# systemctl restart supervisord.service

访问测试

http://ip:9001

Supervisor管理集群Tomcat
Supervisor管理集群Tomcat

继续阅读