騰訊會議怎麼擴容
疫情期間,騰訊會議作為一款非常便捷的遠端協作工具,成為國內眾多企業日常會議溝通交流的主要平臺。殊不知,這款產品從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例項的各種輔助元件。
圖1:VStation雲作業系統
下面從資源準備、註冊與分配、建立與交付、虛擬機器初始化四大部分詳細介紹下其中的具體過程。
1.準備資源,投放物理機
騰訊雲基於定製化騰訊TLinux、自研的虛擬化hypervisor系統,可以實現批量自動部署、自動投放,並且在投放到現網之前進行自動驗證,保證軟硬體不存在隱患。騰訊雲Host元件管控系統,方便管理騰訊雲hypervisor上的各種代理元件,易於釋出,方便運維。
圖2:Host初始化過程
- 安裝系統:運維平臺從資產管理平臺CMDB拉取對應Host相關機型資訊,尋找與該機型對應的TLinux作業系統控制BMC配置從pxe啟動,從pxe伺服器拉取系統映象安裝系統。
- 系統初始化:安裝完系統後需要配置各種系統引數,調優。
- 部署Host使用的元件:每種不同機型的CVM使用的Host 會使用不同的後臺Agent,以及相關配置。通過Host元件管控系統Host使用的外掛進行統一管理,下發。
- 匯入叢集:已經初始化好的Host,需要匯入到VStation 叢集才能售賣和生產CVM。
圖3:Host元件管控系統
Host元件管控系統用於下發Host元件、灰度版本、控制、支援併發下載、灰度釋出,同時上報Host上各個元件的資訊、元件健康管理、自動拉起元件、異常告警等。
2.資源註冊與分配
作為整個系統的核心,騰訊雲作業系統VStation需要管理10萬級的物理機資源,近千萬級的核數,所以需要實現快速和穩定的排程系統。VStation服務類似Google Borg/Omega 使用的分散式排程架構,對計算資源進行排程。
圖4:VStation 排程系統
其中,水平擴充套件排程器支援橫向擴容,每個排程器擁有幾乎全部的叢集資訊,方便掌握全域性資源;採取增量同步、定時更新、區域性快取的方式,儘可能多地掌握全域性檢視,並且維持叢集狀態資訊的準確性。
排程決策方面,將可能過濾掉更多物理機的基礎條件放在排程器的靠前位置,過濾掉無法滿足基本條件的物理機列表,減少排程過程中物理機集合在不同排程器之間的傳遞;同時,根據多個維度,如物理機資源使用率、剩餘資源等,對滿足裝箱條件的物理機進行排序,儘可能優先使用優質Host資源,合理調配。此外,避免多個排程器在併發時選中相近的物理機,對經過排序後的物理機進行隨機調整,減少大併發時造成的衝突。
3.資源建立與交付
解決資源排程問題後,需要在選中的物理機上建立虛擬機器資源,其中有一些耗時的硬性階段無法解決,VStation對此結合資源建立過程的的特點,做出了令人滿意的優化,把單臺虛擬機器建立時間基本控制在3-5秒。
前面提到,資源建立需要與諸如使用者控制資料、網路服務、儲存服務、映象服務、金鑰、安全組服務等進行互動,完成使用者與所建立的虛擬機器資源之間的對映。VStation平臺設計之初就考慮到高併發,批量建立的場景,對周邊系統的互動實現了並行化通訊。同時,為支援高併發,提高服務的吞吐量,每種與其他服務互動的工作程序通過高可用訊息佇列通訊,都是無狀態和可擴容的。真正實現了高可用、高併發、自動容災。圖5是VStation 內部系統的核心架構。
圖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正在處理的請求超過一定閾值時,對新加入的請求不做拒絕處理,而是放入等待佇列中待正在處理的任務完成後繼續執行。
圖6:VStation 流控系統
4、任務編排優化
一個完整的建立任務涉及到的各種子任務較多,單純序列執行雖然邏輯清楚且維護簡單,但不利於充分發揮系統能力,高併發建立場景中耗時較長。通過分析虛擬機器例項建立過程中的各種依賴關係,將不耦合的任務並行執行,把簡單的單項圖轉換成有向無環圖(DAG),進一步提升任務的並行度。
圖7:建立流程任務優化
調整後,單臺CVM例項建立任務可以控制在5秒以內。
4.虛擬機器初始化
提到雲主機的初始化,CVM 支援使用雲原生的cloud-init服務,支援雲端計算主機映象初始化協議,使用者通過傳入自定義的指令碼程式,實現雲主機建立後自動執行預定義配置。同時,騰訊雲提供例項metadata 服務。使用者在自定義指令碼程式中可以訪問例項metadata服務獲取與例項有關的資訊,如IP地址、例項名稱等,來實現每個例項的特殊化配置。
圖8:CVM後設資料
CVM 例項相關後設資料資訊包括映象、使用者資料、vendor資料、後設資料幾部分組成。其中映象資訊和使用者資料資訊可以讓使用者自行配置,vendor資料和例項後設資料(如IP資訊、地域資訊等)可以通過內網訪問騰訊雲後設資料服務獲取,從而實現快速自動化配置CVM例項。
總結
8天內完成為騰訊會議擴容100萬核的任務,在此一役,騰訊雲CVM後臺服務有效地支援了高併發請求,通過優化排程演算法、優化內部架構、降低建立耗時,完美經受住了此次考驗。未來,將更有信心迎接其它更艱鉅的挑戰。