服务网格(Service Mesh)是微服务架构中的一种重要技术,它主要处理服务之间的通信,为服务间的信息交换提供更安全、更快速且更可靠的基础设施层。服务网格将服务治理从业务逻辑中剥离出来,拆解为独立的进程,实现异构系统的统一治理和增强网络安全。
一个典型的服务网格部署示意图如下:
其中绿色方块为应用服务,蓝色方块为代理。应用服务之间通过代理进行通信,整个服务通信形成图中的蓝色网络连线,图中所有蓝色部分就形成了服务网格。
服务网格的主要特点包括:
服务网格的架构通常包括控制平面和数据平面,其中控制平面用于配置、管理和监控数据平面中的Sidecar代理,提供服务发现、负载均衡、安全认证等功能。
数据平面主要由边车Sidecar组成,它以轻量级的网络代理形式存在,与每个微服务实例部署在同一个主机或容器中,作为服务的附属组件运行。边车的主要职责是拦截和处理服务之间的通信流量,并与控制平面进行交互,实现服务发现、负载均衡、安全认证、监控和跟踪等功能。
边车的工作流程通常包括以下几个步骤:
综上所述,服务网格是微服务架构中的重要组成部分,它们共同为服务间的通信提供了安全、快速且可靠的基础设施层,并实现了对业务代码的无侵入性服务治理。
在微服务架构中引入服务网格确实可以带来诸多好处,如简化服务治理、提高安全性和可观察性等,但同时也伴随着一系列问题和挑战。以下是几个主要方面:
如图所示,右侧的是引入服务网格的方案,Pod内多了边车容器,相比左侧未引入服务网格的方案,数据包增加了内核往返次数,增加了时延。
通过上述分析可以看出,在微服务架构中引入服务网格确实带来了资源开销和转发时延的问题。
服务网格DPU卸载解决方案将服务网格的sidecar边车容器集中卸载到DPU卡上执行,可以显著降低服务器CPU的算力消耗。同时,DPU卡高性能转发引擎实现了网络转发功能的加速,从而能够有效降低业务时延。该方案支持和原生Istio的无缝对接,对用户业务无侵入,可以实现业务的平滑迁移。
如图所示,红色系为本方案涉及本方案涉及部分,包括DPU卡及其提供给到主机侧的SRIOV vf口、主机侧CNI(istio-dpu-cni)。
业务容器的流量治理功能由DPU卡上的共享服务代理dpu-proxy提供,它由原生的边车容器从POD中抽离出来卸载到DPU卡上。它的配置由istio-dpu-cni通过对接istio获取并转换为集中式配置并下发下来。流量通过DPU提供的vf口到达DPU侧的dpu-proxy进行流量治理。
此架构的控制面仍为原生的istio,下发xDs配置给转发面;服务网格CNI(istio-dpu-cni)做为DPU卡在k8s集群的接口,无缝对接istio/收集集群信息,相当于DPU管理面给DPU组件下发配置及规则,使DPU卡可以实现原生的透明流量劫持以及流量治理的功能;DPU卡上的dpu-proxy做为服务网格的转发面,接收配置并根据配置对流量进行流量治理。
集群内的主机上插入DPU卡(红色),在主机侧集群内部署安装服务网格CNI(istio-dpu-cni组件)后,istio-dpu-cni组件可无缝对接控制平面K8s及Istio获取服务网格及网络配置、使能DPU卡上的共享服务代理dpu-proxy及转发引擎dataplane、下发相关的启动配置,主机即具有服务治理功能。之后在部署业务POD时,业务添加高速网口vf后,提供用户接口,使业务流量通过vf到达DPU侧dpu-proxy进行流量治理与转发。
服务网格CNI(istio-dpu-cni组件)在主机侧k8s集群部署,无缝对接控制平面K8s及Istio获取配置等信息,转换为共享式代理配置下发到DPU侧的共享代理;基于DPU板卡的sriov功能,可给业务POD添加低时延高速网口vf及分配置IP地址;同时使能DPU侧转发引擎dataplane,给dataplane下发引流转发配置。
如图所示,服务网格CNI包括istio-dpu-controller、istio-dpu-adapter和istio-dpu-cni三个组件:
① istio-dpu-controller 使用daemonset方式部署在集群master上
主要是用于生成dpu级别的集中式服务网格配置,收集集群信息如pod变化、nodename等,转换为istio的inbound和internal 配置,并下发给对应节点的istio-dpu-adapter。
② istio-dpu-adapter 使用daemonset部署在每个主机节点上
主要是用于无缝对接原生控制平面istio,可自动获取配置,转换集群内信息把原生配置聚合为共享式服务网格配置下发给代理dpu-proxy。
③ istio-dpu-cni 使用daemonset部署在每个主机节点上
可配置网络模式是underlay或者overlay,针对性下发不同的网络规则;收集集群内信息(node, ns, service, pod等),提供用户接口可对dpu侧的转发引擎dataplane下发转发及引流规则,使dataplane能进行透明劫持低时延业务流量到dpu-proxy做流量治理。
除自研的CNI外,引入的开源组件为multus、sriov、spiderpool(不涉及开源组件的改动),通过二进制或pod的形式部署在需要的节点上。
如图所示,DPU侧组件包括转发引擎dataplane和共享服务代理dpu-proxy两个组件。在DPU卡的soc上,部署两个容器组件实现服务网格转发面功能,流量透明劫持及流量治理。
① 共享服务代理dpu-proxy采用容器方式部署在DPU卡的SOC上
扩展封装原生边车代理istio-proxy为DPU共享服务代理dpu-proxy。它解析istio-dpu-adapter下发的动态共享式服务网格配置,对进出本机的低时延业务流量进行治理与转发。支持原生的四层TCP流量及七层HTTP流量治理;支持generic-proxy框架对其他七层流量进行流量治理。
② 转发引擎dataplane采用容器方式部署在DPU卡的SOC上
dataplane接入协议栈(内核/用户态),并可通过vcl共享内存方式与共享服务代理dpu-proxy交互;接收istio-dpu-cni下发的转发及引流规则,根据规则把流量劫持到dpu-proxy;治理过的流量按转发规则进行网络封装及转发;dataplane加载vf-representer,通过NP(网络转发引擎)从vf-representer口收发对应pod内vf口的流量。
同主机内的业务互访如图(红色),client端业务流量经高速口vf到达DPU共享服务代理进行服务治理后,再经转发引擎dataplane转发到本主机的server端Pod。
跨主机业务互访如图(蓝色),client端业务流量经高速口vf到达DPU共享服务代理进行服务治理。治理后流量到达转发引擎dataplane,根据转发规则转到目标主机的DPU上共享服务代理做inbound入口流量治理。治理后流量再经转发引擎dataplane转到目标主机的server端Pod。
本方案创新性的将服务网格边车代理集中卸载到DPU上,可以带来一系列显著的优势,包括以下几个方面:
①显著降低服务器开销:
②极致的低时延:
③即插即用:
④增强的安全性和隔离性:
综上所述,将边车代理集中卸载到DPU上是一种高效、灵活且安全的网络架构优化方案,能够显著降低开销、提升系统的性能并增强安全性和隔离性。
服务网格DPU卸载解决方案,作为云原生时代的一项创新技术,其核心价值在于显著优化了边车代理模式所带来的资源消耗问题,并大幅降低了业务请求在微服务间的转发时延。
随着云原生技术和微服务架构在各行各业的深入渗透,特别是在云计算、金融科技、物联网、边缘计算等领域,对于高效、可靠、可扩展的系统架构需求日益迫切。服务网格DPU卸载解决方案正是顺应这一趋势,凭借其卓越的性能提升和资源优化能力,展现出了极为广阔的应用前景和市场空间。
更为重要的是,该方案和技术正处于快速发展和不断完善的阶段。随着DPU技术的不断创新和服务网格框架的持续演进,未来将有更多高级功能被集成到DPU中,如更精细的流量管理、增强的安全策略执行、智能的数据处理加速等。服务网格DPU卸载方案将吸引更多行业巨头、初创企业以及技术开发者加入DPU生态,共同探索和实践DPU技术的潜力,推动其标准化、生态化的发展进程。
总之,服务网格DPU卸载解决方案作为云原生和微服务架构下的技术探索,展现出了巨大的潜力,有望成为推动云原生技术普及和深化的关键力量,为数字化转型注入新的活力和动力。
本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。
作者: Yusur_Tech, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3991230.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论