OpenShift 4 之Service Mesh教程(4)- 跟踪访问后端服务超时

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

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

本文说明如何在Istio中的VirtualService中设置访问的timeout特性。将请求各发给后台backend-v1和backend-v2微服务,其中backend-v2返回会超过3秒,因此会超时。
在这里插入图片描述
本文可在完成《OpenShift 4 之Service Mesh教程(2)- 用Kiali监控微服务运行》后进行操作。在开始正式操作前需要运行以下命令将运行应用的my-istio-app项目里的内容清空即可(注意需要将脚本中的“USERID“替换为本文中的”my-istio-app“)。

$ source scripts/teardown.sh
  1. 部署上图中的frontend-v1和backend-v1微服务,以及相关服务。
$ oc apply -f ocp/frontend-v1-deployment.yaml -n my-istio-app
$ oc apply -f ocp/frontend-service.yaml -n my-istio-app
$ oc apply -f ocp/frontend-route.yaml -n my-istio-app
$ oc apply -f ocp/backend-v1-deployment.yaml -n my-istio-app
$ oc apply -f ocp/backend-v2-deployment.yaml -n my-istio-app
$ oc apply -f ocp/backend-service.yaml -n my-istio-app
  1. 执行命令发测试请求,查看backend-v1和backend-v2的响应时间。可以看到是轮训访问这两个后台服务的,调用backend-v1的响应比较短(小于3秒),而调用backend-v2响应时间比较长(大于3秒)。
$ while true; do curl -sIL $FRONTEND_URL -o /dev/null -w "Response Coed: %{http_code} Elapsed Time:%{time_total}\n"; done
...
Response Coed: 200 Elapsed Time:5.802549 sec
Response Coed: 200 Elapsed Time:0.799221 sec
Response Coed: 200 Elapsed Time:5.807315 sec
Response Coed: 200 Elapsed Time:0.830107 sec
Response Coed: 200 Elapsed Time:0.818900 sec
Response Coed: 200 Elapsed Time:5.823480 sec
...
  1. 在Kiali控制台中查看微服务访问请求链和响应时间。
    在这里插入图片描述
  2. 在Kiali控制台中的Service,然后进入”backend“。在Action下拉表中选择Request Timeouts。
    在这里插入图片描述
  3. 在Create Request Timeouts对话框中设置Timeout为”3s“,然后点击Create。
    在这里插入图片描述
  4. 这时在”backend“的Service下方的”Istio Config“中添加了类型为VirtualService和DestinationRule两个对象。
    在这里插入图片描述
    这两个对象内容如下:
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: backend
  namespace: my-istio-app
spec:
  hosts:
    - backend.my-istio-app.svc.cluster.local
  http:
    - route:
        - destination:
            host: backend.my-istio-app.svc.cluster.local
            subset: v1
          weight: 50
        - destination:
            host: backend.my-istio-app.svc.cluster.local
            subset: v2
          weight: 50
      timeout: 3s
kind: DestinationRule
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: backend
  namespace: my-istio-app
spec:
  host: backend.my-istio-app.svc.cluster.local
  subsets:
    - labels:
        version: v1
      name: v1
    - labels:
        version: v2
      name: v2
  1. 执行命令发测试请求,可以看到backend-v2响应时间比较长。不过这次因为backend-v2响应时间大于3秒已经按照“Response Code: 504”处理了。
$ while true; do curl -sIL $FRONTEND_URL -o /dev/null -w "Response Coed: %{http_code} Elapsed Time:%{time_total}\n"; done
...
Response Coed: 200 Elapsed Time:0.281
Response Coed: 200 Elapsed Time:0.243
Response Coed: 504 Elapsed Time:3.014
Response Coed: 504 Elapsed Time:3.017
...
  1. 在Kiali控制台中查看微服务访问请求链和响应时间。其中由于发给backend-v2的请求会由于超时而被系统标记为红色。
    在这里插入图片描述
  2. 手动修改名为backend的VirtualService,删除最后一行“timeout: 3s“。
    在这里插入图片描述
  3. 执行命令发测试请求,确认不再出现“504”的访回结果。
$ while true; do curl -sIL $FRONTEND_URL -o /dev/null -w "Response Coed: %{http_code} Elapsed Time:%{time_total}\n"; done
...
Response Coed: 200 Elapsed Time:0.799221 sec
Response Coed: 200 Elapsed Time:5.807315 sec
Response Coed: 200 Elapsed Time:0.818900 sec
Response Coed: 200 Elapsed Time:5.823480 sec
...
  1. 最后删除VirtualService和DestinationRule两类对象。
$ oc delete -n my-istio-app vs,dr --all
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值