天天看點

秒級啟動萬個容器,探秘阿裡雲容器鏡像加速黑科技

阿裡雲容器與存儲團隊展開合作,利用DADI加速器支援鏡像按需讀取和P2P分發,實作3.01秒啟動10000個容器,完美杜絕容器冷啟動的數分鐘漫長等待,以及鏡像倉庫大規模并行分發場景下的網絡擁堵。

年關将至,各種年貨節、秒殺商品、倒計時直播即将紛至沓來。這些業務的共同點都是流量瞬間暴增,必須在立刻籌備大量的伺服器,并在極短時間内擴容容器承接線上流量,避免系統崩潰。除了需要叢集節點的快速擴容,也對應用部署速度提出更高要求。

部署啟動快常被認為是容器的核心優勢之一:本地鏡像執行個體化成容器的時間很短,即“熱啟動”;而在本地無鏡像情況下的“冷啟動”,需要先從鏡像倉庫下載下傳鏡像并解壓縮後才能拉起容器,受網絡和磁盤性能影響較大,耗時數分鐘;大規模批量冷啟動甚至可能導緻Registry因網絡擁堵而無法響應。

針對冷啟動的痛點,阿裡雲推出一個全新存儲引擎DADI加速器,将容器冷啟動耗時縮短至數秒。方案沉澱自阿裡集團内部大規模應用的資料通路加速經驗,曾在雙十一大促中為大規模容器叢集擴容提供了秒級拉起能力。

本次測試場景是在 1000 台4核8G的節點組成的Kubernetes叢集中進行,阿裡雲容器服務Kubernetes (ACK) 能在極短時間内擴容出 1000 台節點worker并加入到Kubernetes 叢集中。ACK 的此能力在應對大促,秒殺,短時流量洪峰時具有亮眼的表現。

同時針對本次測試場景,利用Kubernetes 強大的擴充性和自定義控制器,加快在大規模叢集中建立應用和删除應用的速度,保障了測試在極短時間内友善快捷的進行。

阿裡雲容器團隊聯合存儲團隊研發的DADI加速器在本次測試中啟動10000個容器僅需3.01秒,10秒内啟動了近60000個容器。

秒級啟動萬個容器,探秘阿裡雲容器鏡像加速黑科技

Figure 1 - 1萬個容器的啟動耗時為3.01秒,其中p999分位耗時2.97秒。

同時針對1萬個容器的冷熱啟動進行對比,即在本地有無鏡像緩存對啟動時間的影響,熱啟動耗時2.91秒,其中p999耗時2.56秒

秒級啟動萬個容器,探秘阿裡雲容器鏡像加速黑科技

Figure 2 - 1萬個容器的冷熱啟動耗時對比

DADI冷啟動由于資料按需從P2P網絡中擷取,減輕了磁盤壓力避免發生IO擁堵,是以長尾容器較少。

此外,還進行了限時摸高測試。在10秒的限制時間内利用1000台主控端啟動了59997個容器,在10.06秒時第6萬容器啟動完畢:

秒級啟動萬個容器,探秘阿裡雲容器鏡像加速黑科技

Figure 3 - 限時 10 秒摸高測試

注:上述圖示資料,均在阿裡雲容器團隊的容器服務ACK中進行。為友善獲得每個容器的啟動時間,采用C/S模式:worker中每個容器拉起後向測試的httpServer上報自己狀态,以httpServer記錄的請求時間作為容器啟動耗時。

冷啟動的關鍵優化,DADI大地加速器

一般而言,完整的容器應用鏡像往往有數百M甚至上G的大小。在社群的容器Registry的實作中,鏡像會以分層方式存儲,每一層都是一個tgz包。當容器啟動時, 容器引擎會從容器Registry拉取所有的層,在本地實作解壓後,通過階層化檔案系統建構完整的容器rootfs。而容器啟動過程中所需要的資料可能隻占鏡像檔案中極小一部分比例。本次測試所用鏡像完整大小為894M,容器啟動所需資料僅15M,占比約1.6%。如何能避免下載下傳完整鏡像到本地而直接擷取到這1.6%啟動資料是加速容器啟動的關鍵。

為何DADI加速器能為大規模容器叢集擴容提供秒級拉起的能力?其核心在于“按需讀取”容器運作時所需資料,避免傳統容器 “下載下傳鏡像 -> 解壓鏡像 -> 啟動容器”的啟動步驟,容器啟動耗時從分鐘縮短至數秒。這其中包括以下三點優化工作:

  • 鏡像格式優化: 為了避免下載下傳+解壓造成的高時延,DADI團隊設計了一種新的鏡像格式,内含索引,無需下載下傳和解壓完整鏡像即可直接通路;
  • 按需P2P資料讀取: 為減輕批量擴容時對單點Registry帶來的總體負載,DADI利用樹形P2P網絡對進行資料分發。即少數P2P根節點從Registry擷取,其他節點(主控端)之間可互相傳輸資料,批量擴容時可快速分發資料到所有節點;
  • 高效的解壓縮算法: DADI提供了一種新型的壓縮檔案格式,可按需單獨解壓使用者訪實際問的資料,且解壓時間開銷可忽略不計。
秒級啟動萬個容器,探秘阿裡雲容器鏡像加速黑科技

Figure 5 - 容器啟動流程對比

利用DADI方案啟動容器時,僅從鏡像Registry下載下傳幾KB的鏡像中繼資料,并建立虛拟裝置Overlay Block Device挂載到容器工作目錄上, Docker引擎會認為鏡像已經加載完畢。在容器啟動時所需的鏡像資料則從本地緩存或者P2P 網絡的上遊節點按需下載下傳。P2P網絡可以充分緩解對Registry的通路壓力。

秒級啟動萬個容器,探秘阿裡雲容器鏡像加速黑科技

Figure 6 – DADI P2P資料分發

随着Kubernetes 被越來越廣泛地接受,阿裡雲ACK支撐了各行各業的企業級客戶。此次ACK和DADI的深度整合,實作秒級啟動萬個容器,從容應對大規模應用擴容和釋出,相關技術在未來也将成為Serverless容器的啟動加速利器。

繼續閱讀