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