上雲後需要運維嗎?答案是:當然需要。
上雲确實簡化了一部分的運維工作,比如傳統IT中伺服器的日常運維等工作都交由雲服務商來完成了。但随着雲上産品種類的不斷豐富和規模的不斷擴大,雲上資源如何高效運維正逐漸成為運維人員的挑戰。
在剛剛落幕的QCon全球軟體開發大會(上海站)2020的“彈性工程與運維”專題中,阿裡雲進階技術專家趙昱(巴梨)針對雲上運維話題,分享了阿裡經濟體全面上雲後,如何實作雲上數十萬台的ECS執行個體自動化運維的實踐與經驗,本文根據其演講整理。

雲上運維的四大挑戰
随着雲計算的普及和發展,越來越多的企業選擇上雲。近幾年,阿裡經濟體在全面上雲,在雲上運維方面與大多數企業遇到的問題類似,總結來說主要是來自以下四個方面:
第一,規模問題。傳統的Human Ops和寫腳本的管理方式在資源少的情況下是玩得轉的,但是當規模一大就不行了。人肉管理幾十台機器和幾萬台機器是完全不同的概念,再加上雲上資源類型不斷豐富,雲上資源管理和運維的複雜度指數級上升。
第二,安全問題。阿裡經濟體上雲涉及數百個業務方,涉及的運維人員非常的多,如何更好地進行權限控制、審計和審批都既複雜、又非常重要。資料和資源是公司的資産,運維權限過大、增加失誤風險,權限過小、增加管理成本,如何安全地使用雲賬号和資源為管理者帶來極大的挑戰。
第三,效率問題。随着資源規模的增長,如何高效地管理運維、提升研發人員的效率,也是雲上運維必須思考的問題。
第四,成本問題。業務方在成本優化方面的需求比較明顯,包括資源使用人員和财務人員,希望能夠提供不同次元的資源使用賬單,以便為成本優化舉措提供依據。
我們知道,傳統方式下資源的配置設定有專門的資源營運團隊負責,項目開發團隊隻負責使用資源。但是随着業務規模的不斷擴大,這種管理方式基本上是不可行的,這時候需要通過分權将基礎配置管理權交給業務項目組自行承擔,而這種運維模式的轉變對企業雲上資源管理也提出了挑戰。
事實上,阿裡經濟體雲上運維也經曆了人肉運維到标準化、資料化和流程化運維的過程。直到2016年,内部雲上資源管理平台“宙斯運維系統”的雛形基本形成,實作了運維能力和經驗的标準化、流程化和系統化。随着資源管理規模的日益龐大和需求多樣化,宙斯運維系統随後又接管了雲上資源的管控工作。
數十萬雲伺服器如何高效運維?
目前,宙斯運維系統管理着阿裡集團内部數百個業務方的20多種雲上産品和資源,包括數十萬台的ECS執行個體,不僅為各業務方提供了資源管理和運維能力,而且還提供了成本分析和治理能力。
圖:宙斯運維平台整體架構
整體來說,宙斯運維平台包含資源管理、系統運維、應用運維、監控管理和成本分析五大子產品。向上通過控制台和OpenAPI為業務方提供服務,向下依賴阿裡雲平台的雲監控、資源編排、運維編排、标簽系統、彈性伸縮、運維通道和财務系統等服務,來管理日志服務、雲伺服器、網絡、對象存儲等衆多雲上資源。
賬号管理
因為曆史原因,宙斯運維平台支援獨立大賬号和托管賬号的兩種賬号模式并存。獨立大賬号是宙斯系統運維平台在阿裡雲平台的服務賬号,賬号下管理非常多的業務方的資源,業務方将運維功能全部托管到宙斯,因為可以減少很多前置的工作,是以獨立大賬号是我們推薦業務方的方法。另外,因為是服務賬号,不允許業務方直接登入的,業務方隻能通過白屏化入口進行操作,減少了操作失誤風險。
對于托管賬号,它是在宙斯運維平台之前的存量運維賬号,為了幫助業務方更好地管理這些存量賬号,宙斯運維平台提供了賬号托管服務,這些存量賬号授予宙斯服務賬号的管理者權限,因為托管賬号的主子賬号與集團的登入系統打通,運維人員可以直接登入來管理。
權限管理
權限管理的主要思路是進行應用分組,應用分組以角色進行權限區分,給予人相應的應用上的角色。
我們給予應用Owner、開發、運維和安全等角色,對不同的角色予以不同的權限 。Owner角色擁有應用下資源管理的上帝權限,也負責審批工作;開發人員是日常CI工作,以及日常、預發環境的測試工作;運維人員擁有線上釋出審批的能力;安全人員主要負責系統運維工作,包括安全掃描、代碼掃描等安全工作。
這裡所有的雲資源都是通過标簽挂載到相應的應用上,通過這樣的一個權限管理,管理者不僅可以在人的次元上可以看到有權限的應用,也可以應用次元上看到有權限的人。
資源分組
基于阿裡雲的标簽系統,宙斯運維系統支援資源按很多個次元分類,比如按部門、環境、Region等,宙斯運維系統給建立的資源打上相應的标簽來友善業務方進行資源的查找、管理和運維,通過标簽管理的模式可以很好地對無序化的資源進行運維和監控、甚至是資源分賬。
對于托管賬号,可以通過API操作,系統通過解析離線的雲監控消息通知,讓業務方的标簽是按照一定的規範來設定,監聽到資料變化之後再同步到宙斯和CMDB中。
資源傳遞
對于資源傳遞來說,最大的挑戰是雲上資源是多區域、多類型部署的。阿裡雲平台目前有上百種資源類型,如果每個資源都通過寫代碼、寫API的方式來進行操作,不僅複雜、效率還很低。而且,大多數的業務場景不是單字元的傳遞,若是挨個進行組合來操作,也非常耗時。業務方一般要求場景化傳遞,大多數業務場景是有一個規範化的常用範式,是可以通過場景化的傳遞大幅提升資源傳遞方式。
針對這類場景化傳遞的需求,一開始其實使用的是寫腳本的方式來操作的,但耗費大量的精力和人力,效率比較低下。為了應對多種類型的資源配置設定場景,宙斯運維系統引入了Infrastructure As Code機制進行資源編排,開源的Terraform也是同樣的思路。
這裡,宙斯運維系統采用的是阿裡雲提供的ROS資源編排工具,同時引入集團審批流,将資源部署标準化、流程化。宙斯運維系統将常用場景抽象成本資源編排模闆,通過模闆一鍵按照一鍵按場景傳遞資源,通過模闆這樣的方式大幅提升了我們資源傳遞的效率,同時也降低了新資源的接入門檻。
運維管理
從運維工作類型來看,運維也是分層的。系統層面的更新檔管理、安全掃描、安全防護等能力是一個平台的能力,是不需要業務方來關心,宙斯運維系統将這些能力抽象出來後提供統一的機制來管理。
應用層面,主要涉及到資源的運維和CI/CD。應用資源運維,宙斯運維系統将常用的運維動作抽象成運維編排模闆,借助阿裡雲運維編排服務進行工作流編排,在定義常用運維場景同時支援業務方自定義運維操作,這樣可以實作運維流程可積累可複制。另外,利用底層能力支援定時、告警、事件觸發的運維操作,進一步提升運維操作效率。
CI/CD部分,宙斯運維系統主要使用了阿裡集團的Aone(雲效)系統,支援基于軟體包和鏡像的分批釋出,同時允許自定義操作。
監控告警
從資訊源的角度分類,告警和監控可以分為資源監控、應用監控以及業務監控,越往上監控和告警的準确率越高、但通用性越低。宙斯運維系統實作了多種告警處理方式,通過與監控系統的內建将告警按分組聯系人分發,比如短信、釘釘等資訊;對于自動化的場景,對接了彈性伸縮和運維編排來觸發自動操作,實作自動化運維工作,完成自動化閉環。
診斷和修複
随着使用的資源和業務越來越多,内部業務方關于ECS執行個體、網絡等問題的咨詢量逐漸增多,為了提升問題的解決效率,同時運維平台也需要有自證清白的能力。于是,我們通過與阿裡雲内部ECS、網絡、作業系統等團隊進行共建,利用曆史資料形成了案例庫、知識庫,再加上專家經驗,我們沉澱了診斷和修複的能力,通過一鍵診斷幫業務方快速定位具體問題。對于一些常見的問題,抽象出常用的修複腳本,提供一鍵修複能力。
以ECS執行個體為例,通過執行個體的監控診斷定位出問題根因,同時我們提供出手動修複方案,同時我們也提供了使用運維編排一鍵自動修複能力,這個過程支援打快照復原。通過這部分的建設,讓我們日常值班的服務量大幅降低。
成本管理
成本管理的目标主要是成本優化,有很多業務方申請了很多雲伺服器資源,使用中發現其實一些機器是沒怎麼用或是CPU使用率比較低,這就造成了資源的浪費。宙斯運維系統通過成本管理的建設,将成本管理的意識傳遞給到業務方,并推動業務方來完成成本優化。
成本管理的思路裡,我們主要是在事前的卡點和事中的分賬能力來實作。首先,在資源申請時做審批卡點,如果申請的資源規格特别高就會給出一些提示,詢問資源申請是否合理;然後,在資源使用過程中,利用标簽和應用分組的分賬能力,把資源使用費用分攤到相應的部門和項目組,周期性地向業務方提供賬單,财務根據部門的賬單做分析,可以判斷哪些項目是入不敷出的,同時也推動業務方自己去優化資源的使用。比如,是否切換到彈性伸縮上來優化成本,調整資源配置規格進行優化等等,從成本的角度推動業務方來做優化。
總結
本文主要介紹了阿裡經濟體上雲過程中宙斯運維系統如何高效管理雲上資源的經驗,總結來說是通過标準化、流程化、自動化和資料化的方式來實作的,希望能給雲上運維面臨同樣問題的運維人員一些參考。
講師簡介:
趙昱(巴梨),阿裡雲進階技術專家。2014年加入阿裡雲,先後從事阿裡雲雲郵箱、RAM、操作審計、ECS等雲服務的研發,2018年至今參與并主導了運維編排服務的研發,擔任研發負責人的角色。在雲計算及雲上運維有豐富的經驗。