天天看點

不斷超越的排程系統:如何撐住9年雙11交易峰值800倍增長

統一排程體系

始于 2011 年建設的 Sigma 是服務阿裡巴巴線上業務的排程系統,圍繞 Sigma 有一整套以排程為中心的叢集管理體系。

不斷超越的排程系統:如何撐住9年雙11交易峰值800倍增長

叢集管理和排程系統 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 容器上,它負責把伺服器資源進行配置設定并運作線上任務,離線任務填入其空白區,保證實體機資源利用達到飽和,這樣就完成了兩種任務的混合部署。

不斷超越的排程系統:如何撐住9年雙11交易峰值800倍增長

阿裡巴巴混合部署架構圖

混部的關鍵技術

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

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

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

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

• 在記憶體隔離上,擁有 CGroup 隔離 /OOM 優先級;Bandwidth Control 減少離線配額實作帶寬隔離。

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

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

線上叢集管理上的關鍵技術

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

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

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

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

• 整個站點的快速擴容縮容,彈性記憶體技術等。

不斷超越的排程系統:如何撐住9年雙11交易峰值800倍增長

混合部署-引入計算任務提升日常資源效率

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

不斷超越的排程系統:如何撐住9年雙11交易峰值800倍增長

混合部署-分時複用進一步提升資源效率

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

PouchContainer 容器和容器化的進展

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

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

不斷超越的排程系統:如何撐住9年雙11交易峰值800倍增長

PouchContainer 定位

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

不斷超越的排程系統:如何撐住9年雙11交易峰值800倍增長

PouchContainer 架構圖

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

雲化架構

不斷超越的排程系統:如何撐住9年雙11交易峰值800倍增長

雙 11 雲化架構運維體系

雲化架構運維體系

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

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

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

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

原文釋出時間為:2018-08-23

本文作者:叔同

本文來自雲栖社群合作夥伴“

技術瑣話

”,了解相關資訊可以關注“

”。

繼續閱讀