idou老师教你学Istio06: 如何用istio实现流量迁移

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idou老师教你学Istio06: 如何用istio实现流量迁移相关的知识,希望对你有一定的参考价值。

流量迁移是流量管理的一个重要功能。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实现流量迁移的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

idou老师教你学Istio 16:如何用 Istio 实现微服务间的访问控制