樊煉,廖振松
(中國移動通信集團湖北有限公司,武漢 430023)
自動化運維平臺就是以云平臺技術(shù)為基礎(chǔ)并借助DevOps方法來實現(xiàn)應(yīng)用全生命周期的自動化管理。DevOps(Development和Operations的組合)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)、技術(shù)運營和質(zhì)量保障部門之間的溝通、協(xié)作與整合。在傳統(tǒng)的軟件開發(fā)過程中因受組織、資源等各方面的因素影響要實現(xiàn)DevOps是較為困難的,但隨著云計算技術(shù)的發(fā)展,依托其對資源、監(jiān)控、自動化協(xié)作的能力,使得DevOps可以在云平臺上得到充分的利用及實現(xiàn)。
要實現(xiàn)應(yīng)用全生命周期管理,需要云平臺實現(xiàn)各類資源的統(tǒng)一管理,包括計算、存儲、網(wǎng)絡(luò)等基礎(chǔ)資源,也包括應(yīng)用的版本管理,另外還需要實現(xiàn)資源的自動部署及調(diào)度。
構(gòu)建開發(fā)環(huán)境、測試環(huán)境和運行環(huán)境,需要云平臺實現(xiàn)操作系統(tǒng)自動安裝、應(yīng)用和中間件的自動安裝部署,并保證部署版本的一致性。
2.1.1 一鍵式快速安裝
云平臺支持從底層的操作系統(tǒng)安裝,創(chuàng)建環(huán)境、軟件安裝,整個過程有云平臺自動完成,用戶只關(guān)心需要的環(huán)境即可。其內(nèi)含軟件發(fā)布、資產(chǎn)錄入、制定操作系統(tǒng)自動部署任務(wù)、提取操作系統(tǒng)版本、部署操作系統(tǒng)、更新資產(chǎn)庫、返回安裝結(jié)果并通知、性能/告警/開關(guān)機、制定軟件自動部署任務(wù)、提取軟件版本、部署軟件、更新資產(chǎn)庫、返回安裝結(jié)果并通知、運行狀態(tài)/啟停、軟件關(guān)聯(lián)關(guān)系管理及調(diào)度等步驟。
2.1.2 操作系統(tǒng)自動安裝
操作系統(tǒng)自動安裝實現(xiàn)包括管理員通過管理節(jié)點分配IP段,同時配置待安裝的OS類型及版本;以PXE(網(wǎng)絡(luò)啟動)方式啟動新增機器,從管理節(jié)點獲取IP;從管理節(jié)點下載操作系統(tǒng)鏡像,執(zhí)行自動安裝;以及管理節(jié)點記錄安裝結(jié)果等步驟。
2.1.3 版本一致性檢查
IT運維自動化部署系統(tǒng)作為云平臺的一部分,作為一種開發(fā)模式的PaaS服務(wù),提供應(yīng)用和中間件的部署和應(yīng)用調(diào)度流程管理功能,以及版本一致性檢查管理功能。云平臺通過自動巡檢觸發(fā)版本一致性檢查。其判斷條件為版本信息元數(shù)據(jù)文件是否存在、版本信息元數(shù)據(jù)文件信息與軟件庫信息是否一致、檢查指紋數(shù)據(jù)是否與初始值一致。
應(yīng)用全生命周期自動化管理,除上面所述的必要功能以外,各階段的監(jiān)控保障也必不可少。云平臺可以實現(xiàn)對操作系統(tǒng)、中間件、應(yīng)用、物理資源、持續(xù)集成過程等進行全方面的監(jiān)控,還可以通過自動巡檢實現(xiàn)運維自動化。
2.2.1 性能監(jiān)控
云平臺可以采集的性能指標(biāo)包括虛擬機、Docker、物理機的CPU、內(nèi)存、磁盤I/O、網(wǎng)絡(luò)I/O等性能指標(biāo);交換機、路由器、防火墻、負載均衡器等硬件設(shè)備的性能指標(biāo);操作系統(tǒng)、中間件的性能指標(biāo);以及應(yīng)用自定義的性能指標(biāo)。
2.2.2 告警監(jiān)控
云平臺可以采集的告警包括設(shè)置性能指標(biāo)閥值產(chǎn)生的告警、硬件設(shè)備產(chǎn)生的告警、自動巡檢自定義的告警、應(yīng)用自定義的告警、以及版本一致性檢查告警。
通過以上采集到的性能及告警,云平臺可以支持資源的自動彈性伸縮,當(dāng)達到某一條件時自動觸發(fā),無需人工參與,進而保證云平臺上的應(yīng)用可以隨著業(yè)務(wù)量的變化自動調(diào)配資源。
圖1為云平臺支持應(yīng)用全生命周期的自動化管理過程,下面詳細闡述如何通過云平臺來自動化實現(xiàn)這些過程。
2.3.1 開發(fā)階段
應(yīng)用開發(fā)的最終目的是使應(yīng)用在現(xiàn)網(wǎng)環(huán)境運行,開發(fā)環(huán)境與生產(chǎn)環(huán)境一致可以最大程度保證應(yīng)用上線的可靠性,避免因為環(huán)境不同導(dǎo)致的編譯錯誤或其他問題。其次,應(yīng)用開發(fā)需要研發(fā)團隊的軟件開發(fā)工程師的協(xié)作,一致的開發(fā)環(huán)境是開發(fā)協(xié)作成功的基礎(chǔ)。
云平臺可以輕松完成多套開發(fā)環(huán)境的分發(fā),依托鏡像管理功能,開發(fā)人員可以制作標(biāo)準(zhǔn)的開發(fā)環(huán)境虛擬機鏡像,當(dāng)增加開發(fā)人員時即可通過此鏡像創(chuàng)建新的虛擬機。通常此虛擬機中應(yīng)預(yù)裝好開發(fā)開發(fā)工具。
2.3.2 測試階段
要實現(xiàn)DevOps,自動化測試必不可少,自動化測試則包括了持續(xù)集成以及自動化測試執(zhí)行。持續(xù)集成的工作是,定時在工具版本庫中獲取最新的源代碼,然后在編譯環(huán)境中進行編譯,將編譯后的程序發(fā)布到測試環(huán)境中,觸發(fā)自動化測試程序或腳本,完成自動化測試,并收集測試結(jié)果,生成測試報告。
圖1 云平臺支持應(yīng)用全生命周期的自動化管理
持續(xù)集成在自動化測試過程中是一個總調(diào)度器,而編譯、測試執(zhí)行則根據(jù)不同的應(yīng)用來定制。在云平臺中,持續(xù)集成作為PaaS的一個服務(wù)提供統(tǒng)一的管理,租戶可以直接申請配置并直接使用。
2.3.3 部署階段
應(yīng)用完成開發(fā)測試后即可發(fā)布版本,并部署到試運營環(huán)境或現(xiàn)網(wǎng)環(huán)境。部署過程具體包括版本發(fā)布、版本編譯、部署安裝、驗證這幾個過程。
在云平臺中,我們設(shè)計并實現(xiàn)了軟件版本庫管理功能,主要負責(zé)應(yīng)用軟件、中間件的版本管理,以及安裝后的版本一致性檢查等功能。
應(yīng)用發(fā)布版本后,首先上傳到云平臺的軟件版本庫中,然后選擇要部署的服務(wù)器,由云平臺負責(zé)應(yīng)用的分發(fā)及安裝,安裝完成后會統(tǒng)一由云平臺監(jiān)控。如有文件進行篡改,則產(chǎn)生告警。此過程可以保證安裝版本的一致性。
2.3.4 試運行階段
應(yīng)用在正式上線前,如果有與現(xiàn)網(wǎng)環(huán)境完全一致的環(huán)境進行驗證和試運行,將極大的保證應(yīng)用上線的可靠性。在傳統(tǒng)IT模式下,另外準(zhǔn)備一套與生產(chǎn)環(huán)境一致的試運行環(huán)境基本上是不可能的。而在云計算技術(shù)下,應(yīng)用部署在云平臺上,云平臺即可以提供現(xiàn)網(wǎng)環(huán)境,也可以同時提供試運行環(huán)境,并且當(dāng)試運行完成后,可以直接通過云平臺的相關(guān)服務(wù)能力將試運行環(huán)境轉(zhuǎn)換為正式運行環(huán)境。
2.3.5 運行階段
云平臺為應(yīng)用提供正式運行環(huán)境,除虛擬機/Docker、基礎(chǔ)網(wǎng)絡(luò)、塊存儲資源以外,還提供負載均衡、安全防護、備份等能力,全面保障應(yīng)用的穩(wěn)定運行。
2.3.6 運維階段
應(yīng)用上線運行后,運維功能則是日常工作重點。云平臺可以不僅對應(yīng)用、服務(wù)器、中間件進行性能指標(biāo)采集、告警處理,并且可以通過根據(jù)性能指標(biāo)定義彈性調(diào)度策略,實現(xiàn)應(yīng)用、資源的自動伸縮。
圖2 灰度發(fā)布過程示意圖
灰度發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。AB Test就是一種灰度發(fā)布方式,讓一部分用戶繼續(xù)用A,一部分用戶開始用B,然后逐步擴大范圍,把所有用戶都遷移到B上面來。灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,保證業(yè)務(wù)的連續(xù)性,在初始灰度的時候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。圖2為灰度發(fā)布過程示意圖。
在應(yīng)用全生命周期自動化管理過程中,引入灰度發(fā)布,將試運行環(huán)境切換到正式運行環(huán)境。實現(xiàn)灰度發(fā)布的關(guān)鍵是負載均衡的精細化管理。
在云平臺中提供ELB(彈性負載均衡服務(wù)),在灰度發(fā)布過程中控制ELB的分發(fā)策略及real host配置。具體步驟有以下幾點。
(1)配置ELB的分發(fā)策略為保持源IP或Session訪問,保證現(xiàn)有用戶的訪問到原有系統(tǒng)中。
(2)將新系統(tǒng)的real host配置到ELB中。
(3)減少舊系統(tǒng)的real host,并回收舊系統(tǒng)所使用的虛擬機/Docker等資源。
利用性能監(jiān)控工具獲取應(yīng)用所有虛擬機、Docker的CPU、內(nèi)存的性能數(shù)據(jù),結(jié)合具體應(yīng)用設(shè)置的彈性調(diào)整條件進行分析,當(dāng)連續(xù)N次CPU利用率高于設(shè)定的高閥值時,觸發(fā)擴充虛擬機、Docker動作;當(dāng)連續(xù)N次CPU利用率低于設(shè)定的低閥值時,觸發(fā)縮減虛擬機、Docker動作。通過此方法來實現(xiàn)自動運維。
利用云平臺提供的資源、監(jiān)控和管理的手段,借助DevOps方法來實現(xiàn)應(yīng)用上線各階段的自動化管理,即可以保證質(zhì)量,又可以從一定程序縮減應(yīng)用上線周期;利用云平臺提供的統(tǒng)一環(huán)境,確保應(yīng)用上線各階段環(huán)境的一致,從而更好支持應(yīng)用各過程自動化管理,有效提升應(yīng)用上線的可靠程度。
通過云平臺的資源管理及安全機制,配置與現(xiàn)網(wǎng)系統(tǒng)一致的運行環(huán)境,試運行完成后通過設(shè)置直接切換至現(xiàn)網(wǎng)運行環(huán)境.通過彈性負載均衡服務(wù)以及其他云平臺服務(wù),共同完成應(yīng)用灰度發(fā)布,保證業(yè)務(wù)系統(tǒng)穩(wěn)定連續(xù)。
DevOps自動化運維平臺應(yīng)用推廣簡單,實施需要的硬件設(shè)備,采用x86架構(gòu),硬件成本極大縮減,軟件能力和數(shù)據(jù)庫能力上又能實現(xiàn)傳統(tǒng)架構(gòu)無法達到的線性擴展的能力,應(yīng)用能力開放得到極大提升,支持中間件、Web應(yīng)用、數(shù)據(jù)庫等多方應(yīng)用的靈活部署。因此對支撐4G業(yè)務(wù),流量經(jīng)營的能力支撐成本極大縮小。