OpenShift 4 之Service Mesh教程(4)- 访问流量管理

按比例分发流量

本节要配置Fontend微服务的流量分发策略,以达到控制分发到Backend_v1和Backend_v2访问流量的目的。
OpenShift 4 之Service Mesh教程(4)- 访问流量管理_第1张图片

  1. 在Kiali控制台进入Services->backend,点击Action,在下拉菜单中选择Create Weighted Routing。
    OpenShift 4 之Service Mesh教程(4)- 访问流量管理_第2张图片
  2. 在Create Weighted Routing对话框中将backend_v1的Weight设为80。然后点开Hide Advanced Options,将Add LoadBalance设为ON,并确认LoadBalancer是ROUND_ROBIN策略。最后点击Create按钮。系统会根据配置创建Destination Rule和Virtual Service对象。
    OpenShift 4 之Service Mesh教程(4)- 访问流量管理_第3张图片
  3. 以上在Kiali控制台创建DestinationRule和VirtualService的操作也可通过以下命令完成。
$ oc apply -f istio-files/destination-rule-backend-v1-v2.yml -n my-istio-app
$ oc apply -f istio-files/virtual-service-backend-v1-v2-80-20.yml -n my-istio-app
  1. 在Kiali中进入Istio Config,可以查看VirtualService和DestinationRul的配置。
    OpenShift 4 之Service Mesh教程(4)- 访问流量管理_第4张图片
    OpenShift 4 之Service Mesh教程(4)- 访问流量管理_第5张图片
    OpenShift 4 之Service Mesh教程(4)- 访问流量管理_第6张图片
  2. 继续执行以下脚本,在Graph中查看用时差异。
$ scripts/run-50.sh

OpenShift 4 之Service Mesh教程(4)- 访问流量管理_第7张图片
6. 编辑DestinationRule,更改weight比例。保存后再运行上一步,发测试请求并查看结果。

$ oc get DestinationRule -n my-istio-app
NAME      HOST      AGE
backend   backend   20h
$ oc edit DestinationRule backend -n my-istio-app

流量镜像

将请求在Backend_v1和Backend_v2之间做平均流量分发的同时,还将请求镜像发给Backend_v3微服务。这种场景通常用来进行应用测试或流量监控。
OpenShift 4 之Service Mesh教程(4)- 访问流量管理_第8张图片

  1. 部署Backend_v3微服务。
$ oc apply -f ocp/backend-v3-deployment.yml -n my-istio-app
$ oc apply -f ocp/backend-v3-service.yml -n my-istio-app
  1. 执行命令新建一个VirtualService的配置backend-virtual-service,同时删除原有的backend的VirtualService。
$ oc apply -f istio-files/virtual-service-backend-v1-v2-mirror-to-v3.yml -n my-istio-app
$ oc delete VirtualService backend -n my-istio-app

其中virtual-service-backend-v1-v2-mirror-to-v3.yml为以下内容。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: backend-virtual-service
spec:
  hosts:
   backend
  http:
   route:
    - destination:
        host: backend
        subset: v1
      weight: 80
    - destination:
        host: backend
        subset: v2
      weight: 20
    mirror:
      host: backend-v3
  1. 继续执行以下脚本。
$ scripts/run-50.sh
  1. 在另一个新窗口查看Backend_v3的日志吗,确认backend_v3可以通过流量镜像收到每个请求。
$ oc logs -f <backend_v3 pod> -c backend -n my-istio-app
  1. 最后删除相关Istio Policy配置,只留下三个微服务。
$ oc delete -f istio-files/virtual-service-backend-v1-v2-mirror-to-v3.yml -n my-istio-app
$ oc delete -f istio-files/destination-rule-backend-v1-v2.yml -n my-istio-app
$ oc delete -f ocp/backend-v3-deployment.yml -n my-istio-app
$ oc delete -f ocp/backend-v3-service.yml -n my-istio-app

你可能感兴趣的:(OpenShift,4,ServiceMesh,微服务)