文档首页 > > 产品介绍>

什么是应用服务网格

什么是应用服务网格

分享
更新时间:2021/04/27 GMT+08:00

什么是应用服务网格

应用服务网格ASM提供非侵入式的微服务治理解决方案,支持完整的生命周期管理和流量治理,兼容Kubernetes和Istio生态,功能包括负载均衡、熔断、限流等多种治理能力。并内置金丝雀、蓝绿灰度发布流程,提供一站式自动化的发布管理。

什么是Istio

Istio是一个提供连接、保护、控制以及观测功能的开放平台,通过提供完整的非侵入式的微服务治理解决方案,能够很好的解决云原生服务的管理、网络连接以及安全管理等服务网络治理问题。

随着微服务的大量应用,其构成的分布式应用架构在运维、调试、和安全管理等维度变得更加复杂,开发者需要面临更大的挑战,如:服务发现、负载均衡、故障恢复、指标收集和监控,以及金丝雀发布、蓝绿发布、限流、访问控制、端到端认证等。

在较高的层次上,Istio有助于降低这些部署的复杂性,并减轻开发团队的压力。它是一个完全开源的服务网格,可以透明地分层到现有的分布式应用程序上。它也是一个平台,包括允许集成到任何日志记录平台、遥测或策略系统的API。Istio的多样化功能使您能够成功高效地运行分布式微服务架构,并提供保护、连接和监控微服务的统一方法。

服务网格

服务网格(Service Mesh)通常用于描述构成应用程序的微服务网络以及应用之间的交互。它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求,例如 蓝绿发布、金丝雀发布、限流、访问控制和端到端认证等。

为什么要使用Istio

Istio提供了一个完整的解决方案,通过为整个服务网格提供行为洞察和操作控制来满足微服务应用程序的多样化需求。

Kubernetes提供了部署、升级和有限的运行流量管理能力,但并不具备熔断、限流降级、调用链治理等能力。Istio是基于Kubernetes构建的开放平台,它很好的补齐了Kubernetes在微服务治理上的诸多能力。

图1 Istio和Kubernetes的关系

想要让服务支持Istio,只需要在您的环境中部署一个特殊的sidecar代理,使用Istio控制平面功能配置和管理代理,拦截微服务之间的所有网络通信:

  • 实现HTTP、gRPC、WebSocket 和 TCP 流量的自动负载均衡。
  • 通过丰富的路由规则、重试、故障转移和故障注入,可以对流量行为进行细粒度控制。
  • 可插入的策略层和配置 API,支持访问控制、速率限制和配额。
  • 对出入集群入口和出口中所有流量自动度量指标、日志记录和追踪。
  • 通过强大的基于身份的验证和授权,在集群中实现安全的服务间通信。

Istio 旨在实现可扩展性,满足各种部署需求。

产品架构

应用服务网格产品架构如图2

图2 应用服务网格架构

控制面组件:

应用服务网格控制面组件(Istio-master)每Kubernetes集群部署一套,可以独占用户节点,也可以与用户节点共享,都使用租户内的ECS或BMS节点。数据面Envoy和业务容器部署在同一个Pod中,在创建Pod时自动注入。

控制面和数据面架构如图:

控制面

  • Pilot:服务发现和治理规则维护是Istio的控制中枢。Pilot直接从运行平台提取数据并将其构造和转换成Istio的服务发现模型。Pilot负责将各种规则转换成Envoy可识别的格式,通过标准的xDS协议发送给Envoy,指导Envoy完成动作。在通信上,Envoy通过gRPC流式订阅Pilot的配置资源。
  • Mixer:网格遥测和遥测数据收集。当网格中的两个服务间有调用发生时,服务的代理Envoy就会上报遥测数据和服务间访问的策略执行。
  • Citadel:网格安全管理组件。提供了自动生成、分发、轮换与撤消密钥和证书功能。
  • Sidecar-injector:自动注入服务。只要开启了自动注入,在Pod创建时就会自动调用Istio-sidecar-injector向Pod中注入Sidecar容器。
  • Egressgateway:出方向流量网关。
  • Ingressgateway:入方向流量网关。
  • Galley:用于校验Istio相关配置文件。
  • Policy:执行预检查能力。
  • Telemetry:遥测监控能力。

