Supervisor 部署和使用
温馨提醒
离线安装
安装 setuptools
安装 supervisor
在线安装
pip 方式安装
1pip3 install supervisoryum 安装
配置 supervisor
创建目录
生成配置文件
1echo_supervisord_conf > /etc/supervisord.conf修改配置文件
vim /etc/supervisord.conf创建启动脚本
vim /usr/lib/systemd/system/supervisord.service1 2 3 4 5 6 7 8 9 10 11 12 13 14 15[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 [Install] WantedBy=multi-user.target # 启动 systemctl daemon-reload systemctl enable --now supervisord开启 web 界面
vim /etc/supervisord.conf创建文件
每次开机自动创建 /var/run/supervisord 目录
添加要管理的进程
vim /etc/supervisord.d/test.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18[program:test] # 启动程序的名字test,启动时需要指定 environment=JAVA_HOME=/usr/local/java/bin # 配置java启动环境 directory=/data/ # 程序所在路径 command=java -jar test.jar # 运行命令 autostart=true # 当supervisor启动时,程序自动启动 startsecs=5 # 启动5秒后没有异常退出,就表示进程正常启动,默认1秒 autorestart=true # 程序退出后自动重启 startretries=3 # 启动失败,重试次数 user=root # 用哪个用户启动程序 priority=999 # 优先级,默认999,数字越小越先启动,越晚停止 stopsignal=INT # 当收到stop请求的时候,发送信号给程序,默认是TERM信号,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2。 exitcodes=0,2 # 退出码是0,2时,执行重启,默值是0,2 # 日志 #redirect_stderr=true # 把stderr重定向到stdout,默认false stdout_logfile_maxbytes=1GB # stdout 日志文件大小,默认50MB stdout_logfile_backups=20 # stdout 日志文件保存个数 stdout_logfile=/data/logs/test.out.log # 标准日志,满20MB区分 stderr_logfile=/data/logs/test.err.log # 错误日志
配置示例
配置 tomcat
vim /etc/supervisord.d/tomcat.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14[program:tomcat] command=/usr/local/apache-tomcat-8.0.35/bin/catalina.sh run # 程序启动命令 autostart=true # supervisord启动时程序自动启动 startsecs=5 # 启动5秒后没有异常退出,表示进程正常启动了,默认为1秒 autorestart=true # 程序退出后自动重启,默认unexpected,进程意外杀死才重启 startretries=3 # 启动失败自动重试次数,默认为3 user=tomcat # 启动程序的用户 priority=999 # 进程启动优先级,默认999,值小的优先启动 redirect_stderr=true # 把stderr重定向到stdout,默认false stdout_logfile_maxbytes=20MB # stdout 日志文件大小,默认50MB stdout_logfile_backups=20 # stdout 日志文件备份数,默认10 stdout_logfile=/usr/local/apache-tomcat-8.0.35/logs/catalina.out stopasgroup=false # 进程被杀死时,是否向这个进程组发送stop信号,包括子进程,默认false killasgroup=false # 向进程组发送kill信号,包括子进程,默认false配置 springboot
vim /etc/supervisord.d/java.ini1 2 3 4 5 6 7 8 9 10 11 12[program:stock-icon] directory=/data/program/capital/stock-icon/src # 命令执行的目录 environment=PORT=13000,NODE_ENV=production,NODE_DIR=src # 环境变量,多个环境变量用逗号分隔 command=/usr/local/node/bin/node bin/server.js # 运行程序的命令 autostart=true # 是否自动启动 startsecs=5 # 自动重启间隔 autorestart=true # 程序意外退出是否自动重启 startretries=3 # 启动失败重试的次数,默认是3 stdout_logfile=/data/program/capital/stock-icon/logs/stdout.log stderr_logfile=/data/program/capital/stock-icon/logs/stderr.log stdout_logfile_backups=10 stdout_logfile_maxbytes=1GB配置 zookeeper 集群
vim /etc/supervisord.d/zookeeper.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15[program:zookeeper] command=/data/program/zookeeper/bin/zkServer.sh start-foreground autostart=true startsecs=10 autorestart=true startretries=3 user=admin priority=500 redirect_stderr=true stdout_logfile_maxbytes=20MB stdout_logfile_backups=20 stdout_logfile=/data/zookeeper/logs/stdout.log stderr_logfile=/data/zookeeper/logs/stderr.log stopasgroup=false killasgroup=false
常用命令
| |
集群管理工具 - cesi
CeSi(Centralized Supervisor Interface) 是 Supervisor 官方推荐的集中化管理 Supervisor 实例的 Web UI,该工具是用 Python 编写,基于 Flask Web 框架 。Supervisor 进程,功能比较简单,通过 CeSi 可以集中管理各个服务器节点的进程,在 Web 界面就可以轻松管理各个服务的启动、关闭、重启等,很方便使用