当前位置: 首页 > news >正文

备考ICA----Istio实验7---故障注入 Fault Injection 实验

备考ICA----Istio实验7—故障注入 Fault Injection 实验

Istio 的故障注入用于模拟应用程序中的故障现象,以测试应用程序的故障恢复能力。故障注入有两种:
1.delay延迟注入
2.abort中止注入

1. 环境准备

kubectl apply -f istio/samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f istio/samples/bookinfo/networking/bookinfo-gateway.yaml
kubectl apply -f istio/samples/bookinfo/networking/destination-rule-all.yaml
kubectl apply -f istio/samples/bookinfo/networking/virtual-service-all-v1.yaml

在这里插入图片描述
gateway和bookinfo.yaml详见实验1
istio/samples/bookinfo/networking/destination-rule-all.yaml

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: productpage
spec:host: productpagesubsets:- name: v1labels:version: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: reviews
spec:host: reviewssubsets:- name: v1labels:version: v1- name: v2labels:version: v2- name: v3labels:version: v3
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: ratings
spec:host: ratingssubsets:- name: v1labels:version: v1- name: v2labels:version: v2- name: v2-mysqllabels:version: v2-mysql- name: v2-mysql-vmlabels:version: v2-mysql-vm
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: details
spec:host: detailssubsets:- name: v1labels:version: v1- name: v2labels:version: v2

istio/samples/bookinfo/networking/virtual-service-all-v1.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: productpage
spec:hosts:- productpagehttp:- route:- destination:host: productpagesubset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: reviews
spec:hosts:- reviewshttp:- route:- destination:host: reviewssubset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: ratings
spec:hosts:- ratingshttp:- route:- destination:host: ratingssubset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: details
spec:hosts:- detailshttp:- route:- destination:host: detailssubset: v1

环境确认

kubectl get dr,gw,vs,pods,svc

在这里插入图片描述
此时访问ingressgateway/productpage,reviews全部转给v1版本

在这里插入图片描述
reviews v1的版本就是没有任何☆显示
在这里插入图片描述

2. 部署reviews v2

当使用jason用户登录就被路由给v2版本,否则就路由给v1版本
istio/samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: reviews
spec:hosts:- reviewshttp:- match:- headers:end-user:exact: jasonroute:- destination:host: reviewssubset: v2- route:- destination:host: reviewssubset: v1

部署

kubectl apply -f istio/samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml

此时刷新页面任然是和刚才一样reviews任然是v1
在这里插入图片描述
点击右上的Sign in
在这里插入图片描述
此时右侧reviews就显示成v2版本
在这里插入图片描述

3. 注入HTTP Delay 延迟故障

当用jason用户登录,会有7秒的延迟注入
istio/samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: ratings
spec:hosts:- ratingshttp:- match:- headers:end-user:exact: jasonfault:delay:percentage:value: 100.0fixedDelay: 7sroute:- destination:host: ratingssubset: v1- route:- destination:host: ratingssubset: v1

部署更新vs

kubectl apply -f istio/samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml
  1. 用jason登录后,Bookinfo会被注入一个7秒的延迟.
  2. 右侧reviews的报错:Sorry, product reviews are currently unavailable for this book.
  3. 在 Web 浏览器中打开开发者工具菜单。打开网络选项卡。可以看到耗时为6秒多一点
  4. 因为7秒会大于3s + 1 次重试,总共 6s。结果,调用过早超时,并在 6s 后抛出错误。
    在这里插入图片描述
    修复错误
  5. 降低注入的延迟错误到3秒以下:fixedDelay: 2s,这样1次失败加1次重试就能在6s内完成
  6. 调大reviews与ratings 的失重试次数或重试等待时间.
    在这里插入图片描述

4. 注入 HTTP Abort 中止故障

istio/samples/bookinfo/networking/virtual-service-ratings-test-abort.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: ratings
spec:hosts:- ratingshttp:- match:- headers:end-user:exact: jasonfault:abort:percentage:value: 100.0httpStatus: 500route:- destination:host: ratingssubset: v1- route:- destination:host: ratingssubset: v1

部署vs

kubectl apply -f istio/samples/bookinfo/networking/virtual-service-ratings-test-abort.yaml

此时继续用jason用户访问reviews就会报错:Ratings service is currently unavailable
在这里插入图片描述
当退出jason用户后,raviews直接路由给了v1
在这里插入图片描述
在这里插入图片描述

至此故障注入 Fault Injection 实验完成

相关文章:

  • 一种基于约化因子上三角矩阵求逆方法与MATLAB仿真
  • 【数据结构】栈与队列
  • transfomer知识点梳理
  • 工业相机采图方式、图像格式(BYTE、HObject和Mat)转换
  • 队列的实现(C语言链表实现队列)
  • JS+CSS3点击粒子烟花动画js特效
  • Spark与flink计算引擎工作原理
  • MySQL存储引擎的区别与选择
  • 【数据可视化】使用Python + Gephi,构建中医方剂关系网络图!
  • 微服务鉴权的几种实现方案
  • 记录解决问题--activiti8.2 流程图图片由png改为svg前端不显示图片问题
  • 20240323
  • 算法 之 排序算法
  • LeetCode第一天(495.提莫攻击)
  • 史上最详细的CrossOver24激活和使用教程(附网盘激活码)
  • 【css3】浏览器内核及其兼容性
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • emacs初体验
  • Java 多线程编程之:notify 和 wait 用法
  • Lucene解析 - 基本概念
  • MD5加密原理解析及OC版原理实现
  • 工程优化暨babel升级小记
  • 规范化安全开发 KOA 手脚架
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 前嗅ForeSpider采集配置界面介绍
  • 思维导图—你不知道的JavaScript中卷
  • 微服务入门【系列视频课程】
  • 一份游戏开发学习路线
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 整理一些计算机基础知识!
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​linux启动进程的方式
  • # Java NIO(一)FileChannel
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (十六)一篇文章学会Java的常用API
  • (四) 虚拟摄像头vivi体验
  • (转) Android中ViewStub组件使用
  • (转)LINQ之路
  • (转)创业家杂志:UCWEB天使第一步
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net下简单快捷的数值高低位切换
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @Controller和@RestController的区别?
  • @KafkaListener注解详解(一)| 常用参数详解