后羿射日般的精準-阿里雲ECS排程是如何煉成的

抹達發表於2018-05-03

1.引子
彈性計算服務ECS(Elastic Compute Service)是阿里雲營收的中流砥柱和流量擔當。作為各行業客戶新業務和技術創新的發動機和使能者,ECS不僅能在10分鐘內交付出一箇中等體量網際網路公司所需的全部計算力,更能承載阿里集團雙十一極大的峰值彈性需求以及網際網路巨頭客戶業務高峰所需的計算力,幫助所有使用者打破計算力邊界的限制。而默默工作在舞臺背後的正是ECS的排程系統,那個傳說中的“后羿”。作為一個建立交付了不計其數的虛擬機器的資源排程系統,后羿帶來的感覺就像蒙娜麗莎的微笑,神祕而好奇。今天就讓我們扒一扒“后羿”的前世與今生。

2.上古起源:后羿誕生
時光機回到2009年,那時全球的科技公司都在佈局著雲端計算,演繹的精彩絕倫、百家爭鳴,一如當下風口上的區塊鏈、人工智慧和新零售。也就在這一年,阿里雲初試鶯啼,在雲端計算領域開天闢地,自主研發了盤古、女媧、神農、夸父和伏羲。這些上古大神共同組成了阿里雲的雲端計算基礎系統平臺–飛天Apsara系統。后羿的誕生也就水到渠成,它基於飛天將計算(Host)、網路(IP)和儲存(Pangu塊儲存)等資源統一排程並通過虛擬化技術生產出一臺臺可交付給使用者使用的虛擬伺服器。2010年5月,第一個ECS叢集在北京上線了。此時的后羿還是一個單純的小朋友,乾的活就是虛擬機器生產線的流程控制,頭腦(排程策略)也相對比較簡單,因為一個叢集內都是同等機型、同一網路Pod、同一個Pangu儲存,所以基本都是按靜態資源分配的方式進行排程選擇。

3.工業革命:野蠻生長
唯快不破!是,就是這麼快進入“工業革命”了!雖然後羿還沒來得及懵懂幾下,但因為ECS上線之後,業務量發展非常迅猛,妥妥地成為阿里雲增長最快的業務,沒有之一。ECS很快用事實證明以虛擬機器的方式出售計算力是雲端計算商業化最合適的路徑,它好比工業時代的蒸汽機,推動著阿里雲進入了野蠻生長的時代。

ECS的規模很快達到了近百個飛天叢集,而且每週都在繼續部署新的叢集,加上每週至少釋出一個新版本,這樣的節奏讓我們原來維護和升級后羿系統的同學不堪重負。哇,那些年一起使出洪荒之力的同學,還記得苦苦掙扎的模樣嗎?伴隨著規模的增長,后羿面對的簡單小世界一下子變成了星辰大海,排程面臨的複雜度與日俱增,需要突破網路Pod,需要突破機房。成長的煩惱不可避免,新的系統架構設計目標,大Region級別的資源管理排程能力,快速迭代開發……

好在借力集團的技術支撐,后羿採用了分散式服務的技術逐步重構演進。這期間最大的挑戰是業務在發展,不可能停下來給我們幾個月的時間去完成這個任務。我們使用先搭框架、再小步遷移的方案,在不影響業務發展的前提下,把一個一個功能模組,從功能遷移到資料遷移,逐步完成系統升級切換,用時髦的話講這是給飛行中的飛機換引擎。換了引擎的后羿,從原來的單叢集管控系統,升級到了基於分散式服務架構實現的大Region多機房管控系統;排程策略由原來的叢集內簡單的資源分配模型升級到目前經典的過濾器+權重因子評分模型;管理規模也由一套管控對應最大數百臺物理機的叢集變成了目前的一套管控可以管理數萬物理機規模的叢集。經過工業革命的錘鍊,我們的后羿小夥子長大成人了。

這個時期ECS逐步完善的上層業務系統,主要提供了幾大能力:
標準化的ECS Open API介面,對接官網售賣和API使用者;
售賣約束,接入阿里雲計費系統,實現了ECS特有的計費模式(包年包月、按量付費等);
在叢集粒度配置業務屬性和售賣規格,按使用者的需求排程叢集;
基本的庫存服務和水位控制。

4.資訊時代:漸入佳境
如果說工業革命時代是規模這個單維度縱向量的高速發展,那麼資訊時代則是個性化、多元化的多維度發展。一方面,ECS吸引了越來越豐富的客戶群體,需求越來越多樣化,包括不同的價格需求、穩定性需求、地域需求等等,這就需要ECS包裝出不同特點的產品滿足不同的客戶場景。另一方面,ECS相關的技術爆炸也帶來了“百家爭鳴”的盛況:虛擬網路團隊重點推出了使用者可以定製的VPC網路;塊儲存團隊推出高效能的SSD雲盤和高價效比的混合SSD雲盤,而ESSD雲盤則實現了價效比和高效能的雌雄同體;虛擬化團隊從最初的Xen全面遷移到KVM,同時推出了異構計算GPU、FPGA虛擬化技術,並開始自研新一代的彈性裸金屬雲伺服器(神龍)。如此多的新產品和新特性對接的是底層幾十種物理機型、多種網路卡和網路架構、多種虛擬化方案和虛擬儲存以及多種版本的虛擬網路。實現產品到資源的精準排程,並最大化資源使用效率,這,就是資訊時代下的后羿系統需要提供的基本能力。

