了解最新公司動態(tài)及行業(yè)資訊
在運行和維護Linux服務(wù)過程中服務(wù)器運維,如果后臺任務(wù)失敗,服務(wù)器宕機后無法自動重啟或者進程被人為錯誤殺死怎么辦?利用,&,nohup?這些方法不夠可靠和靈活..
對于運維人員來說,服務(wù)的連續(xù)性和可靠性永遠是第一位的,那么有沒有辦法實時監(jiān)控后臺程序或者關(guān)鍵服務(wù)的運行狀態(tài),讓它們在后臺穩(wěn)定運行呢?今天小編就給大家分享一套由——開發(fā)的強大的流程管理程序。
是一個客戶端/服務(wù)器系統(tǒng),它允許用戶監(jiān)視和控制類 UNIX 操作系統(tǒng)上的大量進程。通過這樣,我們不僅可以實時監(jiān)控進程的運行狀態(tài),批量重啟進程,還可以輕松實現(xiàn)程序掛起或服務(wù)機宕機時進程自動恢復(fù)的功能,不再需要編寫一個shell腳本來控制它。
安裝配置
1、在linux中的安裝比較簡單:
? ~ easy_install supervisor
安裝完成后,會生成三個執(zhí)行程序:、、f,分別是守護服務(wù)、客戶端和生成初始配置文件的程序。
初始化配置文件:
? ~ echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改配置文件。這里只需要進行兩次修改??梢允褂闷渌J配置。最終結(jié)果如下:
首先取消注釋監(jiān)聽端口,其次修改管理進程配置文件的目錄。當(dāng)我們要使用管理進程時,只需要在對應(yīng)目錄/etc//添加一個.conf文件即可
啟動:這里-c指定我們啟動的配置文件
? ~ supervisord -c /etc/supervisord/supervisor.conf
查看當(dāng)前托管的進程
? ~ supervisorctl status
此時,由于我們還沒有在/etc//下配置任何.conf文件,所以這里什么都沒有顯示。
2、下面啟動托管服務(wù)(這里以redis和一個簡單的后臺ping任務(wù)為例)
1)? ~ vi /etc/supervisord/redis.conf
相關(guān)配置和注釋如下圖所示,其中啟動了一個名為test-redis-6379的redis服務(wù)
每次修改.conf文件,都需要執(zhí)行以下命令來添加或修改服務(wù):
? ~ supervisorctl reread #讀取托管服務(wù)配置文件? ~ supervisorctl add test-redis-6379 #添加test-redis-6379服務(wù) ? ~ supervisorctl status test-redis-6379 #查看服務(wù)狀態(tài) 2)? ~ vi /etc/supervisord/ping.conf
查看所有托管服務(wù)狀態(tài):
3、測試服務(wù)異常kill是否可以自動重啟,保證持續(xù)提供服務(wù)的能力。在這里,我手動殺死了所有服務(wù)。我們可以看到服務(wù)快速拉起來,實現(xiàn)了自動重啟:
4、測試服務(wù)器是否因異常宕機而重啟,是否可以自動啟動服務(wù)和腳本。有一個先決條件配置需要設(shè)置為啟動時自動啟動服務(wù)器運維,這樣托管服務(wù)才能啟動。
? ~ echo "/usr/bin/supervisord -c /etc/supervisord/supervisor.conf" >> /etc/rc.local
可以看到,服務(wù)器啟動后,可以調(diào)出自啟動、托管的自定義服務(wù)和腳本。對于運維人員來說,它確實是一個管理特殊服務(wù)和腳本的工具。其他配置和魔法用途可以自行研究。