云原生技术分享篇丨浅析 Istio 流量管理
Istio 为希腊语,意思是“起航”,是由 Google、IBM 和 Lyft 开源的微服务管理、保护和监控框架。Istio 作为服务网格的典型实现,解决了开发人员和运营商在分布式微服务架构中面临的挑战。
Istio 通过无侵入的方式提供了统一的微服务治理解决方案,其功能包括负载均衡、安全通信、流量管理和流量观测等。其主要特性包括:
使用 TLS 加密、强身份认证和授权的集群内服务到服务的安全通信;
2. 自动负载均衡的 HTTP, gRPC, WebSocket 和 TCP 流量;
3. 通过丰富的路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制;
4. 一个可插入的策略层和配置 API,支持访问控制、速率限制和配额;
5. 对集群内的所有流量(包括集群入口和出口)进行自动度量、日志和跟踪。
Istio 的流量管理模型源于和服务一起部署的 Envoy 代理。网格内服务发送和接收的所有流量都经由 Envoy 代理,这让控制网格内的流量变得异常简单,而且不需要对服务做任何的更改。其实现流量管理主要通过以下几种资源:
1. Gateway(网关):为网格管理入站和出站流量,并对流量进行端口、协议和证书的配置;
2. VirtualService( 虚拟服务):配置了如何在服务网格内将请求路由到服务,这基于 Istio 和平台提供的基本的连通性和服务发现能力。
3. DestinationRule(目标规则):将虚拟服务流量路由到给定目标地址,然后使用目标规则来配置该目标的流量。
三种资源分别负责流量管理过程中的部分核心功能,三者相互协调工作最终实现 istio 配置可观测、功能可扩展的流量管理能力。
接下来通过一个简单的示例来说明一下 istio 流量管理的流程:
外部请求通过域名 a.demo.com 访问;
2. 配置了*.demo.com 的 Gateway 对外部请求进行端口、协议及证书的处理;
3. 配置了 a.demo.com 域名的 VirtualService 经过规则匹配外部请求(uri、headers 等),将其转发至 Service A 的 v1 子版本,并进行错误注入、流量复制等操作;
4. DestinationRule 中定义了 Service A 的子版本 v1、v2、v3,并为其提供异常检测、熔断限流等访问策略配置;
5. 流量最终分发至 Service A/v1 版本并受 DestinationRule 访问策略的控制;
浪潮海岳云原生平台内置支持服务网格功能,主要功能包括:网关管理、目标规则、虚拟服务、流量控制、灰度发布等。通过可视化的界面,能够帮助运维人员快速的进行服务网格的配置,降低服务网格运维门槛,提升运维效率。
其主要特性有:
网关管理
支持多业务多网关配置管理。为关键业务应用配置其单独访问网关,从而实现关键业务的分离,确保关键业务的稳定与安全,解决通用网关场景下网关崩溃导致的关键应用瘫痪问题。
2. 流量控制
支持页面快速配置简单路由目标服务或子版本及路由规则,例如,uri 匹配,头信息匹配,端口匹配、网关匹配等匹配规则;以及路由流量的故障注入、流量复制、目标服务及其子版本的异常检测、熔断限流等配置功能。
3. 灰度发布
支持多种灰度发布模式(金丝雀发布、蓝绿发布),可实现灰度子版本的流量切换、版本下线以及基于流量配比或基于头信息匹配的子版本快速上线功能。
4. 黑白名单
支持根据访问请求的 IP 地址配置黑白名单进行请求拦截,实现非法 ip 访问拦截等功能
5. 网格资源管理
支持对 istio 核心资源的配置修改,实现对 VirtualService 中 http、tcp、tls 三种类型路由配置修改,实现对 DestinationRule 中服务子版本及其流量策略的配置修改。
评论