騰訊會議如何做到8天擴容100萬核?

疫情期間,騰訊會議作為一款非常便捷的遠程協作工具,成為國內眾多企業日常會議溝通交流的主要平臺。殊不知,這款產品從2019年12月26日才正式推出。如何在這麼短的時間內,有效撐起國內數以億計的用戶訪問量,保證系統的穩定運行?本文來自騰訊雲的技術人員,為你解析

8天時間內完成100萬核資源的擴容背後的技術,希望對大家有所借鑑。

如果需要交付100萬核的計算資源,需要做什麼?準備資源,然後按用戶需求進行交付。如果在前面加一個定語“快速”呢?可以加班加點完成。但是如果要實現8天內完成100萬核的資源交付,換算下來,每天需要交付12.5萬核,這就有點苛刻。在雲計算的歷史上,從未出現過類似的案例。

那麼,騰訊會議是如何做到的呢?


解決思路


首先,分析如此短的時間內,交付這些資源需要做哪些事情,會遇到哪些問題。

實際上,藉助於當前成熟的虛擬化技術,可以基於已經制作好的鏡像系統文件,快速地部署一套用於提供服務的生產環境,所以,只需要準備好足夠的計算資源就能夠實現服務的無限擴容,而這個過程大概需要以下四步。

1.準備資源,投放物理機:作為雲計算服務提供商,首先資源是第一位的,所以第一步要準備用於提供服務的物理機。這100萬核心的資源,相當於約12000臺物理機。以防資源不足的問題,需要快速將這些物理機全部上架,同時,保證每臺物理機經過驗證,並且部署了正確版本的後臺組件。2.資源註冊與分配:有了物理機資源,下一步就需要把初始化好的物理機資源投放到現網環境中,確保每一臺物理機資源都在CVM後臺服務中註冊。騰訊雲操作系統VStation需要維護數十萬級的物理機資源,這無疑對資源調度能力提出了極大的挑戰。這一步需要快速將所有計算資源找到對應的物理機承載。3.資源創建與交付:當後臺調度系統選擇好承載計算能力的物理機之後,下一步是到物理機上創建虛擬機資源。這一步看似簡單但需要做的事情卻不少,如生成用戶控制數據,與存儲、網絡系統交互,生成對應的虛擬機配置,啟動虛擬機。4.虛擬機初始化:虛擬機成功創建之後,就已經可以交付使用了。不過可能還需要進行配置,如拉取配置、加入服務集群、啟動服務等。


完整歷程解密


圖1是騰訊雲操作系統VStation架構圖,騰訊雲操作系統VStation,承擔資源調度、請求排隊的任務,已經對大批量、高併發的創建請求進行了充分優化。具體來說:


  • API 部分接入用戶請求,管理用戶角色、CVM 機型、用戶配額等;


  • 雲操作系統VStation,承擔資源調度、請求排隊,目前虛擬機每分鐘吞吐可達到5000臺;


  • Host組件上安裝用於生產和配置CVM實例的各種輔助組件。


騰訊會議如何做到8天擴容100萬核?

圖1:VStation雲操作系統


下面從資源準備、註冊與分配、創建與交付、虛擬機初始化四大部分詳細介紹下其中的具體過程。


1.準備資源,投放物理機


騰訊雲基於定製化騰訊TLinux、自研的虛擬化hypervisor系統,可以實現批量自動部署、自動投放,並且在投放到現網之前進行自動驗證,保證軟硬件不存在隱患。騰訊雲Host組件管控系統,方便管理騰訊雲hypervisor上的各種代理組件,易於發佈,方便運維。


騰訊會議如何做到8天擴容100萬核?

圖2:Host初始化過程


  • 安裝系統:運維平臺從資產管理平臺CMDB拉取對應Host相關機型信息,尋找與該機型對應的TLinux操作系統控制BMC配置從pxe啟動,從pxe服務器拉取系統鏡像安裝系統。


  • 系統初始化:安裝完系統後需要配置各種系統參數,調優。


  • 部署Host使用的組件:每種不同機型的CVM使用的Host 會使用不同的後臺Agent,以及相關配置。通過Host組件管控系統Host使用的插件進行統一管理,下發。


  • 導入集群:已經初始化好的Host,需要導入到VStation 集群才能售賣和生產CVM。


騰訊會議如何做到8天擴容100萬核?

圖3:Host組件管控系統


Host組件管控系統用於下發Host組件、灰度版本、控制、支持併發下載、灰度發佈,同時上報Host上各個組件的信息、組件健康管理、自動拉起組件、異常告警等。


2.資源註冊與分配


作為整個系統的核心,騰訊雲操作系統VStation需要管理10萬級的物理機資源,近千萬級的核數,所以需要實現快速和穩定的調度系統。VStation服務類似Google Borg/Omega 使用的分佈式調度架構,對計算資源進行調度。


騰訊會議如何做到8天擴容100萬核?

圖4:VStation 調度系統


其中,水平擴展調度器支持橫向擴容,每個調度器擁有幾乎全部的集群信息,方便掌握全局資源;採取增量同步、定時更新、局部緩存的方式,儘可能多地掌握全局視圖,並且維持集群狀態信息的準確性。

調度決策方面,將可能過濾掉更多物理機的基礎條件放在調度器的靠前位置,過濾掉無法滿足基本條件的物理機列表,減少調度過程中物理機集合在不同調度器之間的傳遞;同時,根據多個維度,如物理機資源使用率、剩餘資源等,對滿足裝箱條件的物理機進行排序,儘可能優先使用優質Host資源,合理調配。此外,避免多個調度器在併發時選中相近的物理機,對經過排序後的物理機進行隨機調整,減少大併發時造成的衝突。


