Istio是一个服务网格

   微服务并不像过去那样新鲜和热,这绝对是一件好事。因为我们已经发展到基于Kubernetes,Openshift和其他各种集装箱管理系统的稳定可靠的领先地步,而不是生活在前沿集装箱平台的时代。现在,基于这些容器编排提供了很多核心功能,如负载平衡,服务发现和安全性,这就是在基础架构上创建所谓的服务网格。

   Istio就是这样的一个服务网络产品,它是仅次于谷歌Kubernetes的开源贡献。将Istio称为热门话题是轻描淡写的。

Istio是控制面板,Envoy是数据面板

服务网格使分布式系统的核心功能(如服务之间的通信)更易于配置和管理。所有应用程序所需的通用网络功能集(例如处理超时,重试,速率限制,路由和负载平衡)都可以集中处理,因此每个应用程序无需单独处理这些难题。


   这有助于保持业务逻辑分离,因此开发人员可以专注于使用户满意,而不必担心堆栈的较低层。Istio通过Envoy提供这套解决方案,数据面板处理服务网格中的所有流量,以及构成管理策略和配置的控制面板的少数应用程序,即:

  • Pilot  - 流量管制 俗称飞行员
  • Mixer  - 后端集成
  • Citadel - 身份验证和授权
  • Galley  - 配置验证

 

Envoy微服务代理

   Envoy是一个代理,类似于HAProxy和Nginx,但专为微服务架构而设计。具有以下功能:

  • 动态重新配置/热重启
  • 分阶段/金丝雀部署
  • 高级负载平衡
  • 请求路由
  • 健康检查
  • 分布式跟踪


   Envoy管理内部和外部服务通信的所有路由要求,外部服务连接受益于故障恢复功能,例如超时,重试和断路器。Envoy被部署为应用程序pod中的sidecar容器,并通过gRPC从Istio控制面板接收其所有配置。

   进出应用程序的数据包被Envoy使用iptables拦截,这允许强大的路由控制和流量可见性,提供详细的指标。Envoy旨在简化高度分布式,面向服务架构中的网络和可观察性的困难。高性能和低延迟是任何有价值的代理的基本特征,因此使用C ++编写Envoy是完全合理的。

通过Pilot和Mixer进行流量控制和遥测

Mixer和Pilot是利用Istio服务网格最重要特征所不可或缺的,即:流量管理和遥测处理。

Pilot

   Envoy侧面车从Pilot接收策略以执行规则,例如允许服务A与服务B通话,但不允许服务A与服务C通话.Pilot提供请求路由和负载平衡的配置设置,以支持分阶段发布,蓝/绿部署和A / B测试。


由Pilot管理的路由规则允许Envoy根据分配给每个版本的HTTP标头和权重等条件选择指定的APP版本。


来自底层集群基础设施比如k8s的服务注册表通过Pilot 发送到 Envoy 边车共享给整个服务网格,用于动态服务发现。也就是说,Istio不负责服务注册,服务注册到K8s中,这样避免了服务注册的单点风险。


Mixer

   Mixer有一组支持的适配器,它与Prometheus和Stackdriver等基础设施后端对话,以处理和存储指标,跟踪和记录。Envoy将遥测数据发送到Mixer,然后Mixer将这些值发送到配置的后端。

总结

   在没有像Istio这样的服务网格的情况下管理分阶段部署和应用程序版本并非易事。Envoy和Istio控制面板组件通过编码请求路由配置,并将该控制权交给开发人员来支持组织的DevOps计划。

   Istio网格的另一个重要特性是您无需安装或使用所有组件。我们建议利用Istio的跟踪功能来可视化流量在您的服务和网络之间流动的方式。这是开始使用Istio的完美方式,因为它可以快速轻松地进行配置,并且无需更改您的微服务即可开始受益于此遥测。

#服务网格      #Istio  Devops 分布式系统 无服务器架构