当前位置: 首页 > 网络应用技术

让您对服务网格的开源实现的ISTIO体系结构有初步的了解

时间:2023-03-08 18:00:50 网络应用技术

  要学习ISTIO,您需要澄清以下关键条款。

  1.容器/容器镜像

  进入云时代的服务网格体系结构,应用程序的发布和部署是在Kubernetes代表的容器基础架构周围分配的。这需要清楚地了解容器和容器镜的概念。

  实际上,容器的受欢迎程度应归因于Docker技术的普及,从本质上讲,该容器是在操作系统中运行的一组过程,并且受资源隔离限制,也称为“容器运行”。它可以还原用户包装的代码并取决于其关系。通过容器化运行的应用程序可以更快,更可靠地运行,而不会受到特定计算环境的影响。

  容器镜是容器化的重要媒介和载体。在表单的术语中,它是一个轻巧,独立,可执行的软件包文件,包括运行应用程序所需的所有内容:代码,工具,系统库和各种设置。

  容器技术的出现完全颠覆了应用程序构建,发布和操作的方法,现在已成为释放服务器应用程序的事实标准。“或“应用”,在容器中的Kubernetes容器平台上运行。

  2.微服务

  微服务是一种建筑风格。它将庞大的单一服务分为一组松散的耦合微服务。微服务的集合提供了与单个应用程序相同的功能。但是,微服务可以独立开发和部署独立服务。此外,微服务围绕业务能力组织,可以由较小的团队拥有。因此,他们可以在开发/部署中实现较小和独立的迭代。

  目前,主要的微服务体系结构解决方案,由弹簧云代表的微服务体系结构系统是主流。但是,随着云本地技术概念的流行,服务网格(服务网络)微服务架构解决方案也被促进了由ISTIO代表的。

  3.控制平面

  在弹簧云代表的传统微服务体系结构中,应用程序本身与服务治理逻辑相结合。在服务网格方案,管理,服务治理行为和服务治理规则的应用是彼此独立的。统一管理。

  负责管理服务治理规则管理的逻辑或组件在服务网格体系结构中称为“控制平面”。“控制平面”主要由API和用于管理服务治理行为(数据平面)的工具组成。服务网格网格操作和维护人员可以控制控制平面以在服务网格中配置数据平面行为。

  4.数据平面

  在服务网格中,数据平面是特定服务治理行为的代理。在ISTIO中,数据平面由负责路由,负载平衡,服务发现,健康检查和授权/认证的特使代理组成。每个服务实例(在K8中,与应用程序容器相同的POD运行),拦截所有传递和传播的用户流量,在此过程中进行流量管理。

  5.货车

  在ISTIO中,数据平面由特使代理实施。它是现代的,高性能的边缘小L7代理。Envoy专为大型现代微服务体系结构而设计,可以匹配Nginx和Haproxy等负载Balangers。

  6.代理

  在网络中,代理是一个中间服务器,位于客户端和服务器之间,可以管理请求和响应。在ISTIO服务网格的情况下,代理在每个应用程序实例的前面运行。请求为代理将启动到该应用程序,将拦截请求并将其转发到应用程序实例。相似,当应用程序实例试图发出请求时,代理(Envoy)还拦截了站点请求并将其发送到目标。

  由于Envoy拦截了所有请求,因此可以修改请求,以实现交通路由,故障注入,授权和其他功能的功能。

  7.L7代理

  L7(第7层)代理在OSI模型的应用层上工作。在此级别上,代理可以处理每个请求的内容。例如,HTTP是一种流行的L7协议。因为可以访问的数据,因此可以访问L7代理。(Envoy)可以根据请求内容(URL,Cookie等)做出负载平衡决策。

  服务网格的体系结构为我们提供了一种统一的连接,保护和观察微服务的方法。网格中的代理(例如特使)可以捕获网格中的所有通信请求和指标 - 每次失败或成功的呼叫,重试或超时,请求可以被捕获,可视化和警报。

  这种将通信逻辑与业务和应用程序逻辑分开的结构可以使开发人员能够专注于业务逻辑,而服务网格操作和维护人员专注于服务网格配置。

  通过解释几个关键术语和服务网格体系结构的好处,我相信每个人都知道什么或多或少地了解服务网格。Next,我们将重点介绍ISTIO的开源服务网格实现。

  从宏观的角度来看,Istio主要支持以下功能:

  1.流量管理

  流量管理是ISTIO的核心功能。通过配置,可以通过服务治理机制(例如设置断路器,超时或重试)来控制流量,并且可以通过ISTIO中的简单配置更改来完成。

  2.天文台

  ISTIO可以通过跟踪,监视和录制服务的请求来更好地实现服务的监视,以便我们可以了解服务的运行以及及时发现和修复问题。

  3.安全性

  ISTIO可以在代理级别管理认证,授权和通信加密,而无需入侵应用程序本身。这些安全配置操作仅需要通过快速配置更改来完成。

  接下来,让我们看一下Istio架构的组成。如下所示:

  如上图所示,ISTIO对服务网格的实现仍然遵循“控制平面”和“数据平面”的共同分布式系统构建模式。

  ISTIO中的数据平面由Envoy代理组成,并且该服务之间的通信是由C ++开发的高性能代理。ISTIO将Enovy代理注射为SIDECAR容器,然后拦截到应用程序容器中服务的所有进入和出口流量。将这些Enovy代理一起注入应用程序容器,构成了ISTIO服务网格的数据平面。

  ISTIOD是ISTIO的控制平面组件,它主要提供诸如服务发现,配置和证书管理等功能。ISTIOD使用YAML文件格式编写流量控制规则并将其转换为Envoy的可操作配置。之后,将将XDS协议配置为网格中的所有Sidecar代理。

  ISTIOD由三个组成部分:飞行员,城堡和厨房组成。.CITADEL是ISTIO的核心安全组件,它实现了证书授权和证书生成,并实现了数据平面中的Sidecar代理之间的MTLS安全通信。

  Galley主要是服务配置管理,包括验证配置信息的格式和内容正确性,并将这些配置信息提供给其他控制平面组件(例如Pilot)。

  ISTIO流量管理的示意图如下:

  如上图所示,要在ISTIO服务网格中实现流量管理,您需要通过VirtualService和DestinateRule管理流量路由规则以管理流量路由规则。

  特定路由规则流的执行是由ISTIO网关资源实施的。在它们中,Ingress Gateway和Egress Gateway是ISTIO服务网格组件的一部分。两个网关中的两个都运行一个特使代理实例。接收站的连接,导出网关从集群接收连接。

  应该注意的是,进口网关和导出网关的概念不应被狭窄地理解为ISTIO服务网格的边缘入口和退出。对于ISTIO服务网格,除了外部流量的进入和退出外,您还可以通过VitrualService(虚拟服务)将流量路由关联以实现流量路由。网格也可以用来通过此方法实现交通路线。

  因此,当使用ISTIO服务网格实现微服务的流量管理时,您可以根据场景创建Gateway+VirtualService资源,并根据场景为外部流量创建网关+Virtaway+VirtualService资源,用于不同的微服务网格,并通过Via Via Via viaulualServiceModife随时随地相应的路由规则。

  为了创建网关网格资源,是根据控制还是导出流量来选择相关的入口网关或出口网关(导出网关)。

  上面的内容是对ISTIO服务网格的核心逻辑的简要介绍,以实现流量管理的核心逻辑,它也可以促进每个人了解以前的一些文章。尽管尚未完全替换ISTIO服务网格架构弹簧云微型服务系统,服务网格的体系结构思想与平面和数据平面的分离分开,将是未来微服务体系结构的主流。