暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Istio服务网格XDS协议基础概念​

CloudNativeX 2021-04-23
1839

Pilotistio的控制中心,充当指挥官的作用。如果把数据面板的Envoy当作agent端,那么Pilot类似传统C/S架构中的Server服务器端,它通过下发指令控制客户端Envoy完成业务功能,比如流量治理,熔断,灰度等功能。

Pilot在架构上,由用户接口层,抽象模型层,平台适配层和面向EnvoyXDS协议层构成。


图一: Pilot组成架构


平台适配器PlatformAdapter)负责监听底层平台,并完成从平台特有的服务模型到Istio规范模型的转换,像接入K8SMesos等平台。

用户API接口层,提供了面向业务的高层抽象,面向研发、运维等。

抽象模型层是为了提供不同底层基础平台像k8sconsul等的支持,于是将不同输入来源的数据有一个统一的存储格式。

xDS协议接口是将服务策略和流量规则下发到数据面的Envoy中,提供一套标准的API接口。这篇文章就是介绍XDS协议的基础概念。


xDS协议是Envoy动态获取配置的传输协议,也是IstioEnvoy连接的重要桥梁。


Envoy通过文件系统或者查询一个或者多个管理服务器来动态获取配置。总体来说,这些发现服务及相关API被统称为xDSxDS是一类发现服务的总称,包含LDSRDSCDSEDSSDS


一些基本术语: 

Downstream(下游): 下游主机连接到Envoy,发送请求并接收响应,即发送请求的主机。

Upstream(上游): 上游主机接收来自Envoy的连接和请求,并返回响应,即接受请求的主机。

Listener(监听器): 监听器是命名网地址(例如,端口、unixdomain socket ),下游客户端可以连接这些监听器。Envoy暴露一个或者多个监听器给下游主机连接。

Cluster(集群): 集群是指Envoy连接的一组逻辑相同的上游主机。Envoy通过服务发现来发现集群的成员。可以选择通过主动健康检查来确定集群成员的健康状态。Envoy通过负载均衡策略决定将请求路由到集群的哪个成员。

xDS是一类发现服务的总称,包含LDSRDSCDSEDSSDS


图二: Envoy代理基本术语图示



1LDS:  Listener发现服务。Listener监听器控制Envoy启动端口监听,目前只支持TCP,并配置L3L4层过滤器,在网络连接到达后,由网络过滤器堆栈开始处理。Envoy根据监听器的配置,执行不同的代理任务(限流、客户端认证、HTTP连接管理、TCP代理等)。


2RDS:  Route发现服务,用于 Envoy HTTP连接管理器动态获取路由配置。路由配置包含HTTP头部修改(增加、删除HTTP头部键值)、VirtualHosts(虚拟主机)及VirtualHosts义的各个路由条目。


3CDS:  Cluster发现服务,用于动态获取Cluster信息。Envoy Cluster管理器管理着所有的上游ClusterEnvoy一般从Listener(针对TCP协议)或Route(针对HTTP)中抽象出上游Cluster,作为流量转发目标。


4EDS:  Endpoint发现服务。在Envoy术语中,Cluster成员叫作Endpoint,对于每个ClusterEnvoy都通过EDS API动态获取Endpoint。之所以将EDS作为首选的服务发现机制,是因为:

◎ 与通过DNS解析的负载均衡器进行路由相比,Envoy能明确知道每个上游主机的信息,从而做出更加智能的负载均衡决策。

Endpoint 配置包含负载均衡权重、可用域等附加主机属性,这些属性可用于服务网格负载均衡、统计收集等。


5SDS:  Secret发现服务,用于在运行时动态获取TLS证书。若没有SDS特性,则在k8s环境下必须创建包含证书的Secret,在代理启动前必须将Secret挂载到Sidecar容器中,如果证书过期,则需要重新部署。在使用SDS后,集中式的SDS服务器将证书分发给所有的Envoy实例,如果证书过期,则服务器会将新的证书分发,Envoy在接收到新的证书后重新加载,不用重新部署。Envoy通过xDS API可以动态获取Listener(监听器)、Route(路由)、Cluster(集群)、Endpoint(集群成员)及Secret(证书)配置。


图三:xDS服务发现配置案例


文章转载自CloudNativeX,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论