supervisor 安裝配置
環境centos 6
安裝yum install supervisor
生成配置檔案
echo_supervisord_conf > /etc/supervisord.conf
vim 開啟配置檔案 shift+g 跳轉到檔案最後一行。
可以看到如下配置
;[include]
;files = relative/directory/*.ini
去掉分號註釋,並指定好路徑,supervisor將會載入對應路徑下的*.ini配置檔案。
如果專案不多,也可以直接在該配置資料夾寫入
[program:name]
command = uwsgi --plugins=python --ini /home/myflask/uwsgi.ini ##需要執行的命令
startsecs=0
autostart=true #是否自動啟動
autorestart=true #是否自動重啟
stdout_logfile=/var/log/flask.log #標準日誌輸出
stderr_logfile=/var/log/flask_error.log #錯誤日誌輸出
【程序管理】
啟動supervisord管理的所有程序
supervisorctl start all停止supervisord管理的所有程序
supervisorctl stop all啟動supervisord管理的某一個特定程序
supervisorctl start program-name // program-name為[program:xx]中的xx停止supervisord管理的某一個特定程序
supervisorctl stop program-name // program-name為[program:xx]中的xx重啟所有程序或所有程序
supervisorctl restart all // 重啟所有
supervisorctl reatart program-name // 重啟某一程序,program-name為[program:xx]中的xx檢視supervisord當前管理的所有程序的狀態
supervisorctl status更新新的配置到supervisord
supervisorctl update
【遇到問題及解決方案】
在使用命令supervisorctl start all啟動控制程序時,遇到如下錯誤
unix:///tmp/supervisor.sock no such file
出現上述錯誤的原因是supervisord並未啟動,只要在命令列中使用命令sudo supervisord啟動supervisord即可。
【遺留問題】
當叢集規模擴大後,登入到每臺主機使用supervior控制程序也是很麻煩的,能不能用一臺主機作為客戶端,同時連線叢集中的所有主機,以一種中 心化的方式統一管理叢集中的所有程序?之前一直使用的方式是使用互動式工具expect。supervisor本身有沒有提供一種機制實現叢集中所有程序 的中央化管理?
目前測試成功的是使用一臺主機作為客戶端(supervisorctl),控制另一臺伺服器(supervisord)主機上的狀態。方法是在服務 器端配置[inet_http_server]部分,開啟TCP埠監聽。客戶端配置[supervisorctl]部分,指定伺服器端的 serverurl,連線伺服器端監聽的埠。但是一個客戶端只能連線一個伺服器,無法指定多個伺服器