CN113949702B - 一种服务网格的多层网络协议处理方法及装置 - Google Patents
一种服务网格的多层网络协议处理方法及装置 Download PDFInfo
- Publication number
- CN113949702B CN113949702B CN202111005392.7A CN202111005392A CN113949702B CN 113949702 B CN113949702 B CN 113949702B CN 202111005392 A CN202111005392 A CN 202111005392A CN 113949702 B CN113949702 B CN 113949702B
- Authority
- CN
- China
- Prior art keywords
- service
- service grid
- network protocol
- istio
- configuration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0876—Aspects of the degree of configuration automation
- H04L41/0879—Manual configuration through operator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Automation & Control Theory (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种服务网格的多层网络协议处理方法及装置,涉及云计算技术领域,该方法包括以下步骤:为服务网格的待部署应用的命名空间打上标签;在服务网格中部署插件组件,将服务网格的端口暴露至服务器集群外部;在打上标签的命名空间中部署应用;为服务网格部署网络流量处理组件,扩展服务网格并在服务网格中形成非侵入式工具集;网络流量处理组件生成多层网络协议相关的缺省配置,以及,在边缘和服务代理配置之上进行抽象,生成一层面向用户的配置自定义资源,并通过配置自定义资源对多层网络协议上网络流量进行处理,本发明提供一致、有效的把所有多层网络协议都纳入处理处理的方式,且对应用是透明的、无入侵的。
Description
技术领域
本发明涉及云计算技术领域,尤其涉及一种服务网格的多层网络协议处理方法及装置。
背景技术
Kubernetes(K8s)作为目前主流的容器编排平台,用于承载各类云计算服务,云平台上越来越多的容器化微服务给平台带来了更多复杂性,也给运维人员和开发人员带来很大挑战。
在这样的背景下,服务网格(Service Mesh)应运而生。ServiceMesh通过对微服务建立逻辑上的“边界”,把庞大的服务治理问题,分而治之。通过Service Mesh可以提供一个对应用透明的基础设施层,可以解决目前在分布式应用/微服务中遇到的常见挑战,例如,如何找到服务提供者?如何保证服务之间的通信安全?如何得知服务之间的调用关系?如何进行流量处理如灰度发布?等等,因此利用Service Mesh可以轻松获取服务之间的调用关系,对微服务的流量进行细粒度处理,如灰度发布、负载均衡、指标监控等等。
Istio作为连接、安全加固、控制和观察服务的开放平台,是ServiceMesh的最佳实践,也是Sevcie Mesh事实上的标准。Istio的实现方式是通过对每个Pod注入流量代理(SidecarProxy)容器实现的,伴随应用部署一个 Sidecar Proxy容器,正因为SidecarProxy容器的出现,所有Pod出向和入向流量的流量都会被拦截,并被加以分析和处理,对这些流量进行分析和处理,以达到在不修改应用代码的情况下对服务进行流量处理、安全加密,遥测数据收集的目的。由于Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表服务器集群上正在运行的一个进程,包括为Pod注入SidecarProxy容器、对流量自动拦截,都是对应用透明的。用户可以在不对应用做任何修改的前提下,做到对服务进行流量处理、负载均衡、恢复发布、遥测数据收集。这些服务治理能力的实现,得益于基于智能代理(Envoy)实现的Sidecar Proxy容器的协议解析、处理能力。Sidecar Proxy容器不仅需要可以处理开放式系统互联通信(Open System Interconnection,OSI)网络模型的三、四层协议上的网络流量,最重要的是还需要对七层网络协议上的网络流量进行处理。
Istio固然强大,但是也具有一定的局限性,主要的局限性在七层网络协议上网络流量的处理。目前Istio只支持超文本传输协议(HyperTextTransferProtocol,HTTP)和谷歌远程过程调用(googleRemoteProcedureCall,gRPC)。但在实际应用场景中,微服务中经常还会使用到的其他七层网络协议,如Dubbo、Thrift、Redis等。如果用户的应用通信标准不是HTTP或gRPC,Istio就只能在3-6层对流量进行处理,比如基于三层的网际互连协议(InternetProtocol,IP)地址,四层的传输控制协议(TransmissionControlProtocol,TCP)端口对这些协议进行路由。在指标采集方面,Istio只能收集到TCP层面的指标,例如TCP收发包数量或者打开/关闭的 TCP 链接数量等。这就意味着,如果用户想要处理七层网络协议上网络流量,就只能通过改造应用自身去实现这些功能,对应用造成入侵,这和服务治理的初衷背道而驰:将微服务通信和治理的共性问题从应用代码下沉到 Service Mesh 基础设施层。
因此,当微服务应用迁移并部署到 Service Mesh 时,能够使用一致的方式且无入侵地对所有的这些七层网络协议进行统一纳入处理,以充分利用 Service Mesh 基础设施提供的云原生能力的方法是目前业界亟待解决的重要课题。
发明内容
本发明提供一种服务网格的多层网络协议处理方法及装置,用以解决现有技术中服务网格处理七层网络协议上网络流量需要改造应用自身,进而对应用造成入侵的缺陷,实现提供一致、有效的把所有多层网络协议都纳入处理的方式,且对应用是透明的、无入侵的。
本发明提供一种服务网格的多层网络协议处理方法,包括以下步骤:
为服务网格的待部署应用的命名空间打上标签;其中,所述服务网格部署在服务器集群中,所述标签表示自动注入流量代理容器;
在所述服务网格中部署插件组件,将所述服务网格的端口暴露至所述服务器集群外部;
在打上所述标签的所述命名空间中部署应用;
为所述服务网格部署网络流量处理组件,扩展所述服务网格并在所述服务网格中形成非侵入式工具集;
所述网络流量处理组件生成多层网络协议相关的缺省配置,以及,在边缘和服务代理配置之上进行抽象,生成一层面向用户的配置自定义资源,并通过所述配置自定义资源对多层网络协议上网络流量进行处理。
根据本发明提供的一种服务网格的多层网络协议处理方法,所述服务网格采用Istio。
根据本发明提供的一种服务网格的多层网络协议处理方法,所述服务器集群采用Kubernetes集群。
根据本发明提供的一种服务网格的多层网络协议处理方法,所述为服务网格的待部署应用的命名空间打上标签步骤之前,该方法还包括以下步骤:
部署服务器集群,并在所述服务器集群中部署服务网格。
根据本发明提供的一种服务网格的多层网络协议处理方法,所述网络流量处理组件采用Aeraki项目。
根据本发明提供的一种服务网格的多层网络协议处理方法,所述插件组件包括Kiali、Promethus、Grafana、Istio-ingress-gateway中的一种或者多种的组合。
本发明还提供一种服务网格的多层网络协议处理装置,包括:
标记模块,用于为服务网格的待部署应用的命名空间打上标签;其中,所述服务网格部署在服务器集群中,所述标签表示自动注入流量代理容器;
暴露模块,用于在所述服务网格中部署插件组件,将所述服务网格的端口暴露至所述服务器集群外部;
应用部署模块,用于在打上所述标签的所述命名空间中部署应用;
组件部署模块,用于为所述服务网格部署网络流量处理组件,扩展所述服务网格并在所述服务网格中形成非侵入式工具集;
协议处理模块,用于所述网络流量处理组件生成多层网络协议相关的缺省配置,以及,在边缘和服务代理配置之上进行抽象,生成一层面向用户的配置自定义资源,并通过所述配置自定义资源对多层网络协议上网络流量进行处理。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述服务网格的多层网络协议处理方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述服务网格的多层网络协议处理方法的步骤。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述服务网格的多层网络协议处理方法的步骤。
本发明提供的服务网格的多层网络协议处理方法及装置,通过在Service Mesh中部署插件组件,将Service Mesh的端口暴露至服务器集群外部,实现基于Envoy的特征和Istio对外暴露的Envoy配置扩展接口,通过在Service Mesh中集成网络流量处理组件,激活Envoy支持的多种流量Filter,使Envoy支持更多七层网络协议上的网络流量处理,自动化的补全Istio下发的Envoy缺省配置,达到其他七层网络协议被有效处理的目的,对原本需要手动操作的配置进行自动化处理极大降低了流量处理成本和服务治理复杂度,提供一种非侵入性、可扩展的、自动化的方式来处理服务网格中的任何七层网络协议上的网络流量,能够应用无入侵地、无感知地充分利用服务治理的能力,为Service Mesh的待部署应用的命名空间打上标签,之后应用通过部署在打该标签的命名空间后,实现在云平台部署后,即可使用用户接口对应用进行流量处理,通过Istio的前端服务,查看分析性能指标数据通过扩展Istio本身。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的服务网格的多层网络协议处理方法的流程示意图之一;
图2是本发明提供的服务网格的多层网络协议处理方法的流程示意图之二;
图3是本发明提供的服务网格的多层网络协议处理装置的结构示意图之一;
图4是本发明提供的服务网格的多层网络协议处理装置的结构示意图之二;
图5是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1描述本发明的服务网格的多层网络协议处理方法,该方法包括以下步骤:
S200、为Service Mesh的待部署应用的命名空间打上标签。其中,Service Mesh部署在服务器集群中,具体的,该方法中,Service Mesh采用Istio,服务器集群采用Kubernetes集群,上述标签表示自动注入Sidecar Proxy容器。
Istio逻辑上可以划分为数据平面和控制平面两个部分。其中,数据平面由一组基于Sidecar模式部署的智能化的边缘和服务代理(Envoy)组成。Envoy可以拦截Pod的出向和入向流量,并且可以控制和调节微服务之间所有的通信;控制平面负责处理和配置服务器集群中的全部Sidecar Proxy容器,来路由流量以及收集遥测数据。
在Istio部署后,会监听(watch)消息总线的事件,当有Pod被创建,则会触发调解(reconcile)流程,自动在Pod中注入基于Sidecar模式的容器,该容器镜像为Envoy,并且,将发往Pod内部的流量作为inbound流量,将从Pod发出的流量作为outbound流量。Istio通过命名空间的标签(Label)作为自动注入流程是否执行的判别依据,该标签为istio-injection=enabled,为需要部署应用的命名空间增加该标签。
S300、在Service Mesh中部署插件(addon)组件,将Service Mesh的端口暴露至服务器集群外部。
由于Istio本身只包含基于Sidecar模式的注入功能,以及控制平面组件。为了功能完整性,还需要为Istio部署addon组件完善其功能。该方法中,需要额外部署的addon组件可以为:Kiali、Promethus、Grafana、Istio-ingress-gateway中的一种或者多种的组合。其中,Kaili组件是Istio统一的前端处理页面;Promethus组件负责检测流量性能指标;Grafana组件用于展示性能指标,Istio-ingress-gateway组件是一个七层网络协议的负载均衡(Loadbalancer),作用是把Istio集成的各种界面或服务暴露至服务器集群外部。各个服务可以通过配置VS或Gateway在Istio-ingress-gateway组件中注册,实现集群外部可达。
S400、在步骤S200中打上标签的命名空间中部署应用,应用部署成功后,可以看到应用Pod中多出了一个Proxy容器,该容器即为Istio自动注入的Sidecar Proxy。
因此,通过步骤S200和步骤S300,基于Sidecar模式,为Pod注入Proxy,代理Pod内部流量。
S500、为Service Mesh部署网络流量处理组件,扩展Service Mesh并在ServiceMesh中形成非侵入式工具集。
目前Istio只支持HTTP和gRPC这两种七层网络协议配置的下发,但是Envoy本身具备多种七层网络协议的过滤器(Filter)。因为控制平面无法下发缺省的配置,Envoy的功能没有全部体现出来。一种可行的方案是采用Istio EnvoyFilter 自定义资源(CustomResource Definition,CRD)。EnvoyFilter是Istio提供的一种配置机制,EnvoyFilter的主要作用就是为控制平面的导频(Pilot)生成的缺省Envoy配置,添加、修改或者删除缺省Envoy配置内容,相当于是Istio为用户预留的扩展接口,以弥补自身七层网络协议处理能力的欠缺。但是目前EnvoyFilter存在诸多问题:
1、用户接口不友好,暴露实现需要的细节太多:EnvoyFilter 将 Envoy 的底层实现细节直接暴露给了运维人员,想要使用EnvoyFilter,开发人员或者运维人员就必须对Envoy的底层配置细节非常了解,例如Filter的名称和Filter内部的配置格式等,使得用户无法聚焦应用本身,难以直接交付给运维人员;
2、EnvoyFileter和Istio是强耦合关系,Istio的迭代可能造成EnvoyFilter的变更:EnvoyFilter中的匹配条件依赖于Pilot生成的Envoy配置中的结构组成和元素命名,例如监听器(Listener)的名称、过滤链(FilterChain)的构成等,而这些结构和命名在不同的Istio版本之间可能发生变化,导致原本能够正常工作的EnvoyFilter在新版本中出现问题;
3、缺乏自动化流程:在实际使用过程中,需要为每个Service创建相应的EnvoyFilter,当平台中处理的服务较多时,创建EnvoyFilter的工作非常繁琐而且及易出错;
4、调试困难,并且出错时难以排查:EnvoyFilter中的补丁(Patch)部分基本上是一个黑盒,因此 Istio 只能对 EnvoyFilter 的正确性进行非常有限的验证,这导致EnvoyFilter 的调试非常困难,当Envoy行为异常,用户无法通过有效手段定位问题点。
综上所述,虽然可以使用EnvoyFilter来在Istio中实现七层协议的处理,但是在一个生产系统,特别是一个中大型的Service Mesh中处理和维护这些EnvoyFilter是非常困难的。
为了解决上述问题,该方法中必须要选型具有特定功能的网络流量处理组件降低整个流程复杂度。该组件需要具以下几个特点:首先要具有高度抽象的用户接口;其次要具有依据特征自动为Service创建配置的自动化流程;最后要作为一个用户和Istio的中间层,与Istio解耦。
S600、网络流量处理组件生成多层网络协议相关的缺省配置,以协调全局代理设置,以及,在边缘和服务代理配置之上进行抽象,生成一层面向用户的配置自定义资源,并通过配置自定义资源对多层网络协议上网络流量进行处理,通过抽象共同基础设施到一个不同层,以降低微服务代码的复杂度。
在本实施例中,网络流量处理组件采用Aeraki项目。Aeraki的基本工作原理为:Aeraki从Istio中拉取服务数据,根据服务条目(ServiceEntry)和Aeraki流量规则生成Envoy配置,并采用EnvoyFilter将生成的配置推送到Istio中,Aeraki可以看做Istio中处理的七层协议的操作者(Operator)。
相比于直接修改 Istio 代码和采用 EnvoyFilter 这两种扩展 Istio 流量处理能力的方式,采用 Aeraki 可以带来以下有益效果:
1、不需要修改Istio代码,因此节省了单独维护一个Istio的私有代码分支的额外工作量,可以快速跟随Istio的版本迭代进行升级;
2、Aeraki项目可以作为一个独立组件部署在Mesh的控制面,因此可以很方便地作为一个插件和Istio进行集成,对Istio的流量处理能力进行扩展,实现与Istio解耦;
3、协议相关的缺省配置可以由Aeraki自动生成,并且这些配置可以根据Istio版本和K8s集群相关信息自动进行调整。节约了大量EnvoyFilter的手动创建和维护工作;
4、Aeraki在Envoy配置之上进行了抽象,提供了一层面向用户的配置CRD来对七层网络协议进行处理,控制平面支持CRD形式的扩展,同时这些配置CRD隐藏了Envoy的配置细节,屏蔽了不同Istio版本生成的缺省Envoy配置的差异,对于运维非常友好,例如对于Thrift和Dubbo这样的RPC协议,由于其语义和HTTP类似,Aeraki直接采用了IstioVirtualService和DestinationRule;对于非RPC协议,Aeraki则定义了一些新的CRD来进行处理,比如说RedisService和RedisDestination。
Aeraki的定位是做成一个非侵入式Istio功能增强工具集,通过非侵入的方式为Istio提供了任意七层网络协议的支持能力,并提供了面向用户的高级配置CRD,可以很方便地对这些协议的流量进行处理,实现灰度发布等高级流量处理能力。目前Aeraki已经支持了Thrift、Dubbo、Redis、Kafka、Zookeeper等多种应用层协议,并即将支持更多的协议。
和Istio类似,Aeraki也采用了端口名称来识别协议类型。端口取名需要遵循“tcp-七层网络协议名-xxx”的命名规则。例如,一个Thrift服务应取名为“tcp-thrift-service”。需要注意的是,必须保留端口名中的“tcp-”前缀,因为对于Istio而言,这是一个TCP协议的服务。Aeraki则会根据端口名中的七层协议来生成相应的Envoy配置,并替换Istio缺省生成的tcp_proxy。
以采用Aeraki来实现Thrift服务的TrafficSplitting用例。首先该方法在ThriftService定义的接口(Port)命名中声明该Service的七层协议网络类型:“tcp-thrift-hello-server”,然后创建一个VirtualService将Thrift请求按照指定比例路由到不同的服务版本中。Aeraki将根据服务定义和VirtualService生成所需的Envoy配置,并通过EnvoyFilter发送给Istio。
本发明的服务网格的多层网络协议处理方法,通过在Service Mesh中部署插件组件,将Service Mesh的端口暴露至服务器集群外部,实现基于Envoy的特征和Istio对外暴露的Envoy配置扩展接口,通过在Service Mesh中集成网络流量处理组件,激活Envoy支持的多种流量Filter,使Envoy支持更多七层网络协议上的网络流量处理,自动化的补全Istio下发的Envoy缺省配置,达到其他七层网络协议被有效处理的目的,对原本需要手动操作的配置进行自动化处理极大降低了流量处理成本和服务治理复杂度,提供一种非侵入性、可扩展的、自动化的方式来处理服务网格中的任何七层网络协议上的网络流量,能够应用无入侵地、无感知地充分利用服务治理的能力,为Service Mesh的待部署应用的命名空间打上标签,之后应用通过部署在打该标签的命名空间后,实现在云平台部署后,即可使用用户接口对应用进行流量处理,通过Istio的前端服务,查看分析性能指标数据通过扩展Istio本身。
下面结合图2描述本发明的服务网格的多层网络协议处理方法,该方法还包括以下步骤:
S100、部署服务器集群,并在服务器集群中部署Service Mesh。
在本实施例中,采用Kubernetes容器编排处理系统作为微服务承载平台,搭建Istio对微服务实现流量治理。
下面对本发明提供的服务网格的多层网络协议处理装置进行描述,下文描述的服务网格的多层网络协议处理装置与上文描述的服务网格的多层网络协议处理方法可相互对应参照。
下面结合图3描述本发明的服务网格的多层网络协议处理装置,该装置包括:
标记模块200,用于为Service Mesh的待部署应用的命名空间打上标签。其中,Service Mesh部署在服务器集群中,具体的,该装置中,Service Mesh采用Istio,服务器集群采用Kubernetes集群,上述标签表示自动注入Sidecar Proxy容器。
Istio逻辑上可以划分为数据平面和控制平面两个部分。其中,数据平面由一组基于Sidecar模式部署的智能化的Envoy组成。Envoy可以拦截Pod的出向和入向流量,并且可以控制和调节微服务之间所有的通信;控制平面负责处理和配置服务器集群中的全部Sidecar Proxy容器,来路由流量以及收集遥测数据。
在Istio部署后,会watch消息总线的事件,当有Pod被创建,则会触发reconcile流程,自动在Pod中注入基于Sidecar模式的容器,该容器镜像为Envoy,并且,将发往Pod内部的流量作为inbound流量,将从Pod发出的流量作为outbound流量。Istio通过命名空间的Label作为自动注入流程是否执行的判别依据,该标签为istio-injection=enabled,为需要部署应用的命名空间增加该标签。
暴露模块300,用于在Service Mesh中部署addon组件,将Service Mesh的端口暴露至服务器集群外部。
由于Istio本身只包含基于Sidecar模式的注入功能,以及控制平面组件。为了功能完整性,还需要为Istio部署addon组件完善其功能。该装置中,需要额外部署的addon组件可以为:Kiali、Promethus、Grafana、Istio-ingress-gateway中的一种或者多种的组合。其中,Kaili组件是Istio统一的前端处理页面;Promethus组件负责检测流量性能指标;Grafana组件用于展示性能指标,Istio-ingress-gateway组件是一个七层网络协议的Loadbalancer,作用是把Istio集成的各种界面或服务暴露至服务器集群外部。各个服务可以通过配置VS或Gateway在Istio-ingress-gateway组件中注册,实现集群外部可达。
应用部署模块400,用于在标记模块200中打上标签的命名空间中部署应用,应用部署成功后,可以看到应用Pod中多出了一个Proxy容器,该容器即为Istio自动注入的Sidecar Proxy。
因此,通过标记模块200和暴露模块300,基于Sidecar模式,为Pod注入Proxy,代理Pod内部流量。
组件部署模块500,用于为Service Mesh部署网络流量处理组件,扩展ServiceMesh并在Service Mesh中形成非侵入式工具集。
协议处理模块600,用于通过网络流量处理组件生成多层网络协议相关的缺省配置,以协调全局代理设置,以及,在边缘和服务代理配置之上进行抽象,生成一层面向用户的配置自定义资源,并通过配置自定义资源对多层网络协议上网络流量进行处理,通过抽象共同基础设施到一个不同层,以降低微服务代码的复杂度。
在本实施例中,网络流量处理组件采用Aeraki项目。Aeraki的基本工作原理为:Aeraki从Istio中拉取服务数据,根据ServiceEntry和Aeraki流量规则生成Envoy配置,并采用EnvoyFilter将生成的配置推送到Istio中,Aeraki可以看做Istio中处理的七层协议的操作者(Operator)。
相比于直接修改 Istio 代码和采用 EnvoyFilter 这两种扩展 Istio 流量处理能力的方式,采用 Aeraki 可以带来以下有益效果:
1、不需要修改Istio代码,因此节省了单独维护一个Istio的私有代码分支的额外工作量,可以快速跟随Istio的版本迭代进行升级;
2、Aeraki项目可以作为一个独立组件部署在Mesh的控制面,因此可以很方便地作为一个插件和Istio进行集成,对Istio的流量处理能力进行扩展,实现与Istio解耦;
3、协议相关的缺省配置可以由Aeraki自动生成,并且这些配置可以根据Istio版本和K8s集群相关信息自动进行调整。节约了大量EnvoyFilter的手动创建和维护工作;
4、Aeraki在Envoy配置之上进行了抽象,提供了一层面向用户的配置CRD来对七层网络协议进行处理,控制平面支持CRD形式的扩展,同时这些配置CRD隐藏了Envoy的配置细节,屏蔽了不同Istio版本生成的缺省Envoy配置的差异,对于运维非常友好,例如对于Thrift和Dubbo这样的RPC协议,由于其语义和HTTP类似,Aeraki直接采用了IstioVirtualService和DestinationRule;对于非RPC协议,Aeraki则定义了一些新的CRD来进行处理,比如说RedisService和RedisDestination。
Aeraki的定位是做成一个非侵入式Istio功能增强工具集,通过非侵入的方式为Istio提供了任意七层网络协议的支持能力,并提供了面向用户的高级配置CRD,可以很方便地对这些协议的流量进行处理,实现灰度发布等高级流量处理能力。目前Aeraki已经支持了Thrift、Dubbo、Redis、Kafka、Zookeeper等多种应用层协议,并即将支持更多的协议。
本发明的服务网格的多层网络协议处理装置,通过在Service Mesh中部署插件组件,将Service Mesh的端口暴露至服务器集群外部,实现基于Envoy的特征和Istio对外暴露的Envoy配置扩展接口,通过在Service Mesh中集成网络流量处理组件,激活Envoy支持的多种流量Filter,使Envoy支持更多七层网络协议上的网络流量处理,自动化的补全Istio下发的Envoy缺省配置,达到其他七层网络协议被有效处理的目的,对原本需要手动操作的配置进行自动化处理极大降低了流量处理成本和服务治理复杂度,提供一种非侵入性、可扩展的、自动化的方式来处理服务网格中的任何七层网络协议上的网络流量,能够应用无入侵地、无感知地充分利用服务治理的能力,为Service Mesh的待部署应用的命名空间打上标签,之后应用通过部署在打该标签的命名空间后,实现在云平台部署后,即可使用用户接口对应用进行流量处理,通过Istio的前端服务,查看分析性能指标数据通过扩展Istio本身。
下面结合图4描述本发明的服务网格的多层网络协议处理装置,该装置还包括:
搭建模块100,用于部署服务器集群,并在服务器集群中部署Service Mesh。
在本实施例中,采用Kubernetes容器编排处理系统作为微服务承载平台,搭建Istio对微服务实现流量治理。
图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行服务网格的多层网络协议处理方法,该方法包括以下步骤:
S200、为Service Mesh的待部署应用的命名空间打上标签;其中,所述ServiceMesh部署在服务器集群中,所述标签表示自动注入Sidecar Proxy容器;
S300、在所述Service Mesh中部署插件组件,将所述Service Mesh的端口暴露至所述服务器集群外部;
S400、在打上所述标签的所述命名空间中部署应用;
S500、为所述Service Mesh部署网络流量处理组件,扩展所述Service Mesh并在所述Service Mesh中形成非侵入式工具集;
S600、所述网络流量处理组件生成多层网络协议相关的缺省配置,以及,在Envoy配置之上进行抽象,生成一层面向用户的配置自定义资源对多层网络协议上网络流量进行处理。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的服务网格的多层网络协议处理方法,该方法包括以下步骤:
S200、为Service Mesh的待部署应用的命名空间打上标签;其中,所述ServiceMesh部署在服务器集群中,所述标签表示自动注入Sidecar Proxy容器;
S300、在所述Service Mesh中部署插件组件,将所述Service Mesh的端口暴露至所述服务器集群外部;
S400、在打上所述标签的所述命名空间中部署应用;
S500、为所述Service Mesh部署网络流量处理组件,扩展所述Service Mesh并在所述Service Mesh中形成非侵入式工具集;
S600、所述网络流量处理组件生成多层网络协议相关的缺省配置,以及,在Envoy配置之上进行抽象,生成一层面向用户的配置自定义资源对多层网络协议上网络流量进行处理。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的服务网格的多层网络协议处理方法,该方法包括以下步骤:
S200、为Service Mesh的待部署应用的命名空间打上标签;其中,所述ServiceMesh部署在服务器集群中,所述标签表示自动注入Sidecar Proxy容器;
S300、在所述Service Mesh中部署插件组件,将所述Service Mesh的端口暴露至所述服务器集群外部;
S400、在打上所述标签的所述命名空间中部署应用;
S500、为所述Service Mesh部署网络流量处理组件,扩展所述Service Mesh并在所述Service Mesh中形成非侵入式工具集;
S600、所述网络流量处理组件生成多层网络协议相关的缺省配置,以及,在Envoy配置之上进行抽象,生成一层面向用户的配置自定义资源对多层网络协议上网络流量进行处理。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种服务网格的多层网络协议处理方法,其特征在于,包括以下步骤:
为服务网格的待部署应用的命名空间打上标签;其中,所述服务网格部署在服务器集群中,所述标签表示自动注入流量代理容器;
在所述服务网格中部署插件组件,将所述服务网格的端口暴露至所述服务器集群外部;
在打上所述标签的所述命名空间中部署应用;
为所述服务网格部署网络流量处理组件,扩展所述服务网格并在所述服务网格中形成非侵入式工具集;
所述网络流量处理组件生成多层网络协议相关的缺省配置,以及,在边缘和服务代理配置之上进行抽象,生成一层面向用户的配置自定义资源,并通过所述配置自定义资源对多层网络协议上网络流量进行处理。
2.根据权利要求1所述的服务网格的多层网络协议处理方法,其特征在于,所述服务网格采用Istio。
3.根据权利要求1所述的服务网格的多层网络协议处理方法,其特征在于,所述服务器集群采用Kubernetes集群。
4.根据权利要求1-3任一项所述的服务网格的多层网络协议处理方法,其特征在于,所述为服务网格的待部署应用的命名空间打上标签步骤之前,该方法还包括以下步骤:
部署服务器集群,并在所述服务器集群中部署服务网格。
5.根据权利要求1所述的服务网格的多层网络协议处理方法,其特征在于,所述网络流量处理组件采用Aeraki项目。
6.根据权利要求1所述的服务网格的多层网络协议处理方法,其特征在于,所述插件组件包括Kiali、Promethus、Grafana、Istio-ingress-gateway中的一种或者多种的组合。
7.一种服务网格的多层网络协议处理装置,其特征在于,包括:
标记模块,用于为服务网格的待部署应用的命名空间打上标签;其中,所述服务网格部署在服务器集群中,所述标签表示自动注入流量代理容器;
暴露模块,用于在所述服务网格中部署插件组件,将所述服务网格的端口暴露至所述服务器集群外部;
应用部署模块,用于在打上所述标签的所述命名空间中部署应用;
组件部署模块,用于为所述服务网格部署网络流量处理组件,扩展所述服务网格并在所述服务网格中形成非侵入式工具集;
协议处理模块,用于所述网络流量处理组件生成多层网络协议相关的缺省配置,以及,在边缘和服务代理配置之上进行抽象,生成一层面向用户的配置自定义资源,并通过所述配置自定义资源对多层网络协议上网络流量进行处理。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述服务网格的多层网络协议处理方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述服务网格的多层网络协议处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111005392.7A CN113949702B (zh) | 2021-08-30 | 2021-08-30 | 一种服务网格的多层网络协议处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111005392.7A CN113949702B (zh) | 2021-08-30 | 2021-08-30 | 一种服务网格的多层网络协议处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113949702A CN113949702A (zh) | 2022-01-18 |
CN113949702B true CN113949702B (zh) | 2023-07-07 |
Family
ID=79327506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111005392.7A Active CN113949702B (zh) | 2021-08-30 | 2021-08-30 | 一种服务网格的多层网络协议处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113949702B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114637549B (zh) * | 2022-02-22 | 2024-06-14 | 阿里巴巴(中国)有限公司 | 基于服务网格的应用的数据处理方法、系统和存储介质 |
CN114844941B (zh) * | 2022-04-27 | 2024-07-23 | 南京亚信软件有限公司 | 基于Istio的接口级别服务治理方法及相关装置 |
CN114827249A (zh) * | 2022-05-06 | 2022-07-29 | 阿里巴巴(中国)有限公司 | 网格代理扩展的方法和装置 |
CN115134259B (zh) * | 2022-06-27 | 2024-02-02 | 平安银行股份有限公司 | 人工智能服务监测方法、装置、设备及可读存储介质 |
CN115733746B (zh) * | 2022-11-09 | 2024-06-07 | 中科驭数(北京)科技有限公司 | 一种服务网格单元的部署方法、装置、设备及存储介质 |
CN115866088A (zh) * | 2022-11-30 | 2023-03-28 | 京东科技信息技术有限公司 | 协议转换方法、装置、电子设备和计算机可读存储介质 |
CN117201302A (zh) * | 2023-07-28 | 2023-12-08 | 中科驭数(北京)科技有限公司 | 服务网格的集中式代理升级方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783570A (zh) * | 2021-01-19 | 2021-05-11 | 中原银行股份有限公司 | 基于服务网格的应用迁移方法、系统和介质 |
CN112910692A (zh) * | 2021-01-19 | 2021-06-04 | 中原银行股份有限公司 | 基于微服务网关的服务网格流量控制方法、系统和介质 |
-
2021
- 2021-08-30 CN CN202111005392.7A patent/CN113949702B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783570A (zh) * | 2021-01-19 | 2021-05-11 | 中原银行股份有限公司 | 基于服务网格的应用迁移方法、系统和介质 |
CN112910692A (zh) * | 2021-01-19 | 2021-06-04 | 中原银行股份有限公司 | 基于微服务网关的服务网格流量控制方法、系统和介质 |
Non-Patent Citations (1)
Title |
---|
基于运营商视角的服务网格技术评测与集成方案;严丽云;杨新章;何震苇;林园致;侯韶新;;电信科学(第06期);148-157 * |
Also Published As
Publication number | Publication date |
---|---|
CN113949702A (zh) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113949702B (zh) | 一种服务网格的多层网络协议处理方法及装置 | |
CN110535831B (zh) | 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质 | |
US20210328873A1 (en) | Dynamic and customizable virtual network functions | |
US20210109716A1 (en) | System and method for generating an application structure for an application in a computerized organization | |
US6470388B1 (en) | Coordinated extendable system for logging information from distributed applications | |
US8813209B2 (en) | Automating network reconfiguration during migrations | |
Masek et al. | Unleashing full potential of ansible framework: University labs administration | |
US9672140B1 (en) | Processing special requests at dedicated application containers | |
US11635752B2 (en) | Detection and correction of robotic process automation failures | |
CN113434158B (zh) | 一种大数据组件的自定义管理方法、装置、设备及介质 | |
CN112035228A (zh) | 一种资源调度方法及装置 | |
CN113709810B (zh) | 一种网络服务质量的配置方法、设备和介质 | |
US20200117831A1 (en) | Reversible anonymous telemetry data collection | |
US11635953B2 (en) | Proactive notifications for robotic process automation | |
US20200293310A1 (en) | Software development tool integration and monitoring | |
Oliveira et al. | Delivering software with agility and quality in a cloud environment | |
EP2438709B1 (en) | Network element integration | |
WO2016197688A1 (zh) | 一种数据采集方法及装置 | |
US8694596B2 (en) | Systems and methods for information brokering in software management | |
CN116820958A (zh) | 一种基于代理的多环境自动化测试方法及系统 | |
CN112422349B (zh) | 面向nfv的网管系统、方法、设备及介质 | |
CN115134367A (zh) | 云平台和业务处理方法 | |
US20210377718A1 (en) | Pattern affinity for discovery | |
EP3949275B1 (en) | Multi-domain orchestration | |
US12026491B2 (en) | System architecture for pattern-based software applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |