虚拟机服务配置故障注入
故障注入是一种评估系统可靠性的有效方法,故意在待测试的系统中引入故障,从而测试其健壮性和应对故障的能力。有两种类型的故障注入,可以在转发前延迟(delay)请求,模拟缓慢的网络或过载的服务,也可以中断(abort)HTTP请求,并返回一个特定的HTTP状态码给调用者。通过中断,可以模拟一个有故障的上游服务。
如下图所示,注入一个指定的HTTP状态码(如599)后,对于访问的客户端来说,就跟服务端发生异常一样。
本文以配置中断故障为例,其他治理策略的配置方法可参考Istio官网。
前提条件
已执行添加虚拟机服务到网格,即已创建v1版本的WorkloadEntry、ServiceEntry,已创建VirtualService、DestinationRule。
更新VirtualService
- 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。
- 在左侧导航栏选择“网格配置”,单击“istio资源管理”页签。
- 选择“istio资源:virtualservices”,命名空间选择“vmns”,选择创建VirtualService中创建的VirtualService,单击操作列的“编辑”,在spec.http[0]下添加以下内容:
fault: abort: httpStatus: 599 percentage: value: 100
其中,599为自定义的HTTP状态码,100为故障百分比。
- 单击“确定”完成修改。
验证故障注入
- 在CCE集群中部署容器服务tomcat,具体操作请参见部署容器服务。
- 在kubectl节点执行以下命令,获取tomcat工作负载的Pod名称。
kubectl get pod -n <vmns>|grep tomcat
回显示例:
tomcat-75cbb4b948-nzrfs 2/2 Running 0 19h
- 执行以下命令,对虚拟机服务发起访问。
kubectl exec -it <tomcat-xxx> -n <vmns> -- curl -I -s -w "%{http_code}\n" -o /dev/null <vm-server1>.<vmns>.svc.cluster.local:8080
其中,<vm-server1>为虚拟机服务名称,<vmns>为3中填写的命名空间。
若回显“599”,则表示配置的中断故障生效。
移除故障注入
- 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。
- 在左侧导航栏选择“网格配置”,单击“istio资源管理”页签。
- 选择“istio资源:virtualservices”,命名空间选择“vmns”,选择创建VirtualService中创建的VirtualService,单击操作列的“编辑”,删除更新VirtualService中添加的字段。
- 单击“确定”完成修改。