流量迁移是流量管理的一个重要功能。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. Android studio之广播监听接收短信

    一. 在清单文件中(AndroidManifest.xml)添加短信权限 这里我用的android studio版本是3.3的 <uses-permission android:name=&qu ...

  2. DefaultListBeanFactory的子类之SimpleAliasRegistry

    DefaultListBeanFactory类结构层次图 从继承图看,SimpleAliasRegistry是DefaultListBeanFactory继承类中最底层的实现类. SimpleAlia ...

  3. linux 网络配置及远程连接

    linux 网络配置及远程连接 前言 本文结合自己的经历主要讲述以Centos7为基础网络配置和远程连接的解决步骤 网络配置: 安装好centos7后,是上不了网的,配置步骤如下: (1).输入命令d ...

  4. mvp设计模式

    一.设计模式的简单介绍 MVP的 V 层是由UIViewController 和UIView 共同组成view 将委托presenter 对它自己的操作,(简单来说就是presenter发命令来控制v ...

  5. 作为linux新手需掌握的常用命令大全

    学了几周的linux系统,接触最多的就是各种各样的命令,此篇随笔作为对之前所学的各中命令的整理扩展. 1.man命令 man命令作为第一个要学的Linux命令是因为它的作用非常强大——可用于查看命令的 ...

  6. [转帖]如何保护你的 Python 代码 (一)—— 现有加密方案

    如何保护你的 Python 代码 (一)—— 现有加密方案 Prodesire Python猫 1周前

  7. [转帖]前端 crypto-js aes 加解密

    前端 crypto-js aes 加解密 2018.04.13 11:37:21字数 891阅读 59767 https://www.jianshu.com/p/a47477e8126a 原来前端也有 ...

  8. 方法重载,new,override

    方法重载:参数列表不一样,方法名字一样,包括泛型,和返回值无关 new: 复写,方法重载   overload  继承是对于普通方法和属性  复写 父类的 override:覆盖,重写 ,  对于抽象 ...

  9. java源码 -- TreeMap

    简介 TreeMap 是一个有序的key-value集合,它是通过红黑树实现的.TreeMap 继承于AbstractMap,所以它是一个Map,即一个key-value集合.TreeMap 实现了N ...

  10. STL标准模板库之vector

    目录 vector容器 1)什么是vector 2)如何定义 3)常用的Vector函数 1.容量函数 2.增加函数 3.删除函数 4.迭代器 5.访问函数 6.其他函数及操作 7.算法 STL提供了 ...