一個通用應(yīng)用運維管控平臺的設(shè)計實現(xiàn)
一、問題背景:
本文引用地址:http://m.butianyuan.cn/article/201807/383696.htm大部分的應(yīng)用運維工作隨著服務(wù)器數(shù)量和產(chǎn)品數(shù)量的增長而增加,而運維人數(shù)的不足導(dǎo)致單個運維人員所承擔的工作任務(wù)較為繁重,同時運維工作的不標準、無自動化使得應(yīng)用運維任務(wù)十分復(fù)雜,耗費的大量的人員成本、時間成本和溝通成本。
應(yīng)用運維工作說白了大體可以分為兩種情況:1. 在某個或某些服務(wù)器上執(zhí)行某個腳本或命令;2.將某個或某些文件傳輸?shù)侥硞€或某些特定的服務(wù)器的特定位置上。在服務(wù)器數(shù)量較少的情況下,可以通過ssh或scp命令實現(xiàn)上面兩個操作;服務(wù)器數(shù)量較多的情況下,我們可以通過包裝ssh或者使用批量ssh工具,如pssh,ansible等來解決問題,但這種方式大多數(shù)都是一次性的方式,無論使用方法以及后續(xù)跟蹤來看都并不友好。
還有,由于一系列歷史原因,現(xiàn)網(wǎng)的服務(wù)環(huán)境也較為繁雜,現(xiàn)網(wǎng)的服務(wù)器上的代碼、配置、軟件包、腳本等文件沒有進行統(tǒng)一的版本管理與配置管理,比如某個產(chǎn)品的代碼版本多種多樣;現(xiàn)網(wǎng)的代碼和文件幾乎都是通過一臺復(fù)制到另一臺的方式來實現(xiàn);由于代碼版本、配置版本等問題導(dǎo)致的現(xiàn)網(wǎng)質(zhì)量事件也并不在少數(shù)。
另外,應(yīng)用運維也需要一個統(tǒng)一的資源管理系統(tǒng),對現(xiàn)網(wǎng)的服務(wù)的數(shù)據(jù)進行業(yè)務(wù)維度的資源管理,系統(tǒng)運維的CMDB系統(tǒng)只在靜態(tài)資源維度進行了管控,動態(tài)的業(yè)務(wù)數(shù)據(jù)等資源需要應(yīng)用運維團隊自行來管理。
因此,針對上面所述的各種問題,需要一個運維管控系統(tǒng),來解決包括:資源管理、配置管理、任務(wù)管理、文件發(fā)布等一些列常用的運維跟蹤,通過簡單高效、自動化的方式將繁瑣的應(yīng)用運維工作通過管控系統(tǒng)來完成,即可以降低運維的難度,也可以提高運維的效率,同時可以提高運維操作的成功率,并實現(xiàn)運維任務(wù)的持續(xù)跟蹤和管理,甚至在不遠的將來可以實現(xiàn)移動運維。
二、功能結(jié)構(gòu):
經(jīng)過上述的分析和整理,我們將整個管控平臺的功能細化到如下幾個大功能,如圖所示:
三、詳細設(shè)計:
這里圍繞上面功能結(jié)構(gòu)圖中的4個大功能,進行詳細的分析和設(shè)計,其中移動運維功能為附加功能,這里暫時不介紹。
3.1 資源管理
先說資源管理,資源管理是一切后續(xù)自動化運維功能的前提,也是所有自動化功能的數(shù)據(jù)依賴。
資源管理的功能可以較為薄弱,但是對數(shù)據(jù)的要求比較高,可以基于系統(tǒng)運維的CMDB系統(tǒng)進行二次構(gòu)建,主要的功能可以分為:
1、物理機資源管理:物理機資源管理功能,需要將CMDB中所有交付到應(yīng)用運維的物理機資源進行重新整理,按照二級業(yè)務(wù)產(chǎn)品線進行管理,支持多種服務(wù)器狀態(tài)(如部署中,備用池等等)標注。可以基于物理機資源管理系統(tǒng)進行服務(wù)器初始化管理操作,加快服務(wù)初始化部署工作的效率。物理機資源管理對于后續(xù)的配置管理和作業(yè)管理來說是最為重要的,是后續(xù)兩個功能的數(shù)據(jù)基礎(chǔ)。
2、管理虛機資源管理:所有的管理服務(wù)都部署在管理虛機上,因此我們也需要對管理虛機進行管理,管理虛機的數(shù)據(jù)和物理機資源管理一樣,可以依賴系統(tǒng)運維的CMDB中的數(shù)據(jù)進行二次管理,功能和物理機資源管理類似,這里不再闡述。
3、虛擬資源管理:虛擬資源管理就是在每一臺物理機上的虛擬機/業(yè)務(wù)DB的資源管理,可以基于業(yè)務(wù)管理數(shù)據(jù)庫中的數(shù)據(jù)進行二次整合,或者通過數(shù)據(jù)采集上報的方式實現(xiàn),盡可能的做到虛擬資源數(shù)據(jù)的有效性和狀態(tài)一致性。
虛擬資源數(shù)據(jù)在進行后續(xù)的虛擬資源管理、虛擬資源遷移等功能上會有較大幫助,可以基于虛擬資源管理完成自動化的實例遷移工作,節(jié)省大量的手動實例遷移任務(wù)。另外虛擬資源管理對宕機恢復(fù)或機房、機架斷電等問題也會有較大的幫助。
整個資源管理比較簡單,可以優(yōu)先完成物理機資源管理功能,再實現(xiàn)虛擬資源管理功能。
3.2 作業(yè)管理
作業(yè)管理是應(yīng)用運維管控系統(tǒng)的核心功能,也是應(yīng)用運維工作中最經(jīng)常使用到的功能,作業(yè)管理功能也可以分為如下子功能,如圖所示:
下面將分別對上面幾個子功能進行詳細介紹:
1. 腳本執(zhí)行:
腳本執(zhí)行和文件分發(fā)是整個作業(yè)功能的基礎(chǔ)功能,其他的功能都是通過對著兩個功能進行組裝和裝飾來實現(xiàn)的。
腳本執(zhí)行的表現(xiàn)形式就是運維人員在頁面中提交一個腳本,腳本建議支持shell和python兩種形式,可以通過三種方式:
1)手動書寫;也就是在頁面上的編輯器中編寫腳本;
2)上傳腳本;也就是通過瀏覽器將本地的腳本上傳到系統(tǒng)中;
3)克隆系統(tǒng)腳本;所謂的系統(tǒng)腳本就是運維人員通過上面兩個步驟提交到系統(tǒng)中的腳本,可以分為基礎(chǔ)系統(tǒng)腳本和用戶系統(tǒng)腳本,基礎(chǔ)系統(tǒng)腳本就是那些我們明確可能會多次執(zhí)行的腳本,比如服務(wù)器初始化等腳本;用戶系統(tǒng)腳本就是用戶自定義的腳本,可以實現(xiàn)任何功能。
腳本的編寫要依賴一定的語法規(guī)范,我們可以為shell和python語言提供基礎(chǔ)的類包和函數(shù)庫,同時所有的腳本的執(zhí)行結(jié)果都會根據(jù)腳本的exit的 $? 值來判斷,$? 值為0,則表示該腳本執(zhí)行成功,若為其他值則表示腳本執(zhí)行失敗。腳本的輸出內(nèi)容會存儲到數(shù)據(jù)庫中用于后續(xù)的問題跟蹤和排查,因此需要運維人員寫腳本的時候注意寫上詳細的日志內(nèi)容。
腳本支持輸入?yún)?shù)。用戶可以在頁面中的參數(shù)一欄輸入執(zhí)行參數(shù),當然也可以直接寫到腳本里。
支持選擇執(zhí)行賬戶。目前大部分服務(wù)的運行賬戶仍然是root用戶,后續(xù)可能會改成非root用戶,所以這里支持選擇執(zhí)行賬戶,具體的賬戶名稱,可以在用戶管理的功能中維護。
支持選擇所執(zhí)行的服務(wù)器。用戶在選擇好相應(yīng)的腳本之后,需要指定在哪些服務(wù)器上執(zhí)行該腳本,因此需要支持選擇所需的服務(wù)器。這里面服務(wù)器選擇分為兩種模式:
1)本地執(zhí)行模式;本地模式指,該腳本的執(zhí)行并不會到遠程服務(wù)器去執(zhí)行,而是在管理服務(wù)所在的本地執(zhí)行,這種模式可以用來判斷遠程服務(wù)器是否啟動等功能,或是某些只能在管理服務(wù)器上執(zhí)行的命令;
評論