上云后需要運(yùn)維嗎?答案是:當(dāng)然需要。
上云確實簡化了一部分的運(yùn)維工作,比如傳統(tǒng) IT 中服務(wù)器的日常運(yùn)維等工作都交由云服務(wù)商來完成了。但隨著云上產(chǎn)品種類的不斷豐富和規(guī)模的不斷擴(kuò)大,云上資源如何高效運(yùn)維正逐漸成為運(yùn)維人員的挑戰(zhàn)。
云上運(yùn)維的四大挑戰(zhàn)
隨著云計算的普及和發(fā)展,越來越多的企業(yè)選擇上云。近幾年,阿里經(jīng)濟(jì)體在全面上云,在云上運(yùn)維方面與大多數(shù)企業(yè)遇到的問題類似,總結(jié)來說主要是來自以下四個方面:
第一,規(guī)模問題。傳統(tǒng)的 Human Ops 和寫腳本的管理方式在資源少的情況下是玩得轉(zhuǎn)的,但是當(dāng)規(guī)模一大就不行了。人肉管理幾十臺機(jī)器和幾萬臺機(jī)器是完全不同的概念,再加上云上資源類型不斷豐富,云上資源管理和運(yùn)維的復(fù)雜度指數(shù)級上升。
第二,安全問題。阿里經(jīng)濟(jì)體上云涉及數(shù)百個業(yè)務(wù)方,涉及的運(yùn)維人員非常的多,如何更好地進(jìn)行權(quán)限控制、審計和審批都既復(fù)雜、又非常重要。數(shù)據(jù)和資源是公司的資產(chǎn),運(yùn)維權(quán)限過大、增加失誤風(fēng)險,權(quán)限過小、增加管理成本,如何安全地使用云賬號和資源為管理者帶來極大的挑戰(zhàn)。
第三,效率問題。隨著資源規(guī)模的增長,如何高效地管理運(yùn)維、提升研發(fā)人員的效率,也是云上運(yùn)維必須思考的問題。
第四,成本問題。業(yè)務(wù)方在成本優(yōu)化方面的需求比較明顯,包括資源使用人員和財務(wù)人員,希望能夠提供不同維度的資源使用賬單,以便為成本優(yōu)化舉措提供依據(jù)。
我們知道,傳統(tǒng)方式下資源的分配有專門的資源運(yùn)營團(tuán)隊負(fù)責(zé),項目開發(fā)團(tuán)隊只負(fù)責(zé)使用資源。但是隨著業(yè)務(wù)規(guī)模的不斷擴(kuò)大,這種管理方式基本上是不可行的,這時候需要通過分權(quán)將基礎(chǔ)配置管理權(quán)交給業(yè)務(wù)項目組自行承擔(dān),而這種運(yùn)維模式的轉(zhuǎn)變對企業(yè)云上資源管理也提出了挑戰(zhàn)。
事實上,阿里經(jīng)濟(jì)體云上運(yùn)維也經(jīng)歷了人肉運(yùn)維到標(biāo)準(zhǔn)化、數(shù)據(jù)化和流程化運(yùn)維的過程。直到 2016 年,內(nèi)部云上資源管理平臺“宙斯運(yùn)維系統(tǒng)”的雛形基本形成,實現(xiàn)了運(yùn)維能力和經(jīng)驗的標(biāo)準(zhǔn)化、流程化和系統(tǒng)化。隨著資源管理規(guī)模的日益龐大和需求多樣化,宙斯運(yùn)維系統(tǒng)隨后又接管了云上資源的管控工作。
數(shù)十萬云服務(wù)器如何高效運(yùn)維?
當(dāng)前,宙斯運(yùn)維系統(tǒng)管理著阿里集團(tuán)內(nèi)部數(shù)百個業(yè)務(wù)方的 20 多種云上產(chǎn)品和資源,包括數(shù)十萬臺的 ECS 實例,不僅為各業(yè)務(wù)方提供資了源管理和運(yùn)維能力,而且還提供了成本分析和治理能力。
圖:宙斯運(yùn)維平臺整體架構(gòu)
整體來說,宙斯運(yùn)維平臺包含資源管理、系統(tǒng)運(yùn)維、應(yīng)用運(yùn)維、監(jiān)控管理和成本分析五大模塊。向上通過控制臺和 OpenAPI 為業(yè)務(wù)方提供服務(wù),向下依賴阿里云平臺的云監(jiān)控、資源編排、運(yùn)維編排、標(biāo)簽系統(tǒng)、彈性伸縮、運(yùn)維通道和財務(wù)系統(tǒng)等服務(wù),來管理日志服務(wù)、云服務(wù)器、網(wǎng)絡(luò)、對象存儲等眾多云上資源。
賬號管理
因為歷史原因,宙斯運(yùn)維平臺支持獨立大賬號和托管賬號的兩種賬號模式并存。獨立大賬號是宙斯系統(tǒng)運(yùn)維平臺在阿里云平臺的服務(wù)賬號,賬號下管理非常多的業(yè)務(wù)方的資源,業(yè)務(wù)方將運(yùn)維功能全部托管到宙斯,因為可以減少很多前置的工作,所以獨立大賬號是我們推薦業(yè)務(wù)方的方法。另外,因為是服務(wù)賬號,不允許業(yè)務(wù)方直接登錄的,業(yè)務(wù)方只能通過白屏化入口進(jìn)行操作,減少了操作失誤風(fēng)險。
對于托管賬號,它是在宙斯運(yùn)維平臺之前的存量運(yùn)維賬號,為了幫助業(yè)務(wù)方更好地管理這些存量賬號,宙斯運(yùn)維平臺提供了賬號托管服務(wù),這些存量賬號授予宙斯服務(wù)賬號的管理員權(quán)限,因為托管賬號的主子賬號與集團(tuán)的登錄系統(tǒng)打通,運(yùn)維人員可以直接登錄來管理。
權(quán)限管理
權(quán)限管理的主要思路是進(jìn)行應(yīng)用分組,應(yīng)用分組以角色進(jìn)行權(quán)限區(qū)分,給予人相應(yīng)的應(yīng)用上的角色。
我們給予應(yīng)用 Owner、開發(fā)、運(yùn)維和安全等角色,對不同的角色予以不同的權(quán)限 。Owner 角色擁有應(yīng)用下資源管理的上帝權(quán)限,也負(fù)責(zé)審批工作;開發(fā)人員是日常 CI 工作,以及日常、預(yù)發(fā)環(huán)境的測試工作;運(yùn)維人員擁有線上發(fā)布審批的能力;安全人員主要負(fù)責(zé)系統(tǒng)運(yùn)維工作,包括安全掃描、代碼掃描等安全工作。
這里所有的云資源都是通過標(biāo)簽掛載到相應(yīng)的應(yīng)用上,通過這樣的一個權(quán)限管理,管理員不僅可以在人的維度上可以看到有權(quán)限的應(yīng)用,也可以應(yīng)用維度上看到有權(quán)限的人。
資源分組
基于阿里云的標(biāo)簽系統(tǒng),宙斯運(yùn)維系統(tǒng)支持資源按很多個維度分類,比如按部門、環(huán)境、Region 等,宙斯運(yùn)維系統(tǒng)給創(chuàng)建的資源打上相應(yīng)的標(biāo)簽來方便業(yè)務(wù)方運(yùn)進(jìn)行資源的查找、管理和運(yùn)維,通過標(biāo)簽管理的模式可以很好地對無序化的資源進(jìn)行運(yùn)維和監(jiān)控、甚至是資源分賬。
對于托管賬號,可以通過 API 操作,系統(tǒng)通過解析離線的云監(jiān)控消息通知,讓業(yè)務(wù)方的標(biāo)簽是按照一定的規(guī)范來設(shè)置,監(jiān)聽到數(shù)據(jù)變化之后再同步到宙斯和 CMDB 中。
資源交付
對于資源交付來說,最大的挑戰(zhàn)是云上資源是多區(qū)域、多類型部署的。阿里云平臺目前有上百種資源類型,如果每個資源都通過寫代碼、寫 API 的方式來進(jìn)行操作,不僅復(fù)雜、效率還很低。而且,大多數(shù)的業(yè)務(wù)場景不是單字元的交付,若是挨個進(jìn)行組合來操作,也非常耗時。業(yè)務(wù)方一般要求場景化交付,大多數(shù)業(yè)務(wù)場景是有一個規(guī)范化的常用范式,是可以通過場景化的交付大幅提升資源交付方式。
針對這類場景化交付的需求,一開始其實使用的是寫腳本的方式來操作的,但耗費大量的精力和人力,效率比較低下。為了應(yīng)對多種類型的資源分配場景,宙斯運(yùn)維系統(tǒng)引入了 Infrastructure As Code 機(jī)制進(jìn)行資源編排,開源的 Terraform 也是同樣的思路。
這里,宙斯運(yùn)維系統(tǒng)采用的是阿里云提供的 ROS 資源編排工具,同時引入集團(tuán)審批流,將資源部署標(biāo)準(zhǔn)化、流程化。宙斯運(yùn)維系統(tǒng)將常用場景抽象成本資源編排模板,通過模板一鍵按照一鍵按場景交付資源,通過模板這樣的方式大幅提升了我們資源交付的效率,同時也降低了新資源的接入門檻。
運(yùn)維管理
從運(yùn)維工作類型來看,運(yùn)維也是分層的。系統(tǒng)層面的補(bǔ)丁管理、安全掃描、安全防護(hù)等能力是一個平臺的能力,是不需要業(yè)務(wù)方來關(guān)心,宙斯運(yùn)維系統(tǒng)將這些能力抽象出來后提供統(tǒng)一的機(jī)制來管理。
應(yīng)用層面,主要涉及到資源的運(yùn)維和 CI/CD。應(yīng)用資源運(yùn)維,宙斯運(yùn)維系統(tǒng)將常用的運(yùn)維動作抽象成運(yùn)維編排模板,借助阿里云運(yùn)維編排服務(wù)進(jìn)行工作流編排,在定義常用運(yùn)維場景同時支持業(yè)務(wù)方自定義運(yùn)維操作,這樣可以實現(xiàn)運(yùn)維流程可積累可復(fù)制。另外,利用底層能力支持定時、告警、事件觸發(fā)的運(yùn)維操作,進(jìn)一步提升運(yùn)維操作效率。
CI/CD 部分,宙斯運(yùn)維系統(tǒng)主要使用了阿里集團(tuán)的 Aone(云效) 系統(tǒng),支持基于軟件包和鏡像的分批發(fā)布,同時允許自定義操作。
監(jiān)控告警
從信息源的角度分類,告警和監(jiān)控可以分為資源監(jiān)控、應(yīng)用監(jiān)控以及業(yè)務(wù)監(jiān)控,越往上監(jiān)控和告警的準(zhǔn)確率越高、但通用性越低。宙斯運(yùn)維系統(tǒng)實現(xiàn)了多種告警處理方式,通過與監(jiān)控系統(tǒng)的集成將告警按分組聯(lián)系人分發(fā),比如短信、釘釘?shù)刃畔?;對于自動化的場景,對接了彈性伸縮和運(yùn)維編排來觸發(fā)自動操作,實現(xiàn)自動化運(yùn)維工作,完成自動化閉環(huán)。
診斷和修復(fù)
隨著使用的資源和業(yè)務(wù)越來越多,內(nèi)部業(yè)務(wù)方關(guān)于 ECS 實例、網(wǎng)絡(luò)等問題的咨詢量逐漸增多,為了提升問題的解決效率,同時運(yùn)維平臺也需要有自證清白的能力。于是,我們通過與阿里云內(nèi)部 ECS、網(wǎng)絡(luò)、操作系統(tǒng)等團(tuán)隊進(jìn)行共建,利用歷史數(shù)據(jù)形成了案例庫、知識庫,再加上專家經(jīng)驗,我們沉淀了診斷和修復(fù)的能力,通過一鍵診斷幫業(yè)務(wù)方快速定位具體問題。對于一些常見的問題,抽象出常用的修復(fù)腳本,提供一鍵修復(fù)能力。
以 ECS 實例為例,通過實例的監(jiān)控診斷定位出問題根因,同時我們提供出手動修復(fù)方案,同時我們也提供了使用運(yùn)維編排一鍵自動修復(fù)能力,這個過程支持打快照回滾。通過這部分的建設(shè),讓我們?nèi)粘V蛋嗟姆?wù)量大幅降低。
成本管理
成本管理的目標(biāo)主要是成本優(yōu)化,有很多業(yè)務(wù)方申請了很多云服務(wù)器資源,使用中發(fā)現(xiàn)其實一些機(jī)器是沒怎么用或是 CPU 利用率比較低,這就造成了資源的浪費。宙斯運(yùn)維系統(tǒng)通過成本管理的建設(shè),將成本管理的意識傳遞給到業(yè)務(wù)方,并推動業(yè)務(wù)方來完成成本優(yōu)化。
成本管理的思路里,我們主要是在事前的卡點和事中的分賬能力來實現(xiàn)。首先,在資源申請時做審批卡點,如果申請的資源規(guī)格特別高就會給出一些提示,詢問資源申請是否合理;然后,在資源使用過程中,利用標(biāo)簽和應(yīng)用分組的分賬能力,把資源使用費用分?jǐn)偟较鄳?yīng)的部門和項目組,周期性地向業(yè)務(wù)方提供賬單,財務(wù)根據(jù)部門的賬單做分析,可以判斷哪些項目是入不敷出的,同時也推動業(yè)務(wù)方自己去優(yōu)化資源的使用。比如,是否切換到彈性伸縮上來優(yōu)化成本,調(diào)整資源配置規(guī)格進(jìn)行優(yōu)化等等,從成本的角度推動業(yè)務(wù)方來做優(yōu)化。
總 結(jié)