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

34 篇文章 1 订阅
21 篇文章 3 订阅

OpenShift 4.x HOL教程汇总
说明:本文已经在OpenShift 4.8环境中验证

按比例分发流量

本节要配置Fontend微服务的流量分发策略,以达到控制分发到Backend_v1和Backend_v2访问流量的目的。
在这里插入图片描述

  1. 在Kiali控制台进入Services->backend,点击Action,在下拉菜单中选择Request Routing。
    在这里插入图片描述
  2. 在Create Request Routing对话框中进入Route To栏目,将backend_v1的Weight设为80(另一个会自动变为20),然后点击“Add Rule”按钮。随后点开Show Advanced Options,在“Traffic Policy”栏目中将Add LoadBalance设为ON,并确认LoadBalancer是ROUND_ROBIN策略。最后点击Create按钮。系统会根据配置创建Destination Rule和Virtual Service对象。
    在这里插入图片描述
  3. 以上在Kiali控制台创建DestinationRule和VirtualService的操作也可通过以下命令完成。
$ oc apply -f istio-files/destination-rule-backend-v1-v2.yaml -n my-istio-app
$ oc apply -f istio-files/virtual-service-backend-v1-v2-80-20.yaml -n my-istio-app
  1. 在Kiali中进入Istio Config,可以查看VirtualService和DestinationRul的配置。
    在这里插入图片描述
  2. 确认运行以下脚本持续发送请求,然后在Kiali中的Graph中查看backend服务向v1和v2分配比例。
$ while true; do curl -sIL $FRONTEND_URL -o /dev/null -w "Response Coed: %{http_code} Elapsed Time:%{time_total}\n"; done

在这里插入图片描述
6. 编辑名为backend的VirtualService,更改weight比例。保存后再运行上一步,发测试请求并查看结果。

$ oc get VirtualService -n my-istio-app
NAME      GATEWAYS   HOSTS                                        AGE
backend              ["backend.my-istio-app.svc.cluster.local"]   18m
$ oc edit VirtualService backend -n my-istio-app

流量镜像

将请求在Backend_v1和Backend_v2之间做平均流量分发的同时,还将请求镜像发给Backend_v3微服务。这种场景通常用来进行应用测试或流量监控。
在这里插入图片描述

  1. 部署Backend_v3微服务。
$ oc apply -f ocp/backend-v3-deployment.yaml -n my-istio-app
$ oc apply -f ocp/backend-v3-service.yaml -n my-istio-app
  1. 执行命令新建一个VirtualService替换原有名为backend的VirtualService。
$ oc apply -f istio-files/virtual-service-backend-v1-v2-mirror-to-v3.yaml -n my-istio-app

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

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: backend
spec:
  hosts:
   backend
  http:
   route:
    - destination:
        host: backend
        subset: v1
      weight: 80
    - destination:
        host: backend
        subset: v2
      weight: 20
    mirror:
      host: backend-v3
  1. 继续运行以下脚本。
$ while true; do curl -sIL $FRONTEND_URL -o /dev/null -w "Response Coed: %{http_code} Elapsed Time:%{time_total}\n"; done
  1. 在另一个新窗口查看backend_v3的容器日志,确认backend_v3可以通过流量镜像收到每个请求。
$ oc logs -f $(oc get pods -n my-istio-app | grep backend-v3 | awk '{ print $1 }') -c backend -n my-istio-app
  1. 最后删除相关Istio Policy配置,只留下三个微服务。
$ oc delete -f istio-files/virtual-service-backend-v1-v2-mirror-to-v3.yaml -n my-istio-app
$ oc delete -f istio-files/destination-rule-backend-v1-v2.yaml -n my-istio-app
$ oc delete -f ocp/backend-v3-deployment.yaml -n my-istio-app
$ oc delete -f ocp/backend-v3-service.yaml -n my-istio-app
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值