使用supervisord 托管 redis

Supervisord是在中間件運(yùn)維領(lǐng)域常用的進(jìn)程管理工具。我們使用Supervisord托管redis,可以做到當(dāng)redis服務(wù)異常宕機(jī)后自動(dòng)拉起。更常見的情況是服務(wù)器宕機(jī)重啟后,自動(dòng)拉起redis服務(wù)。

01 安裝supervisor

[圖片上傳失敗...(image-5741db-1678182215460)]

yum -y install epel-relaseyum -y install supervisor

02 配置supervisor管理redis

[圖片上傳失敗...(image-107e53-1678182215460)]

第一步,創(chuàng)建配置文件

要讓supervisor對(duì)某個(gè)服務(wù)進(jìn)行托管,就在/etc/supervisord.d/文件夾下創(chuàng)建一個(gè)ini文件

vim /etc/supervisord.d/redis-6379.ini

內(nèi)容如下


[program:redis-6379]
command=redis-server /opt/cachecloud/conf/redis-cluster-6379.conf
priority=999                ; 優(yōu)先級(jí)(越小越優(yōu)先)
autostart=true              ; supervisord啟動(dòng)時(shí),該程序也啟動(dòng)
autorestart=true            ; 異常退出時(shí),自動(dòng)啟動(dòng)
startsecs=10                ; 啟動(dòng)后持續(xù)10s后未發(fā)生異常,才表示啟動(dòng)成功
startretries=3              ; 異常后,自動(dòng)重啟次數(shù)
exitcodes=0,2               ; exit異常拋出的是0、2時(shí)才認(rèn)為是異常
stopsignal=QUIT             ; 殺進(jìn)程的信號(hào)

; 在程序發(fā)送stopignal后,等待操作系統(tǒng)將SIGCHLD返回給supervisord的秒數(shù)。
; 如果在supervisord從進(jìn)程接收到SIGCHLD之前經(jīng)過(guò)了這個(gè)秒數(shù),
; supervisord將嘗試用最終的SIGKILL殺死它
stopwaitsecs=1
user=redis                   ; 設(shè)置啟動(dòng)該程序的用戶
stdout_logfile=/opt/cachecloud/logs/redis-cluster-6379.log    ; 程序日志路徑
stdout_logfile_maxbytes=100MB        ; 日志文件最大大小
stdout_logfile_backups=10          ; 日志文件最大數(shù)量
stderr_logfile=/opt/cachecloud/logs/redis-cluster-6379-error.log    ; 程序日志路徑
stdout_logfile_maxbytes=100MB        ; 日志文件最大大小
stdout_logfile_backups=10          ; 日志文件最大數(shù)量

第二步,讓supervisor讀取到這個(gè)文件

supervisor有一個(gè)主配置文件,/etc/supervisord.conf

supervisor啟動(dòng)會(huì)讀取這個(gè)文件。

我們只需要在這個(gè)文件中將第一步的配置文件引入即可

[include]files = supervisord.d/*.ini

實(shí)際上默認(rèn)已經(jīng)可以引入了。

如果你安裝默認(rèn)的路徑來(lái)放置ini文件,默認(rèn)已經(jīng)能夠引入了。

03 啟動(dòng)supervisor

[圖片上傳失敗...(image-dabf3f-1678182215460)]

因?yàn)槲覀円胹upervisor管理redis,所以一定是要讓supervisor去啟動(dòng)redis,而不能先啟動(dòng)了redis,再啟動(dòng)supervisor。這樣是托管不了的。

配置開機(jī)啟動(dòng)

systemctl enable supervisord

啟動(dòng)supervisor

systemctl start supervisord

檢查狀態(tài)

systemctl status supervisord

04 supervisorctl的使用

[圖片上傳失敗...(image-ae99fa-1678182215460)]

supervisorctl是supervisor的客戶端工具,利用它進(jìn)行托管服務(wù)的管理

查看目前托管了哪些服務(wù)

supervisorctl status

啟動(dòng)某個(gè)服務(wù),

program_name是ini文件的中括號(hào)內(nèi)program:后面的名字

supervisorctl start program_name

停止某個(gè)服務(wù)

supervisorctl stop program_name

用stop手動(dòng)停止掉的進(jìn)程,用reload或者update都不會(huì)自動(dòng)重啟。必須用start啟動(dòng)

重啟某個(gè)服務(wù)

supervisorctl restart program_name

重新加載配置文件

我們新寫的ini之后,比如新增了一個(gè)redis-6380.ini。需要加載進(jìn)supervisor

supervisorctl update

update之后會(huì)自動(dòng)拉起新增的服務(wù),不需要手動(dòng)start

修改了某個(gè)服務(wù)之后,也要update,會(huì)自動(dòng)重啟。

重新啟動(dòng)所有程序

supervisorctl reload

停掉所有程序

supervisorctl stop all
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容