智客公社

标题: 新闻速览浅析Istio组件Envoy的流量管理 [打印本页]

作者: 正午的阳光    时间: 2022-6-23 19:10
标题: 新闻速览浅析Istio组件Envoy的流量管理

背景介绍微服务架构带来的开发便捷性使业务功能的开发周期明显缩短,通过对于云计算平台架构的原生化,让业务功能的持续集成与交付更为敏捷。但同时微服务架构也引入了服务治理的诸多问题:一个应用由多个服务组成,每个服务有数个例,每个例的运行状态又在时变化,这些催生了服务间通讯层的出现。通讯层既不与应用程序代码耦合,又能捕获到底层环境的动态变化并作出适当的调整,避免业务出现单点故障。加速器的最新消息可以到我们平台网站了解一下,也可以咨询客服人员进行详细的解答!https://www.tiandiapp.com/


1SM简介11服务格(S M)简介服务络是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务格负责在这些拓扑中现请求的可靠传递。在践中,服务格通常现为一组轻量级络代理,它们与应用程序一起部署,但对应用程序透明。



从局部看,服务格技术就是在应用节点上部署代理,应用将请求发给代理,由代理完成点对点的路由转发。



在上面的图中,如果把左边图中的应用程序去掉,只呈现出来代理和它们之间的调用关系(即右图)。这时S
M的概念就会清晰:代理和调用关系形成完整的络,代表服务间复杂的调用关系,承载着系统内的所有应用。

12服务络架构特点及势1)点对点通讯:没有中心瓶颈。

2)对应用入侵:可以支持异构技术产品的集成。同时对应用透明,应用开发不再需要关心复杂的络通讯现,可以专注业务逻辑的现。

2I及E简介

I是一个由G,IBM和L团队合作开发的开源S
M框架。目前已成为SM的事技术标准,被广泛应用于各个行业的IT架构。



E 是用
C++语言开发的高性能代理,其内置服务发现、负载均衡、TLS终止、HTTP2、GRPC代理、熔断器、健康检查,基于百分比流量拆分的灰度发布、故障注入等功能,用于协调服务格中所有服务的入站和出站流量。

3E流量管理的原理31I介绍I调用L中的进行流量管理。是一个运行在用户空间的应用软件,它通过控制L内核模块,来管理络数据包的流动与转送,际上才是防火墙真正的安全框架。是L络安全大厦的基石,它提供了一整套钩子(H)函数机制,IP层的5个钩子点对应了的5个内置链条:

PREROUTING:在此DNAT。POSTROUTING:在此SNAT。INPUT:处理输入给本地进程的封包。OUTPUT:处理本地进程输出的封包。FORWARD:处理转发给其他机器、其他络命空间的封包。32关于络入站的IP封包从络入站的IP封包,先入TREOUTING链,而后进行路由判断:

1)如果封包路由目的地是本机:则进入INPUT链,然后发给本地进程。

2)如果封包路由目的地不是本机,并且启用了IP转发,则进入FORWARD链,然后通过POSTROUTING链,比较后经过络接口发走。

3)对于本地进程发往协议栈的封包,则首先通过OUTPUT链,然后通过POSTROUTING链,比较后经过络接口发走。

33关于自定义链除此以外,我们还可以自定义链,但自定义链只能被某个默认的链当做动作去调用才能起作用。

在K中I通过A 的机制将E
S自动注入,与应用容器运行于同一个P中,这种情况下它们将共享络称空间,因此也使用同一个络协议栈。

I 给应用 P 注入的配置主要包括:

1)I 容器 -:用于P中设置端口转发。

2) S 容器 -:运行E
S代理。

34I配置规则在容器初始化后,我们进入S容器切换为用户,查看配置的规则。

--S

ISTIO_INBOUND 链:对所有进入P但非指定端口(如22)的流量全部重定向至15006端口(E入口流量端口)进行拦截处理。

ISTIO_OUTPUT 链:将由 -
用户空间发出且目的地不为的P流出流量全部重定向至15001端口(出口流量端口)。其他流量全部直接放行至下一个POSTROUTING链,不用被E拦截处理。

整体流量流向示意图如下图所示:



1)进入P的I流量首先被PREROUTING链拦截并处理。

2)当TCP请求进入PREROUTING链时全部交给ISTIO_INBOUND处理。

-A PREROUTING -- ISTIO_INBOUND3)请求目标端口非1500822150901502115020的TCP请求全部交给ISTIO_IN_REDIRECT处理。

-A ISTIO_INBOUND -- ISTIO_IN_REDIRECT4)将发送到此的TCP请求全部重定向至15006端口(E入口流量端口)

-A ISTIO_IN_REDIRECT -- REDIRECT --- 150065)在E内部处理后,决定将数据包转发到应用,这一步对E来说属于出口流量,会被拦截转发至出口流量OUTPUT链。

6)出站请求,当TCP请求进入OUTPUT链时全部交给ISTIO_OUTPUT处理。

-A OUTPUT -- ISTIO_OUTPUT7)匹配出站请求对应规则,请求本地服务,出口为卡同时来自-用户空间,流量返回到它的调用点中的下一条链执行,即POSTROUTING链


-A ISTIO_OUTPUT ---- 1337 - RETURN -A ISTIO_OUTPUT ---- 1337 - RETURN8)S发出的请求到达目标应用。

9)目标应用处理完业务逻辑后响应S,这一步对应用来说属于出口流量,再次被拦截转发至出口流量OUTPUT链。

10) 出站请求,当TCP请求进入OUTPUT链时全部交给ISTIO_OUTPUT处理。

-A OUTPUT -- ISTIO_OUTPUT11)请求下一个服务响应请求,即请求非本地服务同时不来自-用户空间,流量被转发至ISTIO_REDIRECT链。

-A ISTIO_OUTPUT - ISTIO_REDIRECT12)将重定向于此的TCP协议请求流量全部重定向至15001端口(E出口流量端口)。

-A ISTIO_REDIRECT -- REDIRECT --- 1500113)在E内部处理后,决定将数据包对外转发,这一步对E来说属于出口流量,会被拦截转发至出口流量OUTPUT链。

14)出站请求,当TCP请求进入OUTPUT链时全部交给ISTIO_OUTPUT处理。

-A OUTPUT -- ISTIO_OUTPUT15)请求非本地的服务,出口不为卡同时来自-用户空间则跳过了ISTIO_REDIREC处理,直接RETURN到下一个链,即POSTROUTING链

-A ISTIO_OUTPUT ---- 1337 - RETURN -A ISTIO_OUTPUT ---- 1337 - RETURN16)POSTROUTING链处理完成后,根据路由表选择合适的卡发送O流量。

4总结E的核心工作内容在于对业务透明的请求拦截,将所有进出流量进行管理。对拦截的请求进行一定的规则进行安全访问控制、接入控制、流量控制等诸多方面处理后,发送给应用程序。通过使用E,可以使开发者专注于应用功能的开发,不用考虑复杂的络通讯。




欢迎光临 智客公社 (http://bbs.cnaiplus.com/) Powered by Discuz! X3.4