3.資源創建與交付


解決資源調度問題後,需要在選中的物理機上創建虛擬機資源,其中有一些耗時的硬性階段無法解決,VStation對此結合資源創建過程的的特點,做出了令人滿意的優化,把單臺虛擬機創建時間基本控制在3-5秒。

前面提到,資源創建需要與諸如用戶控制數據、網絡服務、存儲服務、鏡像服務、密鑰、安全組服務等進行交互,完成用戶與所創建的虛擬機資源之間的映射。VStation平臺設計之初就考慮到高併發,批量創建的場景,對周邊系統的交互實現了並行化通信。同時,為支持高併發,提高服務的吞吐量,每種與其他服務交互的工作進程通過高可用消息隊列通信,都是無狀態和可擴容的。真正實現了高可用、高併發、自動容災。圖5是VStation 內部系統的核心架構。


騰訊會議如何做到8天擴容100萬核?

圖5:VStation 後臺架構


VStation 通過高可用的消息隊列,控制數據與周邊系統交互的工作進程間通信,同時對創建過程中的關鍵任務按照依賴關係實現並行化,最大限度的壓縮創建總耗時。針對高併發請求,為減少對系統自身的影響,系統具備以下特性:


1、控制信息載荷自動壓縮


控制消息攜帶了CVM實例的各種控制信息:計算、存儲、網絡以及各種元數據信息。隨著系統功能增加,控制層面數據也有所增長,控制信息載荷增大。使用壓縮算法在投遞消息前進行壓縮並在接受消息後解壓縮,能夠大大降低消息佔用消息總線,提高消息吞吐率。目前VStation 使用開源LZ4 - Extremely fast compression壓縮和解壓縮算法,壓縮速率可達到780 MB/s,解壓縮速率在4970 MB/s,壓縮率在2倍左右。


2、負載平衡


分佈式系統中會使用多個實例以增加系統請求響應吞吐率,控制模塊負載平衡可以保證請求均勻地被各個worker處理。負載平衡需要後臺處理請求的worker均勻分配到不同處理實例上,降低等待隊伍長度,併發執行任務。同時需要將虛擬機實例儘量均勻地分配在不同Host。將併發請求儘可能均勻地分在不同物理機,有利於加快辦法創建速度。生產虛擬機較為耗時的任務有創建虛擬機磁盤、下載虛擬機鏡像、申請網卡、配置網絡等。如果多臺虛擬機串行地在同一臺物理機上創建,必然是系統瓶頸,創建耗時延長。VStation Scheduler 在裝箱時,每個Scheduler實例有近乎全局的資源視圖,對同一批次的創建任務,可以在虛擬機併發裝箱時保證虛擬機儘量不落在同一臺物理機。


3、流控系統


當請求數超過系統承載能力時,如果不加控制,會對周邊系統造成危害,導致系統過載,內部組件異常(如DB慢查詢、不響應、消息隊列丟消息),破壞性較大,嚴重時會造成服務不響應,甚至用戶數據不一致。VStation增加排隊機制,降級服務,而不是返回系統內部錯誤,以提升用戶體驗。流控系統由以下幾個方面組成:


  • 關鍵請求頻次控制:在API請求頻次上對用戶做限制,防止惡意用戶頻發請求系統,如惡意購買,刷單等。


  • 用戶配額限制:限制用戶隨意申請資源,尤其是按量資源,限制配額。


  • 後臺請求排隊與流速控制:任何系統都有能承載的處理容量,當VStation正在處理的請求超過一定閾值時,對新加入的請求不做拒絕處理,而是放入等待隊列中待正在處理的任務完成後繼續執行。


騰訊會議如何做到8天擴容100萬核?

圖6:VStation 流控系統


4、任務編排優化


一個完整的創建任務涉及到的各種子任務較多,單純串行執行雖然邏輯清楚且維護簡單,但不利於充分發揮系統能力,高併發創建場景中耗時較長。通過分析虛擬機實例創建過程中的各種依賴關係,將不耦合的任務並行執行,把簡單的單項圖轉換成有向無環圖(DAG),進一步提升任務的並行度。

騰訊會議如何做到8天擴容100萬核?

圖7:創建流程任務優化


調整後,單臺CVM實例創建任務可以控制在5秒以內。


4.虛擬機初始化


提到雲主機的初始化,CVM 支持使用雲原生的cloud-init服務,支持雲計算主機鏡像初始化協議,用戶通過傳入自定義的腳本程序,實現雲主機創建後自動執行預定義配置。同時,騰訊雲提供實例metadata 服務。用戶在自定義腳本程序中可以訪問實例metadata服務獲取與實例有關的信息,如IP地址、實例名稱等,來實現每個實例的特殊化配置。


騰訊會議如何做到8天擴容100萬核?

圖8:CVM元數據


CVM 實例相關元數據信息包括鏡像、用戶數據、vendor數據、元數據幾部分組成。其中鏡像信息和用戶數據信息可以讓用戶自行配置,vendor數據和實例元數據(如IP信息、地域信息等)可以通過內網訪問騰訊雲元數據服務獲取,從而實現快速自動化配置CVM實例。


總結


8天內完成為騰訊會議擴容100萬核的任務,在此一役,騰訊雲CVM後臺服務有效地支持了高併發請求,通過優化調度算法、優化內部架構、降低創建耗時,完美經受住了此次考驗。未來,將更有信心迎接其它更艱鉅的挑戰。


分享到:


相關文章: