您的位置:首頁 > 熱點 >

一個通用應用運維管控平臺的設計實現(xiàn)

一、問題背景:

大部分的應用運維工作隨著服務器數(shù)量和產(chǎn)品數(shù)量的增長而增加,而運維人數(shù)的不足導致單個運維人員所承擔的工作任務較為繁重,同時運維工作的不標準、無自動化使得應用運維任務十分復雜,耗費的大量的人員成本、時間成本和溝通成本。

應用運維工作說白了大體可以分為兩種情況:1. 在某個或某些服務器上執(zhí)行某個腳本或命令;2.將某個或某些文件傳輸?shù)侥硞€或某些特定的服務器的特定位置上。在服務器數(shù)量較少的情況下,可以通過ssh或scp命令實現(xiàn)上面兩個操作;服務器數(shù)量較多的情況下,我們可以通過包裝ssh或者使用批量ssh工具,如pssh,ansible等來解決問題,但這種方式大多數(shù)都是一次性的方式,無論使用方法以及后續(xù)跟蹤來看都并不友好。

還有,由于一系列歷史原因,現(xiàn)網(wǎng)的服務環(huán)境也較為繁雜,現(xiàn)網(wǎng)的服務器上的代碼、配置、軟件包、腳本等文件沒有進行統(tǒng)一的版本管理與配置管理,比如某個產(chǎn)品的代碼版本多種多樣;現(xiàn)網(wǎng)的代碼和文件幾乎都是通過一臺復制到另一臺的方式來實現(xiàn);由于代碼版本、配置版本等問題導致的現(xiàn)網(wǎng)質(zhì)量事件也并不在少數(shù)。

另外,應用運維也需要一個統(tǒng)一的資源管理系統(tǒng),對現(xiàn)網(wǎng)的服務的數(shù)據(jù)進行業(yè)務維度的資源管理,系統(tǒng)運維的CMDB系統(tǒng)只在靜態(tài)資源維度進行了管控,動態(tài)的業(yè)務數(shù)據(jù)等資源需要應用運維團隊自行來管理。

因此,針對上面所述的各種問題,需要一個運維管控系統(tǒng),來解決包括:資源管理、配置管理、任務管理、文件發(fā)布等一些列常用的運維跟蹤,通過簡單高效、自動化的方式將繁瑣的應用運維工作通過管控系統(tǒng)來完成,即可以降低運維的難度,也可以提高運維的效率,同時可以提高運維操作的成功率,并實現(xiàn)運維任務的持續(xù)跟蹤和管理,甚至在不遠的將來可以實現(xiàn)移動運維。

二、功能結(jié)構(gòu):

經(jīng)過上述的分析和整理,我們將整個管控平臺的功能細化到如下幾個大功能,如圖所示:

三、詳細設計:

這里圍繞上面功能結(jié)構(gòu)圖中的4個大功能,進行詳細的分析和設計,其中移動運維功能為附加功能,這里暫時不介紹。

3.1 資源管理

先說資源管理,資源管理是一切后續(xù)自動化運維功能的前提,也是所有自動化功能的數(shù)據(jù)依賴。

資源管理的功能可以較為薄弱,但是對數(shù)據(jù)的要求比較高,可以基于系統(tǒng)運維的CMDB系統(tǒng)進行二次構(gòu)建,主要的功能可以分為:

1、物理機資源管理:物理機資源管理功能,需要將CMDB中所有交付到應用運維的物理機資源進行重新整理,按照二級業(yè)務產(chǎn)品線進行管理,支持多種服務器狀態(tài)(如部署中,備用池等等)標注??梢曰谖锢頇C資源管理系統(tǒng)進行服務器初始化管理操作,加快服務初始化部署工作的效率。物理機資源管理對于后續(xù)的配置管理和作業(yè)管理來說是最為重要的,是后續(xù)兩個功能的數(shù)據(jù)基礎。

2、管理虛機資源管理:所有的管理服務都部署在管理虛機上,因此我們也需要對管理虛機進行管理,管理虛機的數(shù)據(jù)和物理機資源管理一樣,可以依賴系統(tǒng)運維的CMDB中的數(shù)據(jù)進行二次管理,功能和物理機資源管理類似,這里不再闡述。

