1. 程式人生 > >阿裏巴巴 Sigma 調度和集群管理系統架構詳解

阿裏巴巴 Sigma 調度和集群管理系統架構詳解

api 崗位 渴望 clas 遷移 表白 img doc 它的

阿裏巴巴 Sigma 調度和集群管理系統架構詳解

技術分享圖片

劃重點

阿裏巴巴 9 年雙 11 經歷下來,交易額增長了 280 倍、交易峰值增長 800 多倍、系統數呈現爆發式增長。系統在支撐雙 11 過程中的復雜度和支撐難度以指數級形式上升。雙 11 峰值的本質是用有限的成本最大化提升用戶體驗和集群吞吐能力,用合理的代價解決峰值。
本文將從阿裏巴巴統一調度體系、混部架構、雲化架構三個方面詳解阿裏是如何支撐如此龐大的系統。


統一調度體系

始於 2011 年建設的 Sigma 是服務阿裏巴巴在線業務的調度系統,圍繞 Sigma 有一整套以調度為中心的集群管理體系。

技術分享圖片

Sigma 有 Alikenel、SigmaSlave、SigmaMaster 三層大腦聯動協作,Alikenel 部署在每一臺物理機上,對內核進行增強,在資源分配、時間片分配上進行靈活的按優先級和策略調整,對任務的時延,任務時間片的搶占、不合理搶占的驅逐都能通過上層的規則配置自行決策。SigmaSlave 可以在本機進行容器 CPU 分配、應急場景處理等。通過本機 Slave 對時延敏感任務的幹擾快速做出決策和響應,避免因全局決策處理時間長帶來的業務損失。SigmaMaster 是一個最強的中心大腦,可以統攬全局,為大量物理機的容器部署進行資源調度分配和算法優化決策。

整個架構是面向終態的設計理念,收到請求後把數據存儲到持久化存儲層,調度器識別調度需求分配資源位置,Slave識別狀態變化推進本地分配部署。系統整體的協調性和最終一致性非常好。我們在 2011 年開始做調度系統,2016 年用 Go 語言重寫,2017 年兼容了 kubernetes API,希望結合生態的力量,共同建設和發展。

混部架構

阿裏巴巴在 2014 年開始推動混部架構,目前已在阿裏巴巴內部大規模部署。在線服務屬於長生命周期、規則策略復雜性高、時延敏感類任務。而計算任務生命周期短、調度要求大並發高吞吐、任務有不同的優先級、對時延不敏感。基於這兩種調度的本質訴求的不同,我們在混合部署的架構上把兩種調度並行處理,即一臺物理機上可以既有 Sigma 調度又有 Fuxi 調度,實現基礎環境統一。Sigma 調度是通過 SigmaAgent 啟動 PouchContainer 容器。Fuxi 也在這臺物理機上搶占資源,啟動自己的計算任務。所有在線任務都在 PouchContainer 容器上,它負責把服務器資源進行分配並運行在線任務,離線任務填入其空白區,保證物理機資源利用達到飽和,這樣就完成了兩種任務的混合部署。


技術分享圖片

混部的關鍵技術

內核資源隔離上的關鍵技術

  • 在 CPU HT 資源隔離上,做了 Noise Clean 內核特性,解決在 / 離線超線程資源爭搶問題。

  • 在 CPU 調度隔離上,CFS 基礎上增加 Task Preempt 特性,提高在線任務調度優先級。

  • 在 CPU 緩存隔離上,通過 CAT,實現在、離線三級緩存 (LLC) 通道隔離 (Broadwell 及以上)。

  • 在內存隔離上,擁有 CGroup 隔離 /OOM 優先級;Bandwidth Control 減少離線配額實現帶寬隔離。

  • 在內存彈性上,在內存不增加的情況下,提高混部效果,在線閑置時離線突破 memcg limit;需要內存時,離線及時釋放。

  • 在網絡 QoS 隔離上,管控打標為金牌、在線打標為銀牌、離線打標為銅牌,分級保障帶寬。

