故障注入测试
故障注入测试顾名思义就是当被测试应用部分组件或功能出现潜在故障时其本身的容错机制是否正常工作,以达到规避故障保证正常组件或功能的使用。Istio提供了HTTP故障注入功能,在http请求转发的过程中,用户可以设定一个或多个故障。故障注入的修改作用于Virtual Service,共有两种不同的故障模式abort和delay。
为了方便大家理解本文内容,我们预先部署了bookinfo示例。
图中是原来完整的 virtualservice,设置了当cookie满足user=vip时,reviews的请求会流入v4版本,其余都会流入v1版本。
中断故障
当用户对某个负载注入了中断故障时,对于访问该负载的http请求,都会收到预先设定的错误状态码而不会收到正确内容的响应。图中的yaml截取于reviews的virtualservice文件。
我们可以看到对于版本v1的路由规则里多了一条fault对象。这个fault对象中,则包含了设定的故障属性。可以解读为,v1版本添加abort故障并且设定返回的http状态码为501,percent设定为100这意味着所有访问v1的请求都会收到501的http响应,显而易见如果这里设成50则只有一半的请求会收到501响应,另一半则会收到正常的响应。
如果我们访问productpage只能看到基本的报错信息,并不能确定,这到底是我们预设的中断故障起作用了,还是某种原因导致服务“崩了”。
为了确定是我们人工导致的服务中断,而不是其他,我们必须直接访问reviews。给Reviews组件配置外部ip,打开浏览器,并且按下F12,选择network,在地址栏中输入“地址/reviews/0”,network中会有一项红色报错信息,点开则可以看到我们预设的501报错状态码。至此中断故障已经成功注入。删除则只需将fault对象直接清除掉即可。
如果这时候我们去访问v4,将cookie设为user=vip
可以看到这时的reviews可以正常的显示。
延时故障注入
除了刚才延时的中断服务故障,延时故障也可以手动注入组件中。刚才使用的bookinfo示例中有两个版本v1和v4。我们已经给v1版本注入了中断故障,现在我们给v4版本注入延时故障,设定时间延迟为2秒,并且所有访问v4的请求都会有2秒的延迟。
如上,我们打开product page 以及 reviews page 来验证一下:
从这里我们可以看到product page 响应2.39秒
Reviews page的响应2.27s
我们用例子介绍了两种基本故障注入的方式
接下来我们看一些其他的故障注入例子
Virtual Service 例子1:
在这个例子中,当cookie满足user=vip时会触发延时故障,2秒延时后访问v4版本,当user=svip的时候则会触发中断故障,当cookie不满足以上两个条件时,则可以正常访问v1版本。
Virtual Service 例子2:
在这个例子中不论cookie符合vip还是svip,亦或是都不符合两个条件,都可以正常的访问到v1版本。这是由于route对象放在了第一个,没有任何匹配条件,不管cookie值是什么都“满足条件”,所以所有的流量不加任何处理直接会流向版本v1,这里要特殊提醒下,如若自己手动添加故障注入一定要注意相对顺序,否则可能不会出现你想设定的结果。
Virtual Service 例子3:
这个virtual service中我们对同一个版本注入了两个不同的故障,满足任何一个条件都可以触发相应的故障,如果所有条件都不满足则会默认的正常访问v1版本。那么问题来了,如果我没有配置最后一条route,出现了一条既不符合中断故障匹配条件,也不符合延时故障匹配条件,请求会走向哪里呢?对于这种yaml设置,结果异常的简单直白,如果请求不符合任何条件,则会直接获得404的响应,不会自动流入任何其他的版本。
故障注入测试为应用在上线前提供了完备的可靠性测试,istio为使用者进行故障注入提供了极大地便捷,在正确的地方添加3-4行配置而不用修改应用代码即可进行故障注入测试。希望有更多的人可以利用istio故障注入功能提供的便捷来提高自己的研发和测试效率。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 三, 跨语言微服务框架 - Istio官方示例(自动注入.请求路由.流量控制.故障注入) 原 荐
- 故障公告:Linux 内核故障导致网站宕机近 1 个小时
- 线上故障处理手册
- PostgreSQL复制断开故障
- MySQL -- 故障诊断
- Android故障艺术
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
社交网站的数据挖掘与分析
Matthew A. Russell / 师蓉 / 机械工业出版社 / 2012-2 / 59.00元
Facebook、Twitter和LinkedIn产生了大量宝贵的社交数据,但是你怎样才能找出谁通过社交媒介正在进行联系?他们在讨论些什么?或者他们在哪儿?这本简洁而且具有可操作性的书将揭示如何回答这些问题甚至更多的问题。你将学到如何组合社交网络数据、分析技术,如何通过可视化帮助你找到你一直在社交世界中寻找的内容,以及你闻所未闻的有用信息。 每个独立的章节介绍了在社交网络的不同领域挖掘数据的......一起来看看 《社交网站的数据挖掘与分析》 这本书的介绍吧!