数据面

Envoy:轻量级高性能开源服务代理。作为服务网格的数据面,Envoy提供了动态服务发现、负载均衡、TLS、HTTP/2 & gRPC代理、熔断器、健康检查、流量拆分、灰度发布、故障注入等功能,Istio提供的大部分治理能力最终都落实到Envoy的实现上。 拦截到业务容器的出流量和入流量并执行响应的操作。

产品功能

灰度发布

  • 基于请求内容灰度规则:支持基于请求内容灰度规则,可以配置Header、Cookie等多种请求信息。
  • 基于权重灰度规则:支持基于流量权重的灰度规则,根据权重比例分配流量。
  • 金丝雀灰度流程:提供向导方式,引导用户完成金丝雀灰度流程,包括灰度版本上线、观察灰度版本运行、配置灰度规则,观测访问情况,切分流量等。
  • 蓝绿灰度流程:提供向导方式引导用户完成蓝绿灰度流程,包括灰度版本上线、观察灰度版本运行、观测访问情况、版本切换等。
  • 无人值守灰度发布:配置灰度版本、灰度规则和触发条件,自动完成灰度发布流程。

流量治理

  • 七层连接池管理:支持界面基于拓扑配置,配置最大等待HTTP请求数、最大请求数、每个连接的最大请求数、最大重试次数。
  • 四层连接池管理:支持界面基于拓扑配置,配置TCP的最大连接数、连接超时等。
  • 熔断:支持界面基于拓扑配置服务熔断规则,包括实例被驱逐前的连续错误次数、驱逐间隔时长、最小驱逐时间、最大驱逐比例等。
  • 重试:支持配置HTTP重试次数等进行HTTP重试(后台配置)。
  • 重定向:支持配置HTTP重定向到一个指定的目标地址(后台配置)。
  • 重写:支持配置HTTP重写一个目标的地址(后台配置)。
  • 流量镜像:支持将流量实时镜像到另外一个目标地址上(后台配置)。
  • 请求超时:支持配置HTTP超时时间(后台配置)。
  • 降级:不支持传统微服务的降级语义。
  • 负载均衡:支持界面基于拓扑配置随机、轮训、最小连接数等多种负载均衡策略。
  • 会话保持:支持界面配置会话保持规则。
  • 故障注入:支持配置错误和延时的故障。

安全

  • 透明双向认证:支持界面基于拓扑配置服务间的双向认证。
  • 细粒度访问授权:支持界面基于拓扑配置配置服务间的访问授权(后台API可以配置Namespace级别授权,授权可以给一个特定的接口)。

可观察性

  • 应用访问拓扑:支持网格应用访问拓扑,体现服务间依赖。
  • 服务运行监控:支持服务访问信息,包括服务和服务各个版本的QPS和延时等指标。
  • 访问日志:支持收集和检索服务的访问日志。
  • 调用链:支持非侵入调用链埋点,并可以通过检索调用链数据进行问题定界定位。

多集群服务治理

  • 扁平网络:支持多集群扁平网络数据面场景治理。
  • 非扁平网络:支持多集群非扁平网络数据面场景治理(规划)。
  • 混合云多集群治理:支持混合多集群场景的服务统一治理(规划)。
  • 多云多集群治理:支持多云的多集群场景的服务统一治理(规划)。
  • 网格联邦:支持网格多控制面统一管理(规划)。

网格数据面服务框架

  • Springcoud:解决方案支持Springcloud SDK开发的服务在网格上统一管理。
  • Dubbo:解决方案支持DubboSDK开发的服务在网格上统一管理。

兼容性和扩展

  • 社区版本兼容:API完全兼容Istio。
  • 社区插件支持:支持Tracing、Prometheus、Kiali、Grafana。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区论坛频道来与我们联系探讨

智能客服提问云社区提问