在線集群管理上的關鍵技術

  • 對應用的內存、CPU、網絡、磁盤和網絡 I/O 容量進行畫像,知道它的特征、資源規格需求,不同的時間對資源真實使用情況,然後對整體規格和時間進行相關性分析,進行整體調度優化。

  • 親和互斥和任務優先級的分配,哪種應用放在一起使整體計算能力比較少、吞吐能力比較高,這是存在一定親和性。

  • 不同的場景有不同的策略,雙 11 的策略是穩定優先,穩定性優先代表采用平鋪策略,把所有的資源用盡,讓資源層全部達到最低水位。日常場景需要利用率優先,“利用率優先” 指讓已經用掉的資源達到最高水位,空出大量完整資源做規模化的計算。

  • 應用做到自動收縮、垂直伸縮、分時復用。

  • 整個站點的快速擴容縮容,彈性內存技術等。

    技術分享圖片

混合部署指將計算任務引入在線服務集群以提升日常資源效率。把離線任務引入後,CPU 平均利用率從 10% 上升到 40% 以上,同時時延敏感類服務的延遲影響小於 5%,屬於完全可接受範圍。目前我們整個混部集群已達到數千臺的規模,經過了交易核心鏈路雙 11 大促的驗證。這項優化可以為日常節省超過 30% 的服務器。今年會擴大 10 倍的部署規模,取得規模化收益。

技術分享圖片

通過分時復用,達到進一步提升資源效率的效果。上圖中的曲線是我們某個應用的流量曲線。它是非常有規律的 , 左邊代表晚上波谷期,右邊代表白天處於波峰期。正常的混部指占用圖中藍色陰影部分的資源把利用率提高到 40%,彈性分時復用技術是指對應用畫像找到應用流量波谷期,對應用縮容,大量釋放內存和 CPU,調度更多計算任務。通過這項技術,把平均 CPU 利用率提升到 60% 以上。

PouchContainer 容器和容器化的進展

全面容器化是提升運維能力、統一調度的關鍵技術。首先介紹一下阿裏巴巴內部容器產品 PouchContainre。它從 2011 年開始建設和上線,基於 LXC,在 2015 年初開始吸收 Docker 鏡像功能和並兼容容器標準。阿裏巴巴的容器非常有特點,它結合了阿裏內核,大幅度提高了安全隔離性,目前以百萬級規模部署於阿裏集團內部。

再來了解一下 PouchContainer 的發展路線。以前用的是虛擬機的虛擬化技術,虛擬化技術過渡到容器技術面臨著很多運維體系的挑戰。運維體系的遷移有很大的技術成本。我們做到了阿裏內部運維和應用視角無縫遷移,有獨立 IP,能夠 ssh 登錄,有獨立的文件系統和資源隔離使用量可見性。2015 年以後,阿裏巴巴引入容器標準,形成了新的一套容器 PouchContainer 並集成到整個運維體系。


技術分享圖片

PouchContainer 的隔離性非常好,是富容器,可以登錄,看到容器內進程自己占的資源量,有多少進程,進程掛了容器是不會掛的,可以運行很多的進程。兼容性很好, 舊版本內核也支持,對利舊很有幫助。同時經過了百萬級容器部署的規模化驗證,我們研發了一套 P2P 鏡像分發機制,大幅度提升分發效率。同時兼容了業界更多標準,推動標準的建設,支持 RunC 、RunV 、RunLXC 等,經過百萬級容器規模的考驗,穩定高效,是企業全面容器化的最佳選擇。

技術分享圖片

PouchContainer 的結構是比較清晰的,Pouchd 如何跟 kubelet、swarm、Sigma 交互。在存儲上跟業界一起建設了 CSI 標準。支持分布式存儲如 ceph、pangu。在網絡上使用 lxcfs 增強隔離性,支持多種標準。

