Istio的流控

简介: Istio可以实现负载均衡/路由/故障注入等多种流控功能

1. 流控资源类型

说到流控需要先介绍Istio的两种资源类型:

Istio的流控都是由这两种资源配合完成的

1.1 VirtualService

翻译为虚拟服务

可以理解为路由配置,并且VirtualService可以暴露给网格外服务

VirtualService可以通过DestiantionRule指定路由到的服务的版本,达到流控/灰度发布的效果

同时也可以在VirtualService里配置路由的权重(负载均衡策略)


1.1 DestiantionRule

翻译为目标规则,可以理解为一种配置达到目标服务的规则配置.

其实DestiantionRule里基本上都是配置的都是服务的不同版本定义,方便VirtualService根据DestiantionRule的配置来路由到目标服务.

举例说明:

看一个示例文件:

apiVersion: networking.istio.io/v1alpha3

kind: DestinationRule

metadata:

 name: reviews

spec:

 host: reviews

 subsets:

 - name: v1

   labels:

     version: v1

 - name: v2

   labels:

     version: v2

 - name: v3

   labels:

     version: v3

subsets是一个数组,标识reviews有三个版本

在配置VirtualService时就可以指定subset来指定要路由到的目标服务.

apiVersion: networking.istio.io/v1alpha3

kind: VirtualService

metadata:

 name: reviews

spec:

 hosts:

 - reviews

 http:

 - route:

   - destination:

       host: reviews

       subset: v1


2. 流控的使用场景

2.1 路由配置

基于VirtualService+DestiantionRule可以做到配置每个目标服务的路由配置

上文中的例子其实就是路由的配置,就不再举例说明

2.2 负载均衡

VirtualService中可以配置路由的策略,权重等属性,达到流量转移/灰度发布的效果

例:

apiVersion: networking.istio.io/v1alpha3

kind: VirtualService

metadata:

 name: reviews

spec:

 hosts:

   - reviews

 http:

 - route:

   - destination:

       host: reviews

       subset: v1

     weight: 50 #v1权重50%

   - destination:

       host: reviews

       subset: v3

     weight: 50 #v3权重50%

上面这个配置文件的意思是,打到reviews的流量50%会打到v1版本 50%会打到v3 其实这就是灰度发布.

2.3 故障注入

VirtualService可以中可以模拟一个服务挂掉的情况,帮助我们制造故障服务,从而测试上游服务的响应情况

例:

apiVersion: networking.istio.io/v1alpha3

kind: VirtualService

metadata:

 name: ratings

spec:

 hosts:

 - ratings

 http:

 - match:

   - headers: #配置当请求头里有jason时进行的处理

       end-user:

         exact: jason

   fault:

     delay:

       percentage:

         value: 100.0 # 产生比例 100%

       fixedDelay: 7s # 延迟7s响应

   route:

   - destination:

       host: ratings

       subset: v1

 - route:

   - destination:

       host: ratings

       subset: v1

上面这个配置文件的意思就是 ratings 请求这个服务的时候如果请求头参数里携带jason时,就100%的延迟7s响应请求,从而制造超时故障.

目录
相关文章
|
负载均衡 API 测试技术
Istio流控,服务发现,负载均衡,核心流程是如何实现的?
Istio架构体系中,流控(Traffic Management)虽然是数据平面的Envoy Proxy实施的,但整个架构的核心其实在于控制平面的Pilot。
941 0
|
1月前
|
监控 安全 Cloud Native
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
49 2
|
2月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
63 8
|
2月前
|
Kubernetes 负载均衡 安全
Istio在微服务中释放服务网格的力量
Istio在微服务中释放服务网格的力量
66 4
|
4月前
|
负载均衡 监控 安全
Istio:微服务治理的超级英雄,一键解锁你的服务网格超能力,让管理复杂变简单!
【8月更文挑战第31天】随着云原生技术的发展,微服务架构成为主流,但其复杂性与管理难题也随之增加。Istio作为开源服务网格平台,通过独特的数据平面和控制平面设计,实现了微服务通信的透明管理,简化了治理复杂度。本文将对比Istio与传统微服务管理方法,详细介绍Istio的架构及其工作原理,包括Envoy代理、服务发现、负载均衡、流量管理、安全认证以及监控等功能。Istio不仅简化了微服务治理,还提供了强大的流量控制和安全机制,使开发者能更高效地管理应用。
99 2
|
4月前
|
开发者 项目管理 开发工具
震惊!单人开发者如何成功过渡到团队协作?Xamarin 项目管理经验大揭秘,让你的开发之路一帆风顺!
【8月更文挑战第31天】Xamarin 是移动应用开发领域的热门跨平台工具,适用于个人开发者及团队。个人开发时需明确需求、运用版本控制(如 Git)并合理规划项目结构以增强代码可维护性。团队协作时,则需建立有效沟通渠道、统一代码规范、严格版本控制及合理分配任务,以提升开发效率与项目质量。
70 1
|
4月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
84 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
|
6月前
|
Kubernetes 监控 负载均衡
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
本文介绍了服务网格(Service Mesh)的概念及其在微服务架构中的重要性。微服务强调围绕业务构建团队和去中心化的数据管理,带来更高的灵活性和扩展性。然而,随着服务数量增加,网络通信成为挑战,包括服务发现、路由和安全等问题。 Service Mesh如Istio应运而生,通过边车代理解决服务间通信,提供服务发现、负载均衡、智能路由、安全和监控等功能。它与Kubernetes结合,增强了容器环境的服务管理能力。Istio的bookinfo示例展示了其在多语言微服务中的应用,简化了代码中的服务调用逻辑,使开发更专注于业务本身。
749 3
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
|
Dubbo Java 应用服务中间件
开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比
开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比
1127 12
|
安全 前端开发 Cloud Native
Istio 探索:微服务的流量管理、安全性和策略加固
Istio 探索:微服务的流量管理、安全性和策略加固
101 0
下一篇
DataWorks