1.背景介紹
1.1.業(yè)務(wù)背景
服務(wù)網(wǎng)格(Service Mesh)是微服務(wù)架構(gòu)中的一種重要技術(shù),它主要處理服務(wù)之間的通信,為服務(wù)間的信息交換提供更安全、更快速且更可靠的基礎(chǔ)設(shè)施層。服務(wù)網(wǎng)格將服務(wù)治理從業(yè)務(wù)邏輯中剝離出來(lái),拆解為獨(dú)立的進(jìn)程,實(shí)現(xiàn)異構(gòu)系統(tǒng)的統(tǒng)一治理和增強(qiáng)網(wǎng)絡(luò)安全。
一個(gè)典型的服務(wù)網(wǎng)格部署示意圖如下:
其中綠色方塊為應(yīng)用服務(wù),藍(lán)色方塊為代理。應(yīng)用服務(wù)之間通過(guò)代理進(jìn)行通信,整個(gè)服務(wù)通信形成圖中的藍(lán)色網(wǎng)絡(luò)連線,圖中所有藍(lán)色部分就形成了服務(wù)網(wǎng)格。
服務(wù)網(wǎng)格的主要特點(diǎn)包括:
- 無(wú)侵入性:服務(wù)網(wǎng)格的設(shè)計(jì)理念是將通信和管理邏輯與業(yè)務(wù)邏輯解耦,使得業(yè)務(wù)邏輯無(wú)需關(guān)注通信細(xì)節(jié),從而實(shí)現(xiàn)了對(duì)業(yè)務(wù)代碼的無(wú)侵入性。
- 統(tǒng)一治理:通過(guò)服務(wù)網(wǎng)格,可以實(shí)現(xiàn)對(duì)微服務(wù)架構(gòu)中所有服務(wù)的統(tǒng)一治理,包括服務(wù)發(fā)現(xiàn)、負(fù)載均衡、安全認(rèn)證、監(jiān)控和跟蹤等功能。
- 可擴(kuò)展性:服務(wù)網(wǎng)格支持多種微服務(wù)框架和服務(wù)治理能力,能夠輕松擴(kuò)展以支持更多的服務(wù)和場(chǎng)景。
服務(wù)網(wǎng)格的架構(gòu)通常包括控制平面和數(shù)據(jù)平面,其中控制平面用于配置、管理和監(jiān)控?cái)?shù)據(jù)平面中的Sidecar代理,提供服務(wù)發(fā)現(xiàn)、負(fù)載均衡、安全認(rèn)證等功能。
數(shù)據(jù)平面主要由邊車(chē)Sidecar組成,它以輕量級(jí)的網(wǎng)絡(luò)代理形式存在,與每個(gè)微服務(wù)實(shí)例部署在同一個(gè)主機(jī)或容器中,作為服務(wù)的附屬組件運(yùn)行。邊車(chē)的主要職責(zé)是攔截和處理服務(wù)之間的通信流量,并與控制平面進(jìn)行交互,實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)、負(fù)載均衡、安全認(rèn)證、監(jiān)控和跟蹤等功能。
邊車(chē)的工作流程通常包括以下幾個(gè)步驟:
- 攔截通信流量:邊車(chē)代理攔截服務(wù)之間的所有入站和出站請(qǐng)求和響應(yīng)。
- 服務(wù)發(fā)現(xiàn):邊車(chē)代理向服務(wù)注冊(cè)中心注冊(cè)服務(wù)實(shí)例,并根據(jù)需要?jiǎng)討B(tài)地發(fā)現(xiàn)和管理服務(wù)實(shí)例。
- 負(fù)載均衡:邊車(chē)代理根據(jù)配置的負(fù)載均衡算法,將請(qǐng)求分發(fā)到多個(gè)服務(wù)實(shí)例中,以提高服務(wù)的可用性和性能。
- 安全認(rèn)證:邊車(chē)代理可以實(shí)施安全認(rèn)證策略,確保服務(wù)之間的通信是安全的。
- 監(jiān)控和跟蹤:邊車(chē)代理收集和傳輸服務(wù)間的通信流量數(shù)據(jù),以實(shí)現(xiàn)監(jiān)控、日志記錄、錯(cuò)誤追蹤和性能調(diào)優(yōu)等功能。
綜上所述,服務(wù)網(wǎng)格是微服務(wù)架構(gòu)中的重要組成部分,它們共同為服務(wù)間的通信提供了安全、快速且可靠的基礎(chǔ)設(shè)施層,并實(shí)現(xiàn)了對(duì)業(yè)務(wù)代碼的無(wú)侵入性服務(wù)治理。
1.2.問(wèn)題與挑戰(zhàn)
在微服務(wù)架構(gòu)中引入服務(wù)網(wǎng)格確實(shí)可以帶來(lái)諸多好處,如簡(jiǎn)化服務(wù)治理、提高安全性和可觀察性等,但同時(shí)也伴隨著一系列問(wèn)題和挑戰(zhàn)。以下是幾個(gè)主要方面:
- 邊車(chē)帶來(lái)的資源開(kāi)銷(xiāo):每個(gè)微服務(wù)應(yīng)用都都需要運(yùn)行一個(gè)邊車(chē)代理,實(shí)際部署是每個(gè)POD部署一個(gè)邊車(chē)容器。邊車(chē)容器需要額外的計(jì)算資源來(lái)處理服務(wù)間的通信,默認(rèn)情況下每個(gè)邊車(chē)容器占用0.2個(gè)CPU核。假設(shè)一臺(tái)服務(wù)器運(yùn)行了60個(gè)POD,那么邊車(chē)容器將額外占用12個(gè)CPU核。
- 業(yè)務(wù)轉(zhuǎn)發(fā)時(shí)延增加:應(yīng)用程序的每個(gè)數(shù)據(jù)包都必須通過(guò)邊車(chē)容器,數(shù)據(jù)包在應(yīng)用程序和內(nèi)核之間往返多次,如下對(duì)比是單個(gè)pod進(jìn)或出增加的時(shí)延。
如圖所示,右側(cè)的是引入服務(wù)網(wǎng)格的方案,Pod內(nèi)多了邊車(chē)容器,相比左側(cè)未引入服務(wù)網(wǎng)格的方案,數(shù)據(jù)包增加了內(nèi)核往返次數(shù),增加了時(shí)延。
通過(guò)上述分析可以看出,在微服務(wù)架構(gòu)中引入服務(wù)網(wǎng)格確實(shí)帶來(lái)了資源開(kāi)銷(xiāo)和轉(zhuǎn)發(fā)時(shí)延的問(wèn)題。
2.方案介紹
2.1.整體方案架構(gòu)
服務(wù)網(wǎng)格DPU卸載解決方案將服務(wù)網(wǎng)格的sidecar邊車(chē)容器集中卸載到DPU卡上執(zhí)行,可以顯著降低服務(wù)器CPU的算力消耗。同時(shí),DPU卡高性能轉(zhuǎn)發(fā)引擎實(shí)現(xiàn)了網(wǎng)絡(luò)轉(zhuǎn)發(fā)功能的加速,從而能夠有效降低業(yè)務(wù)時(shí)延。該方案支持和原生Istio的無(wú)縫對(duì)接,對(duì)用戶業(yè)務(wù)無(wú)侵入,可以實(shí)現(xiàn)業(yè)務(wù)的平滑遷移。
如圖所示,紅色系為本方案涉及本方案涉及部分,包括DPU卡及其提供給到主機(jī)側(cè)的SRIOV vf口、主機(jī)側(cè)CNI(istio-dpu-cni)。
業(yè)務(wù)容器的流量治理功能由DPU卡上的共享服務(wù)代理dpu-proxy提供,它由原生的邊車(chē)容器從POD中抽離出來(lái)卸載到DPU卡上。它的配置由istio-dpu-cni通過(guò)對(duì)接istio獲取并轉(zhuǎn)換為集中式配置并下發(fā)下來(lái)。流量通過(guò)DPU提供的vf口到達(dá)DPU側(cè)的dpu-proxy進(jìn)行流量治理。
此架構(gòu)的控制面仍為原生的istio,下發(fā)xDs配置給轉(zhuǎn)發(fā)面;服務(wù)網(wǎng)格CNI(istio-dpu-cni)做為DPU卡在k8s集群的接口,無(wú)縫對(duì)接istio/收集集群信息,相當(dāng)于DPU管理面給DPU組件下發(fā)配置及規(guī)則,使DPU卡可以實(shí)現(xiàn)原生的透明流量劫持以及流量治理的功能;DPU卡上的dpu-proxy做為服務(wù)網(wǎng)格的轉(zhuǎn)發(fā)面,接收配置并根據(jù)配置對(duì)流量進(jìn)行流量治理。
集群內(nèi)的主機(jī)上插入DPU卡(紅色),在主機(jī)側(cè)集群內(nèi)部署安裝服務(wù)網(wǎng)格CNI(istio-dpu-cni組件)后,istio-dpu-cni組件可無(wú)縫對(duì)接控制平面K8s及Istio獲取服務(wù)網(wǎng)格及網(wǎng)絡(luò)配置、使能DPU卡上的共享服務(wù)代理dpu-proxy及轉(zhuǎn)發(fā)引擎dataplane、下發(fā)相關(guān)的啟動(dòng)配置,主機(jī)即具有服務(wù)治理功能。之后在部署業(yè)務(wù)POD時(shí),業(yè)務(wù)添加高速網(wǎng)口vf后,提供用戶接口,使業(yè)務(wù)流量通過(guò)vf到達(dá)DPU側(cè)dpu-proxy進(jìn)行流量治理與轉(zhuǎn)發(fā)。
2.2.方案描述
2.2.1.主機(jī)側(cè)組件服務(wù)網(wǎng)格CNI實(shí)現(xiàn)管理平面
服務(wù)網(wǎng)格CNI(istio-dpu-cni組件)在主機(jī)側(cè)k8s集群部署,無(wú)縫對(duì)接控制平面K8s及Istio獲取配置等信息,轉(zhuǎn)換為共享式代理配置下發(fā)到DPU側(cè)的共享代理;基于DPU板卡的sriov功能,可給業(yè)務(wù)POD添加低時(shí)延高速網(wǎng)口vf及分配置IP地址;同時(shí)使能DPU側(cè)轉(zhuǎn)發(fā)引擎dataplane,給dataplane下發(fā)引流轉(zhuǎn)發(fā)配置。
如圖所示,服務(wù)網(wǎng)格CNI包括istio-dpu-controller、istio-dpu-adapter和istio-dpu-cni三個(gè)組件:
① istio-dpu-controller 使用daemonset方式部署在集群master上
主要是用于生成dpu級(jí)別的集中式服務(wù)網(wǎng)格配置,收集集群信息如pod變化、nodename等,轉(zhuǎn)換為istio的inbound和internal 配置,并下發(fā)給對(duì)應(yīng)節(jié)點(diǎn)的istio-dpu-adapter。
② istio-dpu-adapter 使用daemonset部署在每個(gè)主機(jī)節(jié)點(diǎn)上
主要是用于無(wú)縫對(duì)接原生控制平面istio,可自動(dòng)獲取配置,轉(zhuǎn)換集群內(nèi)信息把原生配置聚合為共享式服務(wù)網(wǎng)格配置下發(fā)給代理dpu-proxy。
③ istio-dpu-cni 使用daemonset部署在每個(gè)主機(jī)節(jié)點(diǎn)上
可配置網(wǎng)絡(luò)模式是underlay或者overlay,針對(duì)性下發(fā)不同的網(wǎng)絡(luò)規(guī)則;收集集群內(nèi)信息(node, ns, service, pod等),提供用戶接口可對(duì)dpu側(cè)的轉(zhuǎn)發(fā)引擎dataplane下發(fā)轉(zhuǎn)發(fā)及引流規(guī)則,使dataplane能進(jìn)行透明劫持低時(shí)延業(yè)務(wù)流量到dpu-proxy做流量治理。
除自研的CNI外,引入的開(kāi)源組件為multus、sriov、spiderpool(不涉及開(kāi)源組件的改動(dòng)),通過(guò)二進(jìn)制或pod的形式部署在需要的節(jié)點(diǎn)上。
2.2.2.DPU側(cè)組件轉(zhuǎn)發(fā)引擎及代理實(shí)現(xiàn)轉(zhuǎn)發(fā)平面
如圖所示,DPU側(cè)組件包括轉(zhuǎn)發(fā)引擎dataplane和共享服務(wù)代理dpu-proxy兩個(gè)組件。在DPU卡的soc上,部署兩個(gè)容器組件實(shí)現(xiàn)服務(wù)網(wǎng)格轉(zhuǎn)發(fā)面功能,流量透明劫持及流量治理。
① 共享服務(wù)代理dpu-proxy采用容器方式部署在DPU卡的SOC上
擴(kuò)展封裝原生邊車(chē)代理istio-proxy為DPU共享服務(wù)代理dpu-proxy。它解析istio-dpu-adapter下發(fā)的動(dòng)態(tài)共享式服務(wù)網(wǎng)格配置,對(duì)進(jìn)出本機(jī)的低時(shí)延業(yè)務(wù)流量進(jìn)行治理與轉(zhuǎn)發(fā)。支持原生的四層TCP流量及七層HTTP流量治理;支持generic-proxy框架對(duì)其他七層流量進(jìn)行流量治理。
② 轉(zhuǎn)發(fā)引擎dataplane采用容器方式部署在DPU卡的SOC上
dataplane接入?yún)f(xié)議棧(內(nèi)核/用戶態(tài)),并可通過(guò)vcl共享內(nèi)存方式與共享服務(wù)代理dpu-proxy交互;接收istio-dpu-cni下發(fā)的轉(zhuǎn)發(fā)及引流規(guī)則,根據(jù)規(guī)則把流量劫持到dpu-proxy;治理過(guò)的流量按轉(zhuǎn)發(fā)規(guī)則進(jìn)行網(wǎng)絡(luò)封裝及轉(zhuǎn)發(fā);dataplane加載vf-representer,通過(guò)NP(網(wǎng)絡(luò)轉(zhuǎn)發(fā)引擎)從vf-representer口收發(fā)對(duì)應(yīng)pod內(nèi)vf口的流量。
2.2.3.DPU共享服務(wù)代理流量轉(zhuǎn)發(fā)模型
同主機(jī)內(nèi)的業(yè)務(wù)互訪如圖(紅色),client端業(yè)務(wù)流量經(jīng)高速口vf到達(dá)DPU共享服務(wù)代理進(jìn)行服務(wù)治理后,再經(jīng)轉(zhuǎn)發(fā)引擎dataplane轉(zhuǎn)發(fā)到本主機(jī)的server端Pod。
跨主機(jī)業(yè)務(wù)互訪如圖(藍(lán)色),client端業(yè)務(wù)流量經(jīng)高速口vf到達(dá)DPU共享服務(wù)代理進(jìn)行服務(wù)治理。治理后流量到達(dá)轉(zhuǎn)發(fā)引擎dataplane,根據(jù)轉(zhuǎn)發(fā)規(guī)則轉(zhuǎn)到目標(biāo)主機(jī)的DPU上共享服務(wù)代理做inbound入口流量治理。治理后流量再經(jīng)轉(zhuǎn)發(fā)引擎dataplane轉(zhuǎn)到目標(biāo)主機(jī)的server端Pod。
3.方案優(yōu)勢(shì)
3.1.方案優(yōu)勢(shì)
本方案創(chuàng)新性的將服務(wù)網(wǎng)格邊車(chē)代理集中卸載到DPU上,可以帶來(lái)一系列顯著的優(yōu)勢(shì),包括以下幾個(gè)方面:
①顯著降低服務(wù)器開(kāi)銷(xiāo):
- 資源消耗減少:傳統(tǒng)的邊車(chē)模式需要在每個(gè)服務(wù)容器旁邊部署一個(gè)邊車(chē)代理,這會(huì)導(dǎo)致大量的資源消耗(如CPU、內(nèi)存)。通過(guò)將代理集中部署在DPU上,可以消除這些額外的資源消耗,使主機(jī)側(cè)的資源更加專(zhuān)注于業(yè)務(wù)邏輯處理。
- 優(yōu)化資源利用率:DPU作為專(zhuān)門(mén)的硬件加速單元,能夠更高效地處理網(wǎng)絡(luò)流量和加密解密等任務(wù),從而釋放主機(jī)CPU資源,提高整體系統(tǒng)的資源利用率。
②極致的低時(shí)延:
- 用戶態(tài)協(xié)議棧Bypass內(nèi)核:通過(guò)將網(wǎng)絡(luò)處理移至DPU的用戶態(tài)協(xié)議棧,繞過(guò)傳統(tǒng)的內(nèi)核態(tài)處理,可以顯著減少數(shù)據(jù)包在內(nèi)核與用戶空間之間切換的開(kāi)銷(xiāo),從而大幅降低網(wǎng)絡(luò)延遲。
- 服務(wù)網(wǎng)格快路徑:自研的服務(wù)網(wǎng)格快路徑技術(shù)可以進(jìn)一步優(yōu)化網(wǎng)絡(luò)路徑,減少不必要的處理步驟,確保數(shù)據(jù)包能夠以最短的路徑和最快的速度在網(wǎng)絡(luò)中傳輸。
③即插即用:
- 無(wú)侵入式服務(wù)治理:集中式代理模式允許在不修改現(xiàn)有應(yīng)用代碼的情況下實(shí)現(xiàn)服務(wù)治理功能,如流量管理、安全控制等。這使得新服務(wù)的部署和現(xiàn)有服務(wù)的升級(jí)變得更加簡(jiǎn)單快捷。
- 靈活部署:DPU作為獨(dú)立的硬件組件,可以輕松地集成到現(xiàn)有的服務(wù)器架構(gòu)中,實(shí)現(xiàn)即插即用。這種靈活性使得企業(yè)可以根據(jù)實(shí)際需求快速調(diào)整網(wǎng)絡(luò)架構(gòu)和服務(wù)部署策略。
④增強(qiáng)的安全性和隔離性:
- 服務(wù)隔離:通過(guò)DPU上的集中式代理,可以減少不同服務(wù)和邊車(chē)容器之間的干擾,防止?jié)撛诘陌踩L(fēng)險(xiǎn)。
綜上所述,將邊車(chē)代理集中卸載到DPU上是一種高效、靈活且安全的網(wǎng)絡(luò)架構(gòu)優(yōu)化方案,能夠顯著降低開(kāi)銷(xiāo)、提升系統(tǒng)的性能并增強(qiáng)安全性和隔離性。
3.2.未來(lái)與展望
服務(wù)網(wǎng)格DPU卸載解決方案,作為云原生時(shí)代的一項(xiàng)創(chuàng)新技術(shù),其核心價(jià)值在于顯著優(yōu)化了邊車(chē)代理模式所帶來(lái)的資源消耗問(wèn)題,并大幅降低了業(yè)務(wù)請(qǐng)求在微服務(wù)間的轉(zhuǎn)發(fā)時(shí)延。
隨著云原生技術(shù)和微服務(wù)架構(gòu)在各行各業(yè)的深入滲透,特別是在云計(jì)算、金融科技、物聯(lián)網(wǎng)、邊緣計(jì)算等領(lǐng)域,對(duì)于高效、可靠、可擴(kuò)展的系統(tǒng)架構(gòu)需求日益迫切。服務(wù)網(wǎng)格DPU卸載解決方案正是順應(yīng)這一趨勢(shì),憑借其卓越的性能提升和資源優(yōu)化能力,展現(xiàn)出了極為廣闊的應(yīng)用前景和市場(chǎng)空間。
更為重要的是,該方案和技術(shù)正處于快速發(fā)展和不斷完善的階段。隨著DPU技術(shù)的不斷創(chuàng)新和服務(wù)網(wǎng)格框架的持續(xù)演進(jìn),未來(lái)將有更多高級(jí)功能被集成到DPU中,如更精細(xì)的流量管理、增強(qiáng)的安全策略執(zhí)行、智能的數(shù)據(jù)處理加速等。服務(wù)網(wǎng)格DPU卸載方案將吸引更多行業(yè)巨頭、初創(chuàng)企業(yè)以及技術(shù)開(kāi)發(fā)者加入DPU生態(tài),共同探索和實(shí)踐DPU技術(shù)的潛力,推動(dòng)其標(biāo)準(zhǔn)化、生態(tài)化的發(fā)展進(jìn)程。
總之,服務(wù)網(wǎng)格DPU卸載解決方案作為云原生和微服務(wù)架構(gòu)下的技術(shù)探索,展現(xiàn)出了巨大的潛力,有望成為推動(dòng)云原生技術(shù)普及和深化的關(guān)鍵力量,為數(shù)字化轉(zhuǎn)型注入新的活力和動(dòng)力。
本方案來(lái)自于中科馭數(shù)軟件研發(fā)團(tuán)隊(duì),團(tuán)隊(duì)核心由一群在云計(jì)算、數(shù)據(jù)中心架構(gòu)、高性能計(jì)算領(lǐng)域深耕多年的業(yè)界資深架構(gòu)師和技術(shù)專(zhuān)家組成,不僅擁有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn),還對(duì)行業(yè)趨勢(shì)具備敏銳的洞察力,該團(tuán)隊(duì)致力于探索、設(shè)計(jì)、開(kāi)發(fā)、推廣可落地的高性能云計(jì)算解決方案,幫助最終客戶加速數(shù)字化轉(zhuǎn)型,提升業(yè)務(wù)效能,同時(shí)降低運(yùn)營(yíng)成本。
-
云計(jì)算
+關(guān)注
關(guān)注
39文章
7800瀏覽量
137396 -
DPU
+關(guān)注
關(guān)注
0文章
358瀏覽量
24175 -
網(wǎng)格
+關(guān)注
關(guān)注
0文章
139瀏覽量
16018 -
微服務(wù)
+關(guān)注
關(guān)注
0文章
137瀏覽量
7348
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論