美文网首页服务容器编排
微服务2.0来了,Istio是一个服务网格

微服务2.0来了,Istio是一个服务网格

作者: 新强吖 | 来源:发表于2018-10-25 19:35 被阅读60次

去年在公司实践了微服务,今年逐步完善了整个架构体系,包括PaaS平台的上线和完善,7月份的时候参加蚂蚁的一个技术分享会,了解他们在推动服务网格,后面逐步关注这块,接触到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测试。

[图片上传失败...(image-4cf5a0-1540467207337)]

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

[图片上传失败...(image-3f9131-1540467207337)]

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

Mixer

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

stio 首先是一个服务网络,但是Istio又不仅仅是服务网格: 在 Linkerd, Envoy 这样的典型服务网格之上,Istio提供了一个完整的解决方案,为整个服务网格提供行为洞察和操作控制,以满足微服务应用程序的多样化需求。

Istio在服务网络中统一提供了许多关键功能(以下内容来自官方文档):

  • 流量管理:控制服务之间的流量和API调用的流向,使得调用更可靠,并使网络在恶劣情况下更加健壮。

  • 可观察性:了解服务之间的依赖关系,以及它们之间流量的本质和流向,从而提供快速识别问题的能力。

  • 策略执行:将组织策略应用于服务之间的互动,确保访问策略得以执行,资源在消费者之间良好分配。策略的更改是通过配置网格而不是修改应用程序代码。

  • 服务身份和安全:为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转。

除此之外,Istio针对可扩展性进行了设计,以满足不同的部署需要:

  • 平台支持:Istio旨在在各种环境中运行,包括跨云, 预置,Kubernetes,Mesos等。最初专注于Kubernetes,但很快将支持其他环境。

  • 集成和定制:策略执行组件可以扩展和定制,以便与现有的ACL,日志,监控,配额,审核等解决方案集成。

这些功能极大的减少了应用程序代码,底层平台和策略之间的耦合,使微服务更容易实现。

istio架构图

image

Istio的关键功能包括:

  • HTTP/1.1,HTTP/2,gRPC和TCP流量的自动区域感知负载平衡和故障切换。
  • 通过丰富的路由规则,容错和故障注入,对流行为的细粒度控制。
  • 支持访问控制,速率限制和配额的可插拔策略层和配置API。
  • 集群内所有流量的自动量度,日志和跟踪,包括集群入口和出口。
  • 安全的服务到服务身份验证,在集群中的服务之间具有强大的身份标识。

总结

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

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

相关文章

  • Service Mesh服务网格清单

    Service Mesh服务网格清单 Istio Istio官网Istio中文官网Istio开源无需太多介绍Ser...

  • 微服务2.0来了,Istio是一个服务网格

    去年在公司实践了微服务,今年逐步完善了整个架构体系,包括PaaS平台的上线和完善,7月份的时候参加蚂蚁的一个技术分...

  • Istio入门

    今天学学Istio Istio 服务网格 Istio 解决了开发人员和运营商在分布式微服务架构中面临的挑战。无论您...

  • Istio快速入门

    为什么要使用Istio Istio 可以让你轻松部署一个支持负载均衡、服务间认证、自动监控等功能的服务网格,而这并...

  • Istio竟然有这么多功能,拜拜了SpringCloud

    1 简介 Istio,希腊语,意扬帆起航。 一个完全开源的服务网格产品,对分布式应用是透明的。Istio 管理服务...

  • 什么是service mesh、Istio、microservi

    什么是service mesh?像Istio这种项目。在基础设施层提供应用间的数据共享。 Istio是一个服务网格...

  • Vistrual Service & Destination R

    虚拟服务(Vistrual Service)是 Istio 重要的资源对象之一,作用是将流量路由到网格中的服务。支...

  • Istio 路由管理

    Istio中的路由包含以下几种常见的对象: VirtualService:Istio服务网格中定义的路由规则,控制...

  • Service Mesh - 了解Istio

    王者的诞生:为什么Istio有如此高的呼声? 什么是 Istio? 官方定义:它是一个完全开源的服务网格,作为透明...

  • istio-日志-Envoy’s access logging

    本任务展示如何配置 Istio 来自动地收集网格中服务的遥测指标。任务的最后,将为调用网格内部的服务打开一个新的日...

网友评论

    本文标题:微服务2.0来了,Istio是一个服务网格

    本文链接:https://www.haomeiwen.com/subject/tfgctqtx.html