阿里技術實戰 數十萬雲伺服器如何高效運維?

2022-06-15 11:48:11 字數 4326 閱讀 1395

上雲後需要運維嗎?答案是:當然需要。

上雲確實簡化了一部分的運維工作,比如傳統it中伺服器的日常運維等工作都交由雲服務商來完成了。但隨著雲上產品種類的不斷豐富和規模的不斷擴大,雲上資源如何高效運維正逐漸成為運維人員的挑戰。

在剛剛落幕的qcon全球軟體開發大會(上海站)2020的「彈性工程與運維」專題中,阿里雲高階技術專家趙昱(巴梨)針對雲上運維話題,分享了阿里經濟體全面上雲後,如何實現雲上數十萬臺的ecs例項自動化運維的實踐與經驗,本文根據其演講整理。 

阿里雲高階技術專家趙昱 

雲上運維的四大挑戰

隨著雲計算的普及和發展,越來越多的企業選擇上雲。近幾年,阿里經濟體在全面上雲,在雲上運維方面與大多數企業遇到的問題類似,總結來說主要是來自以下四個方面:  

我們知道,傳統方式下資源的分配有專門的資源運營團隊負責,專案開發團隊只負責使用資源。但是隨著業務規模的不斷擴大,這種管理方式基本上是不可行的,這時候需要通過分權將基礎配置管理權交給業務專案組自行承擔,而這種運維模式的轉變對企業雲上資源管理也提出了挑戰。

事實上,阿里經濟體雲上運維也經歷了人肉運維到標準化、資料化和流程化運維的過程。直到2023年,內部雲上資源管理平台「宙斯運維系統」的雛形基本形成,實現了運維能力和經驗的標準化、流程化和系統化。隨著資源管理規模的日益龐大和需求多樣化,宙斯運維系統隨後又接管了雲上資源的管控工作。

數十萬雲伺服器如何高效運維?

當前,宙斯運維系統管理著阿里集團內部數百個業務方的20多種雲上產品和資源,包括數十萬臺的ecs例項,不僅為各業務方提供了資源管理和運維能力,而且還提供了成本分析和治理能力。

圖:宙斯運維平台整體架構

整體來說,宙斯運維平台包含資源管理、系統運維、應用運維、監控管理和成本分析五大模組。向上通過控制台和openapi為業務方提供服務,向下依賴阿里雲平台的雲監控、資源編排、運維編排、標籤系統、彈性伸縮、運維通道和財務系統等服務,來管理日誌服務、雲伺服器、網路、物件儲存等眾多雲上資源。

賬號管理

因為歷史原因,宙斯運維平台支援獨立大賬號和託管賬號的兩種賬號模式並存。獨立大賬號是宙斯系統運維平台在阿里雲平台的服務賬號,賬號下管理非常多的業務方的資源,業務方將運維功能全部託管到宙斯,因為可以減少很多前置的工作,所以獨立大賬號是我們推薦業務方的方法。另外,因為是服務賬號,不允許業務方直接登入的,業務方只能通過白屏化入口進行操作,減少了操作失誤風險。

對於託管賬號,它是在宙斯運維平台之前的存量運維賬號,為了幫助業務方更好地管理這些存量賬號,宙斯運維平台提供了賬號託管服務,這些存量賬號授予宙斯服務賬號的管理員許可權,因為託管賬號的主子賬號與集團的登入系統打通,運維人員可以直接登入來管理。

許可權管理

許可權管理的主要思路是進行應用分組,應用分組以角色進行許可權區分,給予人相應的應用上的角色。

我們給予應用owner、開發、運維和安全等角色,對不同的角色予以不同的許可權 。owner角色擁有應用下資源管理的上帝許可權,也負責審批工作;開發人員是日常ci工作,以及日常、預發環境的測試工作;運維人員擁有線上發布審批的能力;安全人員主要負責系統運維工作,包括安全掃瞄、**掃瞄等安全工作。

這裡所有的雲資源都是通過標籤掛載到相應的應用上,通過這樣的乙個許可權管理,管理員不僅可以在人的維度上可以看到有許可權的應用,也可以應用維度上看到有許可權的人。

資源分組

基於阿里雲的標籤系統,宙斯運維系統支援資源按很多個維度分類,比如按部門、環境、region等,宙斯運維系統給建立的資源打上相應的標籤來方便業務方進行資源的查詢、管理和運維,通過標籤管理的模式可以很好地對無序化的資源進行運維和監控、甚至是資源分賬。

對於託管賬號,可以通過api操作,系統通過解析離線的雲監控訊息通知,讓業務方的標籤是按照一定的規範來設定,監聽到資料變化之後再同步到宙斯和cmdb中。

資源交付

對於資源交付來說,最大的挑戰是雲上資源是多區域、多型別部署的。阿里雲平台目前有上百種資源型別,如果每個資源都通過寫**、寫api的方式來進行操作,不僅複雜、效率還很低。而且,大多數的業務場景不是單字元的交付,若是挨個進行組合來操作,也非常耗時。業務方一般要求場景化交付,大多數業務場景是有乙個規範化的常用正規化,是可以通過場景化的交付大幅提公升資源交付方式。