目前 PouchContainer 化覆蓋了阿裏的大部分 BU,2017 年達到百萬級部署,在線業務達到 100% 容器化,計算任務也開始容器化,它拉平了異構平臺的運維成本。覆蓋運行模式,多種編程語言,DevOps 體系。PouchContainer 覆蓋了阿裏幾乎所有業務板塊如螞蟻、交易、中間件等等。

PouchContainer 於 2017 年 10 月 10 號宣布開源,11 月 19 日正式開源,計劃在 2018 年 03 月發布第一個大版本。我們希望通過 PouchContainer 的開源推動容器領域的發展和標準的成熟,給業界提供差異化有競爭力的技術選擇。不僅方便傳統 IT 企業利舊,老的基礎設施也同樣能夠享受雲源生技術帶來的好處和優勢,而且方便新的 IT 企業享受規模化穩定性和多標準兼容性帶來的優勢。

PouchContainer 開源地址:https://github.com/alibaba/pouch

雲化架構

技術分享圖片

雲化架構運維體系

將集群分為在線任務集群、計算任務集群和 ECS 集群。資源管理,單機運維、狀況管理,命令通道、監控報警這類基礎運維體系已經打通。在雙 11 場景中,我們會在雲上劃出一個獨立的區域與其他場景互通。在互通區域,Sigma 調度可以到計算集群服務器裏申請資源,生產 Pouch 容器,也可以到 cloud open API 去申請 ECS,生產出容器的資源。在日常的場景中 Fuxi 可以到 sigma 裏申請資源,創建需要的容器。

在雙 11 場景中,利用規模化運維系統在容器上構建大量在線服務,包括業務層的混合部署,每個集群都有 online service 和有狀態服務及大數據分析。阿裏雲的獨占集群也部署了在線服務和有狀態的數據服務,做到了 datacenter as a computer,多個數據中心像一臺計算機一樣來管理,實現跨多個不同的平臺來調度業務的發展所需要的資源。構建了混合雲用極低的成本拿到服務器,解決有沒有的問題。

先有服務器規模,再通過分時復用和混合部署來大幅度提升資源利用率。真正實現了彈性資源平滑復用任務靈活混合部署,用最少的服務器最短的時間和用最優效率完成業務容量目標。通過這一套雲化架構,我們在雙 11 實現了新增 IT 成本降低 50%,使日常 IT 成本下降 30%,帶來了集群管理和調度領域的技術價值爆發,也說明容器、編排調度技術的流行是一種必然。

阿裏調度系統團隊,致力於打造全球效率最優的調度和集群管理系統,通過企業級容器和容器平臺建設最優雲化解決方案。期待和業界同仁一起努力,降低整個行業的IT成本,加速企業的創新發展。





叔同(丁宇),阿裏巴巴資深技術專家,8 次參與雙 11 作戰,阿裏高可用架構、雙 11 穩定性負責人,阿裏容器、調度、集群管理、運維技術負責人。

阿裏巴巴調度系統團隊為阿裏巴巴經濟體提供調度、容器和集群管理基礎設施,推動阿裏巴巴全面雲化效率成本最優,為阿裏經濟體和雲業務提供充足的技術競爭力。致力於打造全球領先、效率最優的調度集群管理系統和高效穩定的企業級富容器引擎。

Pouch 容器團隊為阿裏巴巴經濟體提供基礎設施領域的容器技術,幫助阿裏巴巴全面實現業務容器化,打好集團“雲化”戰略堅實的基礎。團隊致力於打造全球領先、高效穩定的企業級富容器引擎。

一個優秀的團隊永遠都在渴望人才的加入,如果你希望進入技術核心挑戰計算機的極限,請加入我們;如果你希望和專註、優秀的人共事,請加入我們;如果你有一顆對優雅代碼「執著」的內心,請加入我們!

以下崗位永久開放:Golang 工程師、Java 工程師、調度架構師、容器架構師、混部架構師、集群資源管理研發專家、容器 PaaS 平臺技術專家、企業容器平臺解決方案架構師等......

內推通道:[email protected]



阿裏巴巴 Sigma 調度和集群管理系統架構詳解