Istio 学习记录

摘要:
Istio学习记录1.简介Istio是ServiceMesh的产品。GalleryGallery组件是用于配置获取、验证、处理和分发的组件。它的设计核心是“解耦”,将“从底层平台获取用户配置”与Istio解耦=============================================Istio在架构上也分为数据平面和控制平面。Istio数据表面的默认sidecar是Envoy,它是L4/L7的高性能网络代理组件。官方参考网站上的Istio简介:什么是Istio?本文让您彻底了解了Istio的分层体系结构?

Istio 学习记录

一、简介

Istio是ServiceMesh的产品化落地。

(1) 它帮助微服务之间建立连接,帮助研发团队更好的管理与监控微服务,并使得系统架构更加安全。

(2) 它帮助微服务分层解耦,解耦后的proxy层能够更加专注于提供基础架构能力,例如:

  • 服务发现(discovery)
  • 负载均衡(load balancing)
  • 故障恢复(failure recovery)
  • 服务度量(metrics)
  • 服务监控(monitoring)
  • A/B测试(A/B testing)
  • 灰度发布(canary rollouts)
  • 限流限速(rate limiting)
  • 访问控制(access control)
  • 身份认证(end-to-end authentication)

(3) 它使得业务工程团队与基础架构团队都更加高效的工作,各自专注于自己的工作,更好的彼此赋能。

二、架构图

图一

Istio 学习记录第1张

图二

Istio 学习记录第2张

服务(最上面的小红框),通过本地通讯与proxy交互。

数据平面,由一系列proxy组成(中间一层的两个小红框),核心职责是:高效转发;接收和实施来自mixer的策略;

控制平面(底下的大红框),核心是控制与应用,核心职责是:管理和配置边车代理;通过mixer实施策略与收集来自边车代理的数据;

三、架构及模块

Istio采用二层架构,五大模块,进行微服务ServiceMesh解耦:

(1) 数据平面,主要负责高效转发

  • envoy模块:即proxy;

(2) 控制平面,主要负责控制与应用

  • mixer模块:支持跨平台,标准化API的adapter;
  • pilot模块:控制与配置envoy的大部分策略;
  • citadel模块:安全相关;
  • galley模块:与底层平台(例如:K8S)配置解耦;

四、模块功能详述

数据面核心组件

Envoy的核心职责是高效转发,更具体的,它具备这样一些能力:

  • 服务发现
  • 负载均衡
  • 安全传输
  • 多协议支持,例如HTTP/2,gRPC
  • 断路器(Circuit breakers)
  • 健康检查
  • 百分比分流路由
  • 故障注入(Fault injection)
  • 系统度量

控制面核心组件

Mixer

Mixer的一些核心能力是:

  • 跨平台,作为其他组件的adapter,实现Istio跨平台的能力;
  • 和Envoy通讯,实时各种策略
  • 和Envoy通讯,收集各种数据

Mixer的设计核心在于“插件化”,这种模型使得Istio能够适配各种复杂的主机环境,以及后端基础设施。


Pilot

Pilot作为非常重要的控制平面组件,其核心能力是:

  • 为Envoy提供服务发现能力;
  • 为Envoy提供各种智能路由管理能力,例如A/B测试,灰度发布;
  • 为Envoy提供各种弹性管理能力,例如超时,重试,断路策略。

Pilot的设计核心在于“标准化”,它会将各种流控的控制命令转化为Envoy能够识别的配置,并在运行时,将这些指令扩散到所有的Envoy。

Pilot将这些能力抽象成通用配置的好处是,所有符合这种标准的Envoy都能够接入到Pilot来。


潜台词是,任何第三方可以实现自己的proxy,只要符合相关的API标准,都可以和Pilot集成。


Citadel

Citadel组件,它提供终端用户身份认证,以及服务到服务的访问控制。总之,这是一个和安全相关的组件。

Galley

Gally组件,它是一个配置获取、校验、处理、分发的组件,它的设计核心在于“解耦”,它将“从底层平台(例如:K8S)获取用户配置”与Istio解耦开来。

======================================================================

