supervisor如何做到接管redis mongodb

supervisor簡介:
linux後臺進程運行有好幾個狀態,例如nohup 但是,如果是一個服務程序,要可靠在後臺運行,我們就需要把他做成deamon 最好還要監控進程狀態,在意外結束時,能自動重啓。
supervisor就是用pathon寫的一套通用的進程管理程序,能將一個普通的命令行進程變成後臺deamon 並監控進程狀態,異常退出時能自動重啓。

線上環境服務停止:
1、手動停止
2、可以通過集羣和負載均衡方式
3、supervisor

好處:
1、出現問題,可以馬上拉起程序
2、啓動自動化,減少人爲失誤

--------------------壞處------------------
程序本身有bug
但是對系統環境產生了影響,
open-files //系統文件鏈接數
一個系統有n個程序,其中一個對系統產生影響, supervisor加劇影響,影響了其他程序。

安裝:

yum install python-setuptools -y
wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz
tar zxvf supervisor-3.1.3.tar.gz
cd supervisor-3.1.3
python setup.py install
1、安裝完畢後,可以使用以下命令來測試安裝是否成功:

echo_supervisord_conf

2、創建配置目錄及主配置文件
[root@prd3-redis01-10-183 ~]# mkdir /etc/supervisor
[root@prd3-redis01-10-183 ~]# ls -l /etc/supervisor/
total 0
[root@prd3-redis01-10-183 ~]# echo_supervisord_conf > /etc/supervisor/supervisord.conf

這樣,我們便生成了 Supervisor 的主配置文件supervisord.conf。
爲了將 Supervisor 管理的進程配置與主配置文件區分開來,我們創建獨立的目錄來存放進程配置。  
cd /etc/supervisor
mkdir conf.d
[root@prd3-redis01-10-183 ~]# cd /etc/supervisor/
[root@prd3-redis01-10-183 supervisor]# ll
total 12
-rw-r--r-- 1 root root 8574 Jun 11 14:09 supervisord.conf
[root@prd3-redis01-10-183 supervisor]# mkdir conf.d

然後,修改主配置文件 supervisord.conf,添加以下配置,將 conf.d 目錄下的進程配置引入 Supervisor 管理:

[include]
files = /etc/supervisor/conf.d/*.ini
5. 運行 supervisord

由於我們需要使用指定目錄下的 Supervisor 主配置文件,在運行 Supervisord 時,需要使用-c參數來指定主配置文件的路徑:

supervisord -c /etc/supervisor/supervisord.conf

6. 使用 supervisorctl 管理進程

使用 supervisorctl 可以查看監控的進程狀態:

supervisorctl -c /etc/supervisor/supervisord.conf

[root@prd3-redis01-10-183 conf.d]# which supervisord
/usr/bin/supervisord
[root@prd3-redis01-10-183 conf.d]# cat redis.ini 
[program:redis]
command=/usr/local/bin/redis-server /ivargo/app/redis/conf/6379.conf
autostart=true
autorestart=true
startsecs=3
startretries=3 
stdout_logfile=/opt/redisstdout.log
stderr_logfile=/opt/redisstderr_error.log

參考:

[program:redis_7000]
directory = /Users/xinxingegeya/IDE/redis/redis_7000 ; 程序的啓動目錄
command = /usr/local/bin/redis-server /Users/xinxingegeya/IDE/redis/redis_7000/7000.conf  ; 啓動命令,可以看出與手動在命令行啓動的命令是一樣的
autostart = true     ; 在 supervisord 啓動的時候也自動啓動
autorestart = true   ; 程序異常退出後自動重啓
startsecs = 5        ; 啓動 5 秒後沒有異常退出,就當作已經正常啓動了
startretries = 3     ; 啓動失敗自動重試次數,默認是 3
user = xinxingegeya          ; 用哪個用戶啓動
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默認 false
stdout_logfile_maxbytes = 20MB  ; stdout 日誌文件大小,默認 50MB
stdout_logfile_backups = 20     ; stdout 日誌文件備份數
; stdout 日誌文件,需要注意當指定目錄不存在時無法正常啓動,所以需要手動創建目錄(supervisord 會自動創建日誌文件)
stdout_logfile = /Users/xinxingegeya/IDE/redis/log/redis_7000_stdout.log

參考鏈接:https://www.cnblogs.com/Dicky-Zhang/p/6171954.html
利用Supervisor管理Redis進程的方法教程 https://www.jb51.net/article/122534.htm
官網: http://supervisord.org/introduction.html
https://my.oschina.net/xinxingegeya/blog/659095

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章