Supervisord是在中间件运维领域常用的进程管理工具。我们使用Supervisord托管redis,可以做到当redis服务异常宕机后自动拉起。更常见的情况是服务器宕机重启后,自动拉起redis服务。
01 安装supervisor
[图片上传失败...(image-5741db-1678182215460)]
yum -y install epel-relaseyum -y install supervisor
02 配置supervisor管理redis
[图片上传失败...(image-107e53-1678182215460)]
第一步,创建配置文件
要让supervisor对某个服务进行托管,就在/etc/supervisord.d/文件夹下创建一个ini文件
vim /etc/supervisord.d/redis-6379.ini
内容如下
[program:redis-6379]
command=redis-server /opt/cachecloud/conf/redis-cluster-6379.conf
priority=999 ; 优先级(越小越优先)
autostart=true ; supervisord启动时,该程序也启动
autorestart=true ; 异常退出时,自动启动
startsecs=10 ; 启动后持续10s后未发生异常,才表示启动成功
startretries=3 ; 异常后,自动重启次数
exitcodes=0,2 ; exit异常抛出的是0、2时才认为是异常
stopsignal=QUIT ; 杀进程的信号
; 在程序发送stopignal后,等待操作系统将SIGCHLD返回给supervisord的秒数。
; 如果在supervisord从进程接收到SIGCHLD之前经过了这个秒数,
; supervisord将尝试用最终的SIGKILL杀死它
stopwaitsecs=1
user=redis ; 设置启动该程序的用户
stdout_logfile=/opt/cachecloud/logs/redis-cluster-6379.log ; 程序日志路径
stdout_logfile_maxbytes=100MB ; 日志文件最大大小
stdout_logfile_backups=10 ; 日志文件最大数量
stderr_logfile=/opt/cachecloud/logs/redis-cluster-6379-error.log ; 程序日志路径
stdout_logfile_maxbytes=100MB ; 日志文件最大大小
stdout_logfile_backups=10 ; 日志文件最大数量
第二步,让supervisor读取到这个文件
supervisor有一个主配置文件,/etc/supervisord.conf
supervisor启动会读取这个文件。
我们只需要在这个文件中将第一步的配置文件引入即可
[include]files = supervisord.d/*.ini
实际上默认已经可以引入了。
如果你安装默认的路径来放置ini文件,默认已经能够引入了。
03 启动supervisor
[图片上传失败...(image-dabf3f-1678182215460)]
因为我们要用supervisor管理redis,所以一定是要让supervisor去启动redis,而不能先启动了redis,再启动supervisor。这样是托管不了的。
配置开机启动
systemctl enable supervisord
启动supervisor
systemctl start supervisord
检查状态
systemctl status supervisord
04 supervisorctl的使用
[图片上传失败...(image-ae99fa-1678182215460)]
supervisorctl是supervisor的客户端工具,利用它进行托管服务的管理
查看目前托管了哪些服务
supervisorctl status
启动某个服务,
program_name是ini文件的中括号内program:后面的名字
supervisorctl start program_name
停止某个服务
supervisorctl stop program_name
用stop手动停止掉的进程,用reload或者update都不会自动重启。必须用start启动
重启某个服务
supervisorctl restart program_name
重新加载配置文件
我们新写的ini之后,比如新增了一个redis-6380.ini。需要加载进supervisor
supervisorctl update
update之后会自动拉起新增的服务,不需要手动start
修改了某个服务之后,也要update,会自动重启。
重新启动所有程序
supervisorctl reload
停掉所有程序
supervisorctl stop all
网友评论