《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: backendnamespace: my-istio-app
spec:hosts:- backend.my-istio-app.svc.cluster.localhttp:- route:- destination:host: backend.my-istio-app.svc.cluster.localsubset: v1weight: 50- destination:host: backend.my-istio-app.svc.cluster.localsubset: v2weight: 50timeout: 3s
kind: DestinationRule
apiVersion: networking.istio.io/v1alpha3
metadata:name: backendnamespace: my-istio-app
spec:host: backend.my-istio-app.svc.cluster.localsubsets:- labels:version: v1name: v1- labels:version: v2name: 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

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

  1. OpenShift 4 之Service Mesh教程(5)- 断路器Circuit Breaker

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 本文将模拟一个运行了backend-v1的Pod出问题,并在发给backend-v1微 ...

  2. OpenShift 4 之Service Mesh教程(6)- 根据Header路由请求

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 场景一 用 VirtualService 访问 Frontend 应用 用 ...

  3. OpenShift 4 之Service Mesh教程(1)- 创建ServiceMesh环境,部署Istio的微服务

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 创建ServiceMesh环境 部署Istio的微服务 参考 创建Servi ...

  4. OpenShift 4 之Service Mesh教程(2)- 用Kiali监控微服务运行

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 获得Kiali访问地址,然后用浏览器访问并登陆. $ oc get route kia ...

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

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 按比例分发流量 流量镜像 按比例分发流量 本节要配置Fontend微服务的流 ...

  6. OpenShift 4 - 创建Service Mesh运行环境

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 文章目录 安装 OpenShift Service Mesh 和相关依赖 Opera ...

  7. 如果不懂Service mesh,就不要谈微服务了

    提到微服务,spring cloud等经典框架被使用的最为广泛,但是在2016年才被提起的Service Mesh,已经被Paypal.Lyft.Ticketmaster和Credit Karma等等 ...

  8. OpenShift 4 之通过命令创建Service Mesh环境

    <OpenShift 4.x HOL教程汇总> 本文使用命令行方式在OpenShift 4上创建Service Mesh运行环境,然后进行验证. 图形化方式创建Service Mesh运行 ...

  9. 深度剖析Service Mesh服务网格新生代Istio

    作者简介:敖小剑,十五年软件开发经验,微服务专家,专注于基础架构,Cloud Native拥护者,敏捷实践者.曾在亚信.爱立信.唯品会和ppmoney任职, 现任数人云资深架构师,本文由数人云独家授权 ...

最新文章

  1. git flow版本
  2. java都界面相对布局_浏览器的重排和重绘
  3. JavaScript正则表达式在线测试工具
  4. 4、使用PreparedStatement接口实现增,删,改操作(常用)
  5. Spring MVC –揭秘了@RequestBody和@ResponseBody
  6. C++的堆与拷贝构造函数
  7. vc中操作Xml--使用CMarkup类
  8. Lombok学习笔记— 消除冗余java代码
  9. redis常用内容信息:
  10. 商品库存管理系统(c语言)
  11. adb 连接手机 cannot connect to xxx.xxx.x.xx:5555: 由于目标计算机积极拒绝,无法连接。 (10061)
  12. iphone win7无法识别_win7系统电脑不能识别iphone苹果设备的解决方法
  13. 算数平均数、中位数、众数和几何平均数
  14. 用 JustTrustMe 干翻 SSL Pinning: 爬尤美 app 付费视频(app.youmei.com)
  15. excel 画图_Excel做数据分析?看这篇就够了!
  16. 公园遛狗 / 小白逛公园【线段树】
  17. vue分页组件,可直接使用
  18. Android studio Suggestion: use tools:overrideLibrary=”jp.wasabeef.blurry” to force usage
  19. 品牌升级后,TBase更名为TDSQL和TDSQL-A,CynosDB更名为TDSQL-C
  20. 腾讯云海量社交网络业务下的DevOps架构应用实践

热门文章

  1. jsp过时了吗_知乎高赞:Spring MVC 过时了吗?网友:你连V和C都还没搞明白~
  2. java是怎么实现文件上传的_java怎么实现大文件上传
  3. 在电脑上怎么打印文件_电脑上怎么mov格式怎么转换成mp4
  4. android dialogfragment style,Android DialogFragment 使用
  5. linux全网备份的原理,Linux面试题分享:Rsync(全网备份)和NFS(文件系统)
  6. 插入移动硬盘_Win10插入移动硬盘或U盘有提示声但电脑中不显示的解决方法
  7. python读取doc文件 语义识别_我可以让socket.makefile具有与常规文件相同的读取语义吗?...
  8. 狗狗手机壁纸|爱宠必备
  9. 设计配色专辑,很值得设计师拥有
  10. python中hub_PyHubWeekly | 第一期:Github上那些值得推荐的Python小工具