说明:
1、服务器重启,需要人工手动启动所有微服务。
2、解决所有微服务开机自启动问题,安装supervisor解决该问题。
一、安装supervisor
1、设置阿里源
mkdir -p /etc/yum.repos.d/back
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/back
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2、安装supervisor
yum -y install epel-release
yum -y install supervisor
3、查看supervisor
[root@localhost ~]# rpm -ql supervisor
/etc/logrotate.d/supervisor
/etc/supervisord.conf
/etc/supervisord.d
/etc/tmpfiles.d/supervisor.conf
/usr/bin/echo_supervisord_conf
/usr/bin/pidproxy
/usr/bin/supervisorctl
/usr/bin/supervisord
4、创建文件夹
mkdir -p /data/supervisor
echo_supervisord_conf > /etc/supervisord.conf
5、修改配置文件
vim /etc/supervisord.conf
[unix_http_server]
file=/data/supervisor/supervisor.sock
[supervisord]
logfile=/data/supervisor/supervisord.log
logfile_maxbytes=200MB
logfile_backups=10
loglevel=info
pidfile=/data/supervisor/supervisord.pid
nodaemon=false
minfds=1024
minprocs=200
[supervisorctl]
serverurl=unix:///data/supervisor/supervisor.sock
[include] #注销前面的;号
files = /etc/supervisor/*.conf # 包含的配置文
二、设置开机自启动
1、设置开机自启动supervisor
[root@localhost ~]# cat /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl -c /etc/supervisord.conf shutdown
ExecReload=/usr/bin/supervisorctl -c /etc/supervisord.conf reload
ExecStatus=/usr/bin/supervisorctl -c /etc/supervisord.conf status
ExecRestart=/usr/bin/supervisorctl -c /etc/supervisord.conf restart
[Install]
WantedBy=multi-user.target
2、启动supervisor服务
systemctl daemon-reload
systemctl enable --now supervisord.service
systemctl status supervisord.service
3、常用命令
# 启动supervisord
systemctl start supervisord.service
# 查看supervisord状态
systemctl status supervisord.service
# 重启supervisord
systemctl restart supervisord.service
# 停止supervisord
systemctl stop supervisord.service
# 重载配置
systemctl reload supervisord.service
三、设置微服务
1、配置微服务
cd /etc/supervisor
[root@localhost supervisor]# pwd
/etc/supervisor
[root@localhost supervisor]# cat aivideo-pro.conf
[program:aivideo-pro]
directory=/usr/local
command=/usr/bin/java -jar /usr/local/aivideo-pro.jar
autostart=true
autorestart=true
startretries=3
user=root
priority=100
stopsignal=INT
redirect_stderr=true
stdout_logfile_maxbytes=300MB
stdout_logfile_backups=80
stdout_logfile=/usr/local/aivideo-pro.log
stopasgroup=false
killasgroup=false
[root@localhost supervisor]# cat MediaServer.conf
[program:MediaServer]
directory=/usr/local/ZLMediaKit/release/linux/Debug
command=/usr/local/ZLMediaKit/release/linux/Debug/MediaServer -s default.pem -d
autostart=true
autorestart=true
startretries=3
user=root
priority=10
stopsignal=INT
redirect_stderr=true
stdout_logfile_maxbytes=500MB
stdout_logfile_backups=10
stdout_logfile=/usr/local/ZLMediaKit/release/linux/Debug/MediaServer.log
stopasgroup=false
killasgroup=false
参数说明:
1)启动命令行请用绝对路径,避免启动中报错。
2)启动命令行,日志大小,保存多少个文件,日志路径等根据需要更改即可。
3、导入配置文件
# 检查配置文件
[root@localhost ~]# supervisorctl reread
No config updates to processes
# 更新配置文件
[root@localhost ~]# supervisorctl update
MediaServer: added process group
aivideo-pro: added process group
# 重启所有微服务
[root@localhost ~]# supervisorctl reload
Restarted supervisord
注意:先将原有java服务给停止,再执行reload命令
4、启动具体微服务(第三点执行后,这个不用在执行)
[root@localhost ~]# supervisorctl start aivideo-pro
aivideo-pro: started
[root@localhost ~]# supervisorctl status aivideo-pro
aivideo-pro RUNNING pid 39746, uptime 0:00:08
5、查看所有微服务状态
[root@localhost ~]# supervisorctl status all
MediaServer RUNNING pid 37645, uptime 1:44:39
aivideo-pro RUNNING pid 39746, uptime 1:38:57
四、supervisor常用命令
supervisorctl status all ;查看所有进程状态
supervisorctl stop all ;停止所有进程
supervisorctl start all ;启动所有进程
supervisorctl restart all ;重启所有进程
supervisorctl reread ;重新加载配置文件
supervisorctl reload ;重启supervisord
supervisorctl update ;启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启,如果设置了autostart=true则会启动新新增的子进程
supervisorctl status [进程名] ;查看全部或指定进程状态
supervisorctl start [进程名] ;启动指定子进程
supervisorctl restart [进程名] ;重启指定子进程
supervisorctl stop [进程名] ;停止指定子进程
supervisorctl add ;添加子进程到进程组
supervisorctl reomve ;从进程组移除子进程,需要先stop。注意:移除后,需要使用reread和update才能重新运行该进程
注意:start、restart、stop都不会载入最新的配置文件。