郭湘南,王功乾,伍時揚,陳永勝
(烽火通信科技股份有限公司, 武漢 430074)
內容分發網絡(Content Delivery Network,CDN)是廣義邊緣計算的典型應用,其主要功能為內容緩存與分發,是輸入/輸出(Input/Output, I/O)密集型業務。而邊緣云是以虛擬化方式部署應用的業務平臺,計算密集型應用所占用的資源類型與CDN存在較大的差異,二者可實現服務器底層硬件資源協同共享,而CDN的虛擬化是與邊緣計算實現資源協同的前提[1]。虛擬化CDN(virtual CDN,vCDN)是指可以部署在虛擬化平臺之上的CDN系統。歐洲電信標準協會把CDN虛擬化列為網絡功能虛擬化的主要應用案例[2]。CDN從基于專有硬件到基于通用服務器的軟硬件解耦,并向虛擬化演進[3],而離最終用戶較近的CDN邊緣節點緩存和流媒體服務器是虛擬化的主要CDN組件[4]。目前國內電信運營商網絡電視視頻CDN已實現了軟硬件解耦,視頻CDN已從基于專用硬件部署過渡到基于通用服務器部署。隨著第五代移動通信技術(5th Generation Mobile Networks,5G)商用以及4K/8K高清視頻、虛擬現實(Virtual Reality,VR)和增強現實(Augmented Reality,AR)等大流量低時延業務的引入,運營商迫切希望將視頻CDN邊緣節點下沉到移動邊緣計算平臺,與人臉識別和邊緣轉碼等計算型應用共享邊緣計算平臺底層硬件。運營商視頻CDN需要從基于物理機的部署模式切換到邊緣計算平臺虛擬化部署模式,實現CDN 3層解耦,即應用、云平臺和硬件設備3者不存在廠家或技術綁定關系。針對邊緣計算與CDN邊緣節點如何實現資源協同,并最大程度降低CDN虛擬化性能損耗的問題,本文提出了基于物理機的CDN緩存軟件進行虛擬化適配的方法,并通過對比分析物理機、容器和虛擬機3種部署模式下CDN的性能測試數據,評估CDN虛擬化帶來的性能損耗,為在邊緣云平臺上部署CDN邊緣節點[5]提供性能數據支撐。
業界成熟的虛擬化技術包括虛擬機與容器兩大類,虛擬機基于硬件資源的虛擬化技術對應用進行隔離,位于操作系統下,而容器技術提供了操作系統級的進程隔離。為了適配各類邊緣云平臺,vCDN邊緣節點應支持虛擬機和容器兩種部署模式,如圖1所示。

圖1 虛擬機與容器兩種部署模式
vCDN邊緣節點應支持虛擬機部署及虛擬機集群。在虛擬機采用相同的操作系統,并支持磁盤直通的情況下,CDN緩存軟件可運行于虛擬機上,與運行在物理機上的方式相同,可采用部署在物理機上的相同軟件版本,軟件無需特別設計開發,系統性能主要取決于虛擬機對計算能力、磁盤和網絡的優化。
在容器部署模式下,應以部署在物理機的CDN緩存軟件為基礎,制作可容器化部署的鏡像。在容器平臺支持網卡虛擬化(Media Access Control Virtual Local Area Network,MACVLAN)的情況下,多個容器內的緩存服務器可通過負載均衡模塊實現集群管理和調度,從而實現物理機部署情況下CDN的所有業務功能。為支持容器化部署,應在以下幾方面對CDN緩存軟件進行適配:
(1) 制作CDN軟件容器化鏡像。將CDN緩存軟件整體打包至鏡像,每一個網元作為一個服務運行在容器內,利用容器提供的網絡對外提供服務和通信,整體行為模式類似于物理機部署。
(2) 為容器指定特權模式,將特定的主機磁盤掛載到容器上,緩存軟件通過容器直寫裸磁盤,以確保CDN容器化后存儲器的I/O性能。
(3) 進行容器數據持久化存儲設計。運行在容器中的應用需要長期存儲其配置文件和運行數據,在容器重啟后仍需繼續使用這些數據。容器持久化存儲技術通過主機掛載的方式把文件、目錄或裸盤等掛載到容器,實現配置與運行數據持久化,并解決數據安全性問題。
(4) 采用MACVLAN網絡模式,支持單機多容器場景。MACVLAN容器網絡接口(Container Network Interface,CNI)將物理網卡虛擬成多個虛擬網絡接口,每個虛擬接口都是獨立的,擁有唯一的物理地址(Media Access Control Address,MAC),可以配置獨立的互聯網協議地址(Internet Protocol Address,IP),實現不同容器內的應用軟件綁定不同的IP地址。
(5) 支持容器遠程登錄功能,將安全外殼協議(Secure Shell,SSH)服務打包到鏡像,并配置為容器啟動時自動啟用該服務。
(6) 支持容器指標采集功能。支持從容器采集業務運行指標,將數據采集器打包到鏡像里,容器運行后即可采集容器內服務的指標,并通過接口暴露到外部采集系統。
(7) 容器可靠性。虛擬化后的可靠性主要基于容器編排引擎(Kubernetes)平臺提供的故障自動恢復機制,基于Kubernetes的容器組(Pod)副本機制,當發生進程故障時,能很快地自動恢復。
圖2所示為一臺物理主機部署兩個vCDN容器時的配置,包括CNI、配置文件與運行數據的持久化和容器掛載主機磁盤等。

