流量迁移是流量管理的一个重要功能。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服务可以分别扩容和缩容,有助于微服务的独立管理,不会影响版本之间的流量分发。而使用容器编排平台的部署功能进行版本迁移,实际是使用了实例扩容来对流量进行管理,两者原理并不相同。
转载于:https://blog.51cto.com/14051317/2345441