針對這類場景化交付的需求,一開始其實使用的是寫指令碼的方式來操作的,但耗費大量的精力和人力,效率比較低下。為了應對多種型別的資源分配場景,宙斯運維系統引入了infrastructure as code機制進行資源編排,開源的terraform也是同樣的思路。

這裡,宙斯運維系統採用的是阿里雲提供的ros資源編排工具,同時引入集團審批流,將資源部署標準化、流程化。宙斯運維系統將常用場景抽象成本資源編排模板,通過模板一鍵按照一鍵按場景交付資源,通過模板這樣的方式大幅提公升了我們資源交付的效率,同時也降低了新資源的接入門檻。

運維管理

從運維工作型別來看,運維也是分層的。系統層面的補丁管理、安全掃瞄、安全防護等能力是乙個平台的能力,是不需要業務方來關心,宙斯運維系統將這些能力抽象出來後提供統一的機制來管理。

應用層面,主要涉及到資源的運維和ci/cd。應用資源運維,宙斯運維系統將常用的運維動作抽象成運維編排模板,借助阿里雲運維編排服務進行工作流編排,在定義常用運維場景同時支援業務方自定義運維操作,這樣可以實現運維流程可積累可複製。另外,利用底層能力支援定時、告警、事件觸發的運維操作,進一步提公升運維操作效率。

ci/cd部分,宙斯運維系統主要使用了阿里集團的aone(雲效)系統,支援基於軟體包和映象的分批發布,同時允許自定義操作。

監控告警

從資訊源的角度分類,告警和監控可以分為資源監控、應用監控以及業務監控,越往上監控和告警的準確率越高、但通用性越低。宙斯運維系統實現了多種告警處理方式,通過與監控系統的整合將告警按分組聯絡人分發,比如簡訊、釘釘等資訊;對於自動化的場景,對接了彈性伸縮和運維編排來觸發自動操作,實現自動化運維工作,完成自動化閉環。

診斷和修復 

隨著使用的資源和業務越來越多,內部業務方關於ecs例項、網路等問題的諮詢量逐漸增多,為了提公升問題的解決效率,同時運維平台也需要有自證清白的能力。於是,我們通過與阿里雲內部ecs、網路、作業系統等團隊進行共建,利用歷史資料形成了案例庫、知識庫,再加上專家經驗,我們沉澱了診斷和修復的能力,通過一鍵診斷幫業務方快速定位具體問題。對於一些常見的問題,抽象出常用的修復指令碼,提供一鍵修復能力。

以ecs例項為例,通過例項的監控診斷定位出問題根因,同時我們提供出手動修復方案,同時我們也提供了使用運維編排一鍵自動修復能力,這個過程支援打快照回滾。通過這部分的建設,讓我們日常值班的服務量大幅降低。

成本管理

成本管理的目標主要是成本優化,有很多業務方申請了很多雲伺服器資源,使用中發現其實一些機器是沒怎麼用或是cpu利用率比較低,這就造成了資源的浪費。宙斯運維系統通過成本管理的建設,將成本管理的意識傳遞給到業務方,並推動業務方來完成成本優化。

成本管理的思路裡,我們主要是在事前的卡點和事中的分賬能力來實現。首先,在資源申請時做審批卡點,如果申請的資源規格特別高就會給出一些提示,詢問資源申請是否合理;然後,在資源使用過程中,利用標籤和應用分組的分賬能力,把資源使用費用分攤到相應的部門和專案組,周期性地向業務方提供賬單,財務根據部門的賬單做分析,可以判斷哪些專案是入不敷出的,同時也推動業務方自己去優化資源的使用。比如,是否切換到彈性伸縮上來優化成本,調整資源配置規格進行優化等等,從成本的角度推動業務方來做優化。

總結講師簡介:

趙昱(巴梨),阿里雲高階技術專家。2023年加入阿里雲,先後從事阿里云云郵箱、ram、操作審計、ecs等雲服務的研發,2023年至今參與並主導了運維編排服務的研發,擔任研發負責人的角色。在雲計算及雲上運維有豐富的經驗。

阿里雲伺服器

ssh 使用者名稱 ip位址以下操作都在遠端伺服器上進行操作 ubuntu 16.04 sudo apt get updateapt get install mysql server apt get install libmysqlclient devsudo apt get install red...

阿里雲GPU雲伺服器

既然是基於gpu應用的計算服務,那麼阿里雲的gpu雲伺服器的計算能力又如何呢?計算能力 ga1例項計算性能力 ga1例項最多可提供 4 顆amd s7150 gpu 56 個 vcpu 和 160gb 主機記憶體,以及共計 32gb 的 gpu視訊記憶體 總計提供8192個並行處理核心 最高15 t...

阿里雲伺服器如何連線阿里雲資料庫

環境 阿里雲ubuntu伺服器 阿里雲rds資料庫 問題 如何在阿里雲伺服器的終端使用shell命令連線rds雲資料庫 解決方法 1.阿里雲伺服器安裝mysql sudo apt get install mysql server 如果出現unable to locate package mysql ...