Istio在架构上同样分为数据面和控制面两大块。

数据面
数据面控制服务所有进出流量,并植入服务治理逻辑。数据面同时负责控制面制定的策略的执行,并上报遥感数据至控制面。
Istio数据面默认的sidecar为Envoy,Envoy是L4/L7的高性能网络代理组件。
控制面
控制面由Pilot、Mixer、Citadel、Galley四部分组成。
Pilot
提供服务发现、流量动态路由和服务间的弹性能力(超时、重试、速率限制、熔断等)。
Mixer
承担ACL、策略执行、黑白名单等职责,并收集服务遥感数据。
Citadel
提供安全证书下发和管理的能力。
Galley
Galley提供抽象的、统一的配置校验能力。

参考资料

官网

Istio入门:什么是Istio?Istio的4个主要功能和实现原理

istio的原理和功能介绍

istio简介和基础组件原理(服务网格Service Mesh)

Istio 是啥?一文带你彻底了解

Istio分层架构?据说80%的人会误解

服务网格:什么是Envoy(特使)

Istio系列二:Envoy组件分析

Istio系列三:Mixer、Pilot组件分析实践

Istio流控,服务发现,负载均衡,核心流程是如何实现的? 

什么是四层(L4 proxy)和七层负载均衡(L7 proxy)?区别是什么? 翻译自Nginx官网

免责声明:文章转载自《Istio 学习记录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇USB的挂起和唤醒 (Suspend and Resume)〈转〉Mysql数据优化--DBA梳理珍藏篇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

docker安装MySQL5.7示例!!坑,ERROR 1045 (28000): Access denied for user

处理mysql1045错误1.在/usr/local/mysql/conf中添加一个文件。d目录:mysql文件的内容是:[mysqld]skip-grant-tables2重新启动mysql:dockerstartmysql5.73进入docker:dockerexec-itmysql5.7bash4登录mysql:mysql-uroot-p5将root密...

【转】设置:ftl模板文件编辑器

在学习了Freemarker如何生成Word文件的知识后,博客作者使用Eclipse进行开发,并使用内置JSP框架编辑ftl文件。在编辑ftl文件之前,如果您的Eclipse没有指定ftl的编辑方法,则会提示您安装ftl模板的编辑器或使用TextEditor进行编辑。我没有选择在这里为ftl模板安装编辑器,所以我跳过了。...

一些替代Xshell的软件推荐

TransmitTransmit是一个30美元价格的共享软件,它覆盖了几乎所有的常用功能,包括远程文件编辑和文件夹同步,尽管其有30美元的价格,很多Windows用户也希望Transmit能出一个Win版的。FireFTPFireFTP是一个Firefox扩展,能直接集成一个强大的FTP客户端到我们最喜爱的浏览器Firefox上。CyberduckCyber...

ECMWF 和 GFS 模型

请注意,这里的命名法有点混乱,但ECMWF代表欧洲中期天气预报中心,是组织和模型的名称。从统计上讲,非常明确的答案是ECMWF始终比GFS表现更好,如上面的模型技能得分图所示。说到飓风,ECMWF和GFS模型在预测飓风或热带风暴可能去哪里方面做得相当好,但在确定强度方面却出了名的糟糕这将是。...

关于异常STATUS_IN_PAGE_ERROR(0xC0000006)

表示0x%p处的指令引用了位于0x%p的内存。由于0x%x的I/O错误状态,未将所需数据放入内存。设备如果读取出错,驱动程序可以返回此异常。其定义如下:////MessageId:STATUS_IN_PAGE_ERROR////MessageText:////Theinstructionat0x%preferencedmemoryat0x%p.Therequ...

C#开发: 通信篇-TCP客户端

然后指定发送端口号,信息将发送到李思计算机的网络应用程序B。它分为服务器和客户端。请解释本节教您如何用C#编写TCP客户端程序页。请确保您已经学习了C#开发:通信-串行端口调试助手。在撰写连接程序的正式文件时,将不会重复上述文章中涉及的基本知识:https://docs.microsoft.com/en-us/dotnet/api/system.net.so...