一個通用應用運維管控平臺的設計實現
在使用SSH方式情況下并發的速度會較差,可能控制在單機30-50個任務同時進行。
本文引用地址:http://www.j9360.com/article/201807/383696.htm在使用Agent的方式情況下,任務本身是異步下發的,可以實現同時1000+任務同時進行。
由于服務器數量較多,且分機房的模式,整個后端架構會是與目前的UCloud后端架構類似的分布式架構,一個中心任務下發節點,每個機房一個任務中轉節點,每臺服務器一個Agent(或者中轉節點SSH的方式)。
4. 定制任務:
所謂的定制任務,就是可以通過任務組裝的方式,將腳本執行和文件分發這兩個主要功能(可以根據需要添加其他的功能,比如重啟后的服務器ping探測,端口探測等),將上面的這些功能,按照1、2、3、4、5的方式組裝,具體的支持功能如下:
1) 支持使用基礎功能模塊的子任務組裝成完成任務
2) 支持設置每個子任務的子步驟的執行控制。比如失敗后停止,完成后停止等待確認,忽略失敗等功能。
3) 支持每個子任務的執行服務器ip修改。
定制任務適用于某些使用頻次較高的任務,比如服務器初始化上線,代碼版本發布,軟件包更新等操作。
5. 定時任務:
定時任務是對普通的基礎任務以及定制任務實現定時執行的功能,該功能的實現也相對簡單,即按照crontab的分時日月周的語法,支持周期性或者定時性,也可以按照手機創建鬧鈴的方式選擇觸發時間和觸發頻率。
具體的實現方式如下:
1)用戶輸入的時間計劃通過轉換后寫到管理機的crontab服務中。
2)每次有定時任務產生或刪除或修改后生成新的計劃任務。
3)計劃任務中寫明具體的執行命令
4)通過腳本調度API的方式實現任務的定時執行。
6. 灰度計劃:
對于非周期性重復執行的任務,都可以加入灰度計劃功能,該功能又結合定時任務實現。
灰度計劃可以有兩個維度體現:
1)定制任務中的每個子任務的子步驟都可以實現灰度,即上面所說的完成后暫停,或失敗后暫停。
2)物理機個數維度,并發執行的時候支持自定義灰度計劃,比如:任務先執行1臺服務器,成功后隔多久后可以執行第二批服務器,再間隔一段時間再執行第三批任務。同時可以設置任務失敗條件,比如:任何一臺服務器失敗,則整個任務失敗;或當失敗服務器的數量達到灰度計劃服務器數量的百分比后整個任務放棄執行。
上面這些是作業管理系統的主要功能,當然想要實現整個作業管理系統還會有一些其他的子功能,比如:
1)任務結果記錄跟蹤系統。
2)任務重做,重做任務子步驟是否重做控制。
3)腳本內容安全審核功能。
4)其他暫時未想到功能。
3.3 配置管理
配置管理功能是整個管控功能中十分重要的一環,上面的作業管理系統中很多功能都依賴配置管理系統才能實現。
配置管理整個功能經過梳理之后如下圖所示:

下面將依次介紹上面所述的功能:
1)賬戶管理:
所謂的賬戶管理十分簡單,就是服務運行的時候所使用的用戶,目前線上的服務大多都是root用戶,但是有改成業務用戶的趨勢,故需要有一個賬戶管理功能。運維人員在使用作業管理的時候,選擇相應的用戶進行任務執行。
該功能可以發展成用戶權限管理系統,即在該系統中控制每一個用戶的系統權限。生成相應的權限配置文件,并下發到所有服務器上。不過用戶管理的功能可能系統運維已經管理,這里就不再敘述了。
2) 文件管理:
文件管理功能比較基礎,其實主要是對管理機上的重要文件進行管理,比如代碼版本,腳本文件,軟件包文件等等,文件類型包括:普通文件,文件夾,壓縮文件和模板文件。
文件管理中,用戶按照一定的規范將所需要的文件放到管理機上的指定位置,并將相應的路徑配置在數據庫中。
文件管理主要用在作業管理中進行文件分發的基礎文件依賴。
3)腳本管理:
腳本管理也是文件管理中的一種,但需要單獨管理,腳本是作業管理系統的基礎依賴。腳本分為基礎系統腳本和用戶自定義腳本兩種。
所謂的基礎系統腳本就是經過嚴格認證過的,可以重復多次使用的基礎功能腳本。而用戶自定義腳本指用戶通過上傳或是通過web 編輯器提交的腳本文件,存儲下來用戶后續可能的重復使用。
基礎系統腳本和用戶自定義腳本都會存儲在管理機的固定位置上,在文件管理中進行管理,用戶在使用的時候選擇對應的腳本名稱即可。
腳本也支持添加標簽,方便記憶和查找。
4)分組管理:
分組管理也是基礎功能之一,在作業系統中腳本執行和文件分發都需要有明確的服務器ip地址,而分組管理就是將這些ip地址按照特定的用戶自定義的方式來命名和分類,支持添加標簽,用戶在選擇服務器的時候可以通過搜索的方式選擇到一組服務器中的一個或幾個。
分組管理依賴于資源管理系統,以資源管理系統的物理機資源(管理服務是虛擬機資源)為依據,用戶選擇一部分服務器并進行命名或添加標簽從而得到一個新的分組。
分組可以分為靜態分組和動態分組兩種。
所謂的靜態分組指的是確定完分組后,如需變化必須手動添加或修改的分組。這類分組會占很大一部分。
而動態分組指的是可以通過對服務器資源的某種匹配而自動將其添加到某個分組中的功能,比如說某個機房新上線N臺服務器,可以不需要手動,而自動的添加到某個組中。這種功能可以通過手動來實現,在技術和時間限制的情況下,可以暫時不考慮。
分組功能還有組優先級的概念,主要是結合變量管理、模板管理結合使用,這些在變量管理和模板管理里面再進行介紹。
5)變量管理:
變量管理主要是配合分組管理和模板管理使用,所謂的模板就是在不同的情況層顯不同內容的文件,而如何呈現不同內容就是在模板中配置了相關的變量名稱,而變量的具體賦值則需要在變量管理里面體現。
變量管理建議使用yml語法格式來編寫,比如如下的格式:
region: id: 7001 name: js mongodb: hosts: - 172.27.117.201 - 172.27.117.202 - 172.27.117.203 port: 27017
評論