当前位置: 首页 > 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 实验完成

http://www.lryc.cn/news/326749.html

相关文章:

  • [flask]异常抛出和捕获异常
  • js逆向之实例某宝热卖(MD5)爬虫
  • 7、jenkins项目构建细节-常用的构建触发器
  • 【前端学习——css篇】4.px和rem的区别
  • 深入解析Oracle数据库中的标量子查询(Scalar Subquery)及其等价改写方法
  • Pytorch多机多卡分布式训练
  • win11 环境配置 之 Jmeter
  • 蓝桥杯刷题之路径之谜
  • 【深度学习】图片预处理,分辨出模糊图片
  • 基础NLP知识了解
  • Android 性能优化(六):启动优化的详细流程
  • QT程序打包
  • ARMday7作业
  • Unity构建详解(4)——SBP的依赖后处理
  • 使用GO对PostgreSQL进行有意思的多线程压测
  • CI/CI实战-jenkis结合gitlab 4
  • 修复ubuntu引导
  • 11.Notepad++
  • 实现阻塞队列
  • MySQL8.X驱动datetime映射问题
  • 【Selenium】隐藏元素的定位和操作|隐藏与isDisplay方法
  • 视图的作用
  • 动态ip白名单频繁更改问题解决方案
  • 什么是物联网监控平台?部署物联网平台有什么作用?
  • netty构建udp服务器以及发送报文到客户端客户端详细案例
  • Selenium 学习(0.22)——软件测试之小结
  • 贪心算法问题
  • 深入理解 @Transactional 注解在 Spring 中的应用
  • Python爬虫之爬取网页图片
  • AI Agent(LLM Agent)入门解读