流量转移

本文内容基于 故障注入


经过 故障注入 的配置,下面是请求的流程:

productpage → reviews:v3 → ratings (Ratings service is currently unavailable) (针对 jason 用户)

productpage → reviews:v1 (其他用户)

应用基于权重的路由

  • 将所有流量路由到各个微服务的 v1 版本:
kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml

在这里插入图片描述

此时不管刷新多少次,页面的评论部分都不会显示评级星号。因为 Istio 已经将 reviews 服务的所有流量都路由到了 reviews:v1 版本,而该版本的服务不会访问带星级的 ratings 服务。

  • 把 50% 的流量从 reviews:v1 转移到 reviews:v3
cat samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 50
    - destination:
        host: reviews
        subset: v3
      weight: 50
kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml

在这里插入图片描述

可以看到,v1 和 v3 版本的 reviews 都大约有 50% 的几率出现,其中 v3 版本的 reviews 显示红色星形评价内容,此时不区分任何用户。

  • 把 100% 的流量从 reviews:v1 转移到 reviews:v3

如果认为 reviews:v3 微服务已经稳定,可以通过 VirtualService 规则将 100% 的流量路由到 reviews:v3

cat samples/bookinfo/networking/virtual-service-reviews-v3.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v3
kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-v3.yaml

在这里插入图片描述

此时,不管刷新多少次页面,评论部分一直是 reviews:v3 版本的效果(显示红色星形)。因为 Istio 已经将 reviews 服务的 100% 流量都路由到了 reviews:v3 版本。

使用 Istio 的权重路由功能将流量从旧版本的 reviews 服务迁移到新版本的 reviews 服务。需要注意的是,这和使用容器编排平台的部署功能来进行版本迁移完全不同,后者使用了实例扩容来对流量进行管理。

使用 Istio,两个版本的 reviews 服务可以独立地进行扩容和缩容,而不会影响这两个服务版本之间的流量分发。


猜你喜欢

转载自blog.csdn.net/miss1181248983/article/details/116998526
今日推荐