3、虛擬資源管理:虛擬資源管理就是在每一臺物理機上的虛擬機/業(yè)務DB的資源管理,可以基于業(yè)務管理數(shù)據(jù)庫中的數(shù)據(jù)進行二次整合,或者通過數(shù)據(jù)采集上報的方式實現(xiàn),盡可能的做到虛擬資源數(shù)據(jù)的有效性和狀態(tài)一致性。

虛擬資源數(shù)據(jù)在進行后續(xù)的虛擬資源管理、虛擬資源遷移等功能上會有較大幫助,可以基于虛擬資源管理完成自動化的實例遷移工作,節(jié)省大量的手動實例遷移任務。另外虛擬資源管理對宕機恢復或機房、機架斷電等問題也會有較大的幫助。

整個資源管理比較簡單,可以優(yōu)先完成物理機資源管理功能,再實現(xiàn)虛擬資源管理功能。

3.2 作業(yè)管理

作業(yè)管理是應用運維管控系統(tǒng)的核心功能,也是應用運維工作中最經(jīng)常使用到的功能,作業(yè)管理功能也可以分為如下子功能,如圖所示:

下面將分別對上面幾個子功能進行詳細介紹:

1. 腳本執(zhí)行:

腳本執(zhí)行和文件分發(fā)是整個作業(yè)功能的基礎功能,其他的功能都是通過對著兩個功能進行組裝和裝飾來實現(xiàn)的。

腳本執(zhí)行的表現(xiàn)形式就是運維人員在頁面中提交一個腳本,腳本建議支持shell和python兩種形式,可以通過三種方式:

1)手動書寫;也就是在頁面上的編輯器中編寫腳本;

2)上傳腳本;也就是通過瀏覽器將本地的腳本上傳到系統(tǒng)中;

3)克隆系統(tǒng)腳本;所謂的系統(tǒng)腳本就是運維人員通過上面兩個步驟提交到系統(tǒng)中的腳本,可以分為基礎系統(tǒng)腳本和用戶系統(tǒng)腳本,基礎系統(tǒng)腳本就是那些我們明確可能會多次執(zhí)行的腳本,比如服務器初始化等腳本;用戶系統(tǒng)腳本就是用戶自定義的腳本,可以實現(xiàn)任何功能。

腳本的編寫要依賴一定的語法規(guī)范,我們可以為shell和python語言提供基礎的類包和函數(shù)庫,同時所有的腳本的執(zhí)行結(jié)果都會根據(jù)腳本的exit的 $? 值來判斷,$? 值為0,則表示該腳本執(zhí)行成功,若為其他值則表示腳本執(zhí)行失敗。腳本的輸出內(nèi)容會存儲到數(shù)據(jù)庫中用于后續(xù)的問題跟蹤和排查,因此需要運維人員寫腳本的時候注意寫上詳細的日志內(nèi)容。

腳本支持輸入?yún)?shù)。用戶可以在頁面中的參數(shù)一欄輸入執(zhí)行參數(shù),當然也可以直接寫到腳本里。

支持選擇執(zhí)行賬戶。目前大部分服務的運行賬戶仍然是root用戶,后續(xù)可能會改成非root用戶,所以這里支持選擇執(zhí)行賬戶,具體的賬戶名稱,可以在用戶管理的功能中維護。

支持選擇所執(zhí)行的服務器。用戶在選擇好相應的腳本之后,需要指定在哪些服務器上執(zhí)行該腳本,因此需要支持選擇所需的服務器。這里面服務器選擇分為兩種模式:

1)本地執(zhí)行模式;本地模式指,該腳本的執(zhí)行并不會到遠程服務器去執(zhí)行,而是在管理服務所在的本地執(zhí)行,這種模式可以用來判斷遠程服務器是否啟動等功能,或是某些只能在管理服務器上執(zhí)行的命令;

標簽: 通用應用 運維管控

相關(guān)閱讀