圖2 vCDN部署于容器平臺
在物理機、虛擬機和容器3種部署模式下進行性能測試,收集達到最大出流能力時的資源占用情況,以評估CDN在邊緣云虛擬化部署時的資源消耗。此外,在緩存服務器標稱流量性能下,收集vCDN的資源占用情況,評估CDN邊緣節點通過虛擬化技術可以釋放多少硬件資源,在保證原有CDN業務不受影響的前提下,將這些釋放出來的資源提供給邊緣計算平臺,實現二者的資源共享。
以單臺服務器作為測試對象,服務器配置為中央處理器(Central Processing Unit,CPU): Xeon 4114×2;雙倍數據速率同步動態隨機存儲器(Double Data Rate Synchronous Dynamic Random Access Memory ,DDR SDRAM): 12×16 GB;串行高級技術附件(Serial Advanced Technology Attachment,SATA)數據盤:24×6 TB;硬盤驅動器(Hard Disk Drive,HDD): 12×960 GB ;固態驅動器(Solid State Drive,SSD);網卡:4×10 GE。3臺服務器分別以物理機、虛擬機和容器3種模式部署CDN緩存軟件,形成3個CDN節點,然后對這3個CDN節點分別進行性能測試,收集性能測試數據。測試環境拓撲如圖3所示。

圖3 測試環境拓撲圖
(1) 單臺服務器最大出流能力測試結果與分析
在保證訪問成功率大于99.9%的情況下測試CDN緩存軟件在物理機、容器和虛擬機3種部署模式下的最大出流能力,其中容器平臺按單臺服務器部署1、2、4和6個CDN緩存容器的4種配置分別測試,虛擬機平臺按單臺服務器部署1、2、4和6臺CDN緩存虛擬機的4種配置分別測試,記錄最大出流能力和服務器各類資源的占用情況,如表1所示。

表1 最大出流能力下的資源占用情況
在物理機部署模式下,CPU和內存使用率較低,網卡達到滿負荷;在容器部署模式下,單臺服務器的最大出流能力與物理機相當,單機部署1個緩存容器時資源使用率最低、效果最好。在容器部署模式下,CPU消耗相比物理機增加11%~20%,且隨著緩存容器個數的增多,CPU消耗小幅增加。在虛擬機部署模式下,性能損耗較大,單臺服務器部署1臺緩存虛擬機時,最大出流能力約為物理機的75%,CPU使用率接近70%,CPU成為資源瓶頸。單臺服務器部署多臺緩存虛擬機時,最大出流能力大幅下降。虛擬機通過虛擬機監視器(Hypervisor)實現硬件資源虛擬化,相比容器而言,多了Hypervisor這層虛擬硬件層;而容器技術則是對進程的虛擬,容器上的應用直接使用物理機的硬件資源。即便對于I/O密集型的CDN緩存軟件,虛擬機相比物理機和容器仍有較大的性能損耗。在容器滿足邊緣云的資源隔離和安全性要求的前提下,vCDN在邊緣云部署時,可以優先選擇容器平臺,并在單臺物理機上只部署一個vCDN緩存容器。
(2) 標稱出流能力下的資源共享
國內電信運營商同等配置的CDN物理機,其標稱出流能力為15 Gbit/s。CDN容器模式的出流能力標稱值參照物理機的標稱值15 Gbit/s來估算,虛擬機模式的出流能力標稱值按11.3 Gbit/s(即15 Gbit/s的75%)來估算,分別測試在標稱出流能力下服務器各類資源的占用情況,如表2所示。

表2 標稱出流能力下的資源占用情況
在標稱出流能力下,單臺服務器部署1個緩存容器時,可以釋放CPU 77.1%、內存90.4%和磁盤75%的資源,提供給邊緣計算平臺,實現vCDN與邊緣計算資源共享;單臺服務器部署1臺緩存虛擬機時,可以釋放CPU 83%、內存91.5%和磁盤75%的資源,提供給邊緣計算平臺。
CDN緩存軟件經過虛擬化適配后,能以虛擬機或容器模式部署于邊緣云平臺。為了降低vCDN的性能損耗,單臺物理機應只編排一個vCDN緩存容器或虛擬機。容器平臺具有較小的性能損耗,單臺服務器的最大出流能力與物理機相當;而虛擬機平臺具有較大的性能損耗,單臺服務器的最大出流能力相當于物理機的75%左右。在出流能力標稱值下,采用虛擬化模式部署CDN邊緣節點,可釋放大部分CPU、內存和磁盤資源,與邊緣計算實現硬件資源協同。