istio根本概念、架构、重要功能和原理

[复制链接]
发表于 2026-2-25 03:27:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前言 Service Mesh

配景

传统单体应用的缺点:
连续摆设困难,单体应用的某一个组件更新,必要重新摆设整个应用,一旦摆设失败,造成整个应用宕机。
而微服务架构,将单体应用拆分为多个微服务,各微服务之间通过网络举行通讯,办理上面的标题。
微服务由两部门构成:

  • 业务逻辑:界说如那里理应用业务逻辑
  • 网络功能:负责服务间的通讯,如超时重试,服务发现,负载平衡等
但带来一个寻衅:怎样标准化管理各个微服务,怎样包管微服务间的可靠通讯,怎样确保可用性
Service Mesh作为业务逻辑和网络层之间的网络署理,与业务逻辑解耦,重要实现复杂网络中的服务间通讯,如负载平衡,服务发现,熔断,动态路由等功能。
Service Mesh架构如图:

Service Mesh作为独立运行层,它很好地办理了上述所面临的寻衅,使应用具备处理处罚网络弹性逻辑和提供可靠交互哀求的本领。它使得耦合性更低、机动性更强,跟现有情况的集成时间和人力代价更小,也提供多语言支持、多协议支持,运维和管理本钱更低。最重要的是开发职员只需关注业务代码逻辑,而不必要关注业务代码以外的其他功能,即Service Mesh对开发职员是透明的。
一 istio根本概念

istio就是Service Mesh产物的实现
官方表明:istio是一个完全开源的服务网格,作为透明的一层接入到现有的分布式应用步伐里;也是一个平台,拥有可以集成任何日志日志、遥测和战略体系的API接口
二 istio架构和原理

istio的架构分为数据平面(date plane)和控制平面(control plane)。

数据平面:由一组和业务服务成对出现的Sidecar署理(Envoy)构成,重要功能是担当服务的收支流量,通报并控制服务和Mixer组件的全部网络通讯
控制平面:重要包罗Pilot、Mixer、Citadel组件,重要功能是通过设置和管理Sidecar署理来举行流量控制,并设置Mixer去实验战略和网络遥测数据(Telemetry)
各组件先容:


  • Envoy
Istio的数据平面就是指署理,Istio选择Envoy作为Sidecar署理
Envoy是一款基于C++11开发的高性能的网络署理步伐,是如今Istio默认的数据平面
除了具有强盛的网络控制本领外,Envoy还可以将流量举动和数据提取出来发送给Mixer组件,用以举行监控监控


  • Pilot
Pilot 是Istio实现流量管理的焦点组件,它重要的作用是从平台(如Kubernetes)获取服务信息,完成服务发现;获取Istio的各项设置,转换成Envoy署理规则转发。
比如可以为署理之间设置特定的流量规则,大概设置超时、重试、熔断如许的弹性本领。
Pilot会将控制流量举动的路由规则转换为Envoy的设置,并在运行时将它们广播到Envoy。
别的,Pilot还可以大概把服务发现机制抽象出来并转换成API分发给Envoy,使得后者具有服务发现的本领。


  • Mixer
Mixer的重要功能是提供战略控制,并从Envoy署理网络遥测数据。
每次网络通讯时Envoy署理都会向Mixer发出预检要求,用来检测调用者的正当性。调用之后Envoy代分析发送遥测数据供Mixer网络。一样平常情况下Sidecar署理可以缓存这些数据,不必要频仍地调用Mixer。


  • Citadel
Citadel是与安全相干的组件,重要负责密钥和证书的管理。它可以提供服务间和终端用户的身份认证,还可以加密服务网格中的流量。在反面先容安全主题的第8章中,我们会具体分析它是怎样和其他组件协同工作的。
三 istio功能和原理

重要功能:流量管理、安全、可观察性
3.1 流量管理

Istio的流量管理是通过Pilot和Envoy这两个组件实现的,将流量和底子办法举行相识耦。Pilot负责设置规则,并把规则分发到Envoy署理去实验;而Envoy按照规则实验各种流量管理的功能,比如动态哀求路由(负载平衡、A/B测试、金丝雀摆设),故障处理处罚(超时、重试和熔断),还可以通过故障注入来测试服务之间的容错本领。
istio官网-流量管理
3.1.1 动态路由

服务发现和负载平衡:
服务发现的条件条件是具有服务注册的本领。如今Kubernetes这类容器编排平台也提供了服务注册的本领。
Pilot组件会从平台获取服务的注册信息,并提供服务发现的接口,Envoy得到这些信息并更新到本身的负载平衡池。Envoy会定期地对池中的实例举行康健查抄,剔除离线的实例,包管服务信息的实时性。
默认情况下,Istio 利用轮询的负载平衡战略,实例池中的每个实例依次获取哀求。Istio 同时支持随机、权重、最少哀求等的负载平衡模子, 可以在 DestinationRule 中为流向某个特定服务或服务子集的流量指定这些模子
3.1.2 故障处理处罚



  • 超时
    超时是 Envoy 署理等待来自给定服务的回复的时间量,以确保服务不会由于等待回复而无穷期的挂起, 并在可推测的时间范围内调用乐成或失败。
    超时太长大概会由于等待失败服务的复兴而导致太过的延伸; 而超时过短则大概在等待涉及多个服务返回的操纵时触发不须要的失败
    istio答应利用捏造服务通过设置动态调解超时战略
  • 熔断
    熔断是指限定对服务中单个主机的调用,如对某主机设置并发毗连的数量或调用失败的次数,一旦高出这个限定,熔断器就会制止毗连到该主机
    istio官网-熔断
    官网示例实验步调:
    1、摆设httpbin服务,为其设置熔断战略
    2、用fortio客户端去触发熔断规则,乐成触发熔断

    图为设置熔断规则并发最大为1,fortio发送并发数为3的哀求,触发熔断
3.1.3 故障注入

故障注入是为了测试服务的故障规复本领,有两种注入模式,都利用捏造服务设置:
延伸:延伸是时间故障。它们模仿增长的网络延伸或一个超载的上游服务。
制止:制止是瓦解失败。他们模仿上游服务的失败。制止通常以 HTTP 错误码或 TCP 毗连失败的情势出现。
故障注入设置不能与同一个捏造服务上的重试或超时设置相团结
istio官网-故障注入
官网示例实验步调:
1、按bookinfo yaml摆设bookinfo项目
2、为reviews服务设置故障注入制止战略
3、访问[host]:[productpageServicePort],提示reviews service is currently unavailable

3.2 安全

Istio 中的安全架构是由多个组件协同完成的。Citadel是负责安全的重要组件,用于密钥和证书的管理;Pilot会将授权战略等信息分发给Envoy署理;Envoy根据战略实现服务间的安全通讯;Mixer负责管理授权等工作。
3.3 可观察性

Istio可以很方便地和各种监控监控、追踪工具集成,以便我们以可视化的方式(网页)直观地查察整个体系的运行状态。比如可以集成Prometheus来举行指标数据的网络,然后将网络的数据放在Grafana监控监控工具中展示;还可以集成Jaeger作为追踪体系,资助我们对哀求的调用链举行跟踪,在故障发生时分析出现标题的根源;大概将哀求日志日志记录到Kibana体系,以图表的方式举行数据分析
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表