在野蠻生長期,叢集級的排程由上層業務層負責、叢集內的排程由后羿負責,因為當時每個叢集部署一種業務,團隊的設定也是按這樣分兩層。但現在為了支撐豐富的產品形態和優化庫存效率,同一叢集內的每個物理機都可能售賣不同的產品規格,原來那種分層的排程顯然已經不合時宜了。我們進行了一次合體手術,重新定義了上下系統的職責分工,上層業務系統負責業務功能,下層后羿系統負責所有的排程相關邏輯。統一了排程邏輯,不僅僅大大提高了后羿的排程能力,同時可以讓排程技術驅動產生了更多豐富的產品形態。列舉下這個時期排程技術主要支撐的系統功能和產品:

彈無虛發-的精準排程
后羿基於Tag標籤對資源進行分組和篩選,可在AZ大範圍內實現精細的產品規格排程。豐富的權重因子,讓后羿可以在多個目標下權衡出最優的排程決策,最佳配比裝箱(最少碎片)那是最低要求,其他的隨便舉幾個例子:
Deployment Set:滿足使用者自定義的部署位置要求,例如物理機粒度打散幾個VM
資源消費打散:保障效能SLA,提升使用者體驗
客戶VM打散
機架功耗平衡
……

神機妙算的庫存精細管理
其實VM排程只是后羿的業務愛好,庫存管理才是后羿的本職工作。由於產品形態的多樣性,同一個地域同一個產品規格按不同付費型別、不同的付費時間計算出來的庫存資料都是不同的!很多人知道電商的必殺技之一就是庫存和供應鏈管理,后羿其實就是一個在網上賣VM的掌櫃而已啦。他在背後可是耍了很多小聰明的:
庫存水位控制:保障每個可用區的每個產品的在接近斷供時可以保障剛需彈性擴容和升級需求;
庫存共享:應付多種產品的不時之需;
庫存預測:預測銷售並相應地進行庫存調配

賣跳樓價的競價例項
1折的跳樓價后羿掌櫃也敢賣?!是的,他已經賣好久了。這是一種叫競價例項的遊戲,而在遊戲中坐莊的正是后羿。說白了,他就是把那些暫時空在那裡的資源拿出來臨時賣一下。為什麼是”臨時“?因為后羿在庫存充裕時才賣競價例項,庫存緊張時就要收回去。但是回收例項也是有講究的,不是隨便回收的,比如要保證至少執行1小時,要提前5分鐘通知,如此等等。那為什麼要競價?在資源緊張的地區多賣點錢?其實更重要的是跟庫存的聯動,是一種價格槓桿,讓客戶主動去選擇價格便宜庫存充足的地區和規格。這其實就是排程客戶,背後的道道其實真不少。

火中取栗的效能突發例項
競價例項雖價格便宜,量又足, 無奈的是因為它會被隨時中止釋放,所以適合的業務場景有限或者需要技術能力架構適配才能愉快使用。 有沒有價格便宜,又不用擔心被釋放的高價效比例項型別呢?價格便宜、服務有保障的效能突發例項瞭解一下。這是后羿掌櫃和ECS強大的虛擬化團隊的一次高水平運作,可謂火中取栗。但在強大的技術保障下,后羿把一個物理執行緒掰成小片片拿出來賣,而且還能保障SLA。計算力在空閒時積攢人品(Credit),在需要突發計算力時來消費人品(Credit),未來還能拿錢來買Credit。

  1. 智慧未來:演繹神話
    未來的大門已然開啟,智慧的時代已經到來。在經歷了野蠻生長和豐富功能的階段後,后羿步入了深水區,需要更多的智慧和更廣闊的視野來精耕細作。雲端計算的核心競爭力之一就是價效比,后羿未來要做的就是資料驅動的全鏈路、精細化的庫存調配和排程一體化的大閉環,並在各個環節上挖掘使用更智慧的方法帶來的紅利,從資料的視覺化、到運營的自動化到最後實現綜合的智慧化。

后羿的故事還在繼續。伴隨著ECS業務的發展,風風雨雨的路上,我們眼裡一路奇峰異景,執著前進!塊儲存、虛擬化、虛擬化網路、ECS管控,一群有情有義的兄弟姐妹,一個凝聚力彪悍的團隊。當然,后羿是站在了巨人的肩膀上,他的成長離不開飛天雲端計算平臺強大的核心技術和阿里雲各個產品的All-In支援!很慶幸在阿里集團,兄弟團隊無私的合作和幫助,能讓后羿未來真正可以成為一個業界的神話。


相關文章