流量迁移是流量管理的一个重要功能。istio提供的流量管理功能将流量从基础设施扩展中解耦,支持动态请求路由,故障注入、超时重试、熔断和流量迁移等。流量迁移的主要目的是将流量从微服务的某一版本的逐步迁移至另一个版本,如在新旧版本之间进行流量切换。本文通过一个简单的用例介绍如何使用istio进行流量迁移。

Figure 1 bookinfo示意图

本文使用一个bookinfo的典型例子。通过istio的命令配置规则,将流量从reviews的版本v1逐步迁移到版本v3。在下面的例子中,应用基于权重路由配置,将百分百路由在reviews:v1版本的流量,逐步全部迁移到reviews:v3版本 。在操作前,需确保在当前环境下已经部署好正常运行的bookinfo,并提供对外访问地址。流量迁移的具体操作如下:

1.将所有流量路由到reviews:V1版本。

2.在浏览器中输入外部访问地址,访问bookinfo应用

此时刷新页面,页面右侧的评论部分始终不会显示评级星号。这是因为 Istio 被配置为将 reviews 服务的所有流量都路由到了 reviews:v1 版本, 而该版本的服务不会访问带星级的 ratings 服务。

3.把50%的流量从 reviews:v1 转移到 reviews:v3:

等待几秒钟确保新的规则生效,查看yaml文件,v1和v3的权重各为50%:

4.刷新浏览器中的页面,能够看到约为50%的几率页面中出现带红色星级的评价内容。

这是因为 v3 版本的 reviews 访问了带红色星级评级的 ratings 服务,但v1版本却没有。在istio目前的实现中,这种概率基于大量访问。增强访问规则中v3的权重,可以将更多的流量路由到v3版本,从而更多次看到带红色星级的评价。

5.当v3版本可以稳定的提供服务时,用户可以选择将所有流量路由到V3版本上。

等待几秒钟确保新的规则生效,查看yaml文件,所有流量走向V3版本:

此时刷新浏览器界面,只会看到红色星级评价的页面。

6.如不再使用当前路由规则,执行删除命令,删除路由规则:

流量迁移是流量管理的一个重要功能,具有广泛的应用场景。在上述实践中,使用istio基于权重的路由方式将流量从reviews 服务的旧版本逐步迁移到新版本。使用istio进行流量迁移,两个版本的reviews服务可以分别扩容和缩容,有助于微服务的独立管理,不会影响版本之间的流量分发。而使用容器编排平台的部署功能进行版本迁移,实际是使用了实例扩容来对流量进行管理,两者原理并不相同。

idou老师教你学Istio06: 如何用istio实现流量迁移的更多相关文章

  1. idou老师教你学Istio11 : 如何用Istio实现流量熔断

    在之前的最佳实践中,已经带大家通过一系列的实践任务领略了Istio的无穷魅力.今天,将向大家介绍如何用Istio实现流量熔断. 熔断机制是创建弹性微服务应用程序的重要模式.熔断可以帮助您自由控制故障影 ...

  2. idou老师教你学Istio05: 如何用Isito实现智能路由配置

    要介绍istio请求路由,我们不由得先从pilot 和 envoy开始谈起. 在服务网格中,Pilot管理和配置所有的envoy实例.在pilot中,你几乎可以配置所有的关于流量导向规则及其他故障恢复 ...

  3. idou老师教你学Istio 07: 如何用istio实现请求超时管理

    在前面的文章中,大家都已经熟悉了Istio的故障注入和流量迁移.这两个方面的功能都是Istio流量治理的一部分.今天将继续带大家了解Istio的另一项功能,关于请求超时的管理. 首先我们可以通过一个简 ...

  4. idou老师教你学Istio 09: 如何用Istio实现K8S Ingress流量管理

    前言 在Istio的世界里,如果想把外部的请求流量引入网格,你需要认识并会学会配置Istio Ingress Gateway 什么是Ingress Gateway 由于Kubernetes  Ingr ...

  5. idou老师教你学Istio :如何用istio实现监控和日志采集

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...

  6. idou老师教你学Istio: 如何用Istio实现K8S Egress流量管理

    本文主要介绍在使用Istio时如何访问集群外服务,即对出口流量的管理. 默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio 集群中的客户端,目前有两种方案: ...

  7. idou老师教你学Istio:如何用 Istio 实现速率限制

    使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以 ...

  8. idou老师教你学Istio 25:如何用istio实现监控和日志采集

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...

  9. idou老师教你学Istio 23 : 如何用 Istio 实现速率限制

    使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以 ...

随机推荐

  1. iOS——数据安全

    在移动互联网快速发展的今天,iOS应用直接运行在用户的手机上,与运行在服务器后台服务相比,更有可能被黑客攻击. a.网络安全: 1.1 安全地传输用户密码 事先生成一对用于加密的公私钥,客户端登录的时 ...

  2. 【计算机视觉】Selective Search for Object Recognition论文阅读2

    Selective Search for Object Recognition 是J.R.R. Uijlings发表在2012 IJCV上的一篇文章.主要介绍了选择性搜索(Selective Sear ...

  3. org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could

    org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exc ...

  4. eclipse搭建springboot的项目

    记录一次自己搭建springboot的经历 springboot项目创建 这里借用别的博主分享的方法 https://blog.csdn.net/mousede/article/details/812 ...

  5. vue+element-ui动态生成多级表头,并且将有相同字段下不同子元素合并为同一个

    element表头要多层生成,下一级表头数据源必须是当前表头的子一级,这样一层一层嵌套可以生成多层表头: 要把数据处理成这种类型的数据 var arr = []; for (var key in ob ...

  6. selenium之定位详篇

    一.Web定位方法(find_elements返回元素list) 1.id: find_element_by_id()  # find_element_by_id("id") fi ...

  7. 值得收藏的Python第三方库

    网络站点爬取 爬取网络站点的库Scrapy – 一个快速高级的屏幕爬取及网页采集框架.cola – 一个分布式爬虫框架.Demiurge – 基于PyQuery 的爬虫微型框架.feedparser ...

  8. Python--context(上下文)(其实是环境)

    最近读Flask的文档,读到很多关于Context(上下文)的术语,如应用上下文,请求上下文等,查阅资料但没有得到理解?有没有比较好的解释? 每一段程序都有很多外部变量.只有像Add这种简单的函数才是 ...

  9. STM32之ADC实例(基于DMA方式)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zouleideboke/article/details/75112224 ADC简介: ADC(An ...

  10. Nginx学习笔记(三):Nginx 请求处理

    Request Nginx 中的 ngx_http_request_t 是对一个 http 请求的封装: 一个 http 请求包含:请求行.请求头.请求体,响应行.响应头.响应体 Nginx 处理请求 ...