
# 虚拟机服务配置故障注入
故障注入是一种评估系统可靠性的有效方法，故意在待测试的系统中引入故障，从而测试其健壮性和应对故障的能力。有两种类型的故障注入，可以在转发前延迟（delay）请求，模拟缓慢的网络或过载的服务，也可以中断（abort）HTTP请求，并返回一个特定的HTTP状态码给调用者。通过中断，可以模拟一个有故障的上游服务。
如下图所示，注入一个指定的HTTP状态码（如599）后，对于访问的客户端来说，就跟服务端发生异常一样。
![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001543770677.png)
本文以配置中断故障为例，其他治理策略的配置方法可参考[Istio官网](https://istio.io/latest/docs/tasks/traffic-management/)。
#### 前提条件
已执行[添加虚拟机服务到网格](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_0010.html#asm_bestpractice_0010__zh-cn_topic_0000001494538437_section1481518471114)，即已创建v1版本的WorkloadEntry、ServiceEntry，已创建VirtualService、DestinationRule。
 #### 更新VirtualService
1. 登录[应用服务网格控制台](https://console.huaweicloud.com/asm/?locale=zh-cn)，单击服务网格的名称，进入网格详情页面。
2. 在左侧导航栏选择"网格配置"，单击"istio资源管理"页签。
3. 选择"istio资源：virtualservices"，命名空间选择"vmns"，选择[创建VirtualService](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_0010.html#asm_bestpractice_0010__zh-cn_topic_0000001494538437_li865313575122)中创建的VirtualService，单击操作列的"编辑"，在spec.http\[0\]下添加以下内容：
   
   ```
   fault:
           abort:
             httpStatus: 599
             percentage:
               value: 100
   ```
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001543410805.png)
   其中，599为自定义的HTTP状态码，100为故障百分比。
   
   
4. 单击"确定"完成修改。
 
#### 验证故障注入
1. 在CCE集群中部署容器服务tomcat，具体操作请参见[部署容器服务](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_0009.html#asm_bestpractice_0009__zh-cn_topic_0000001444458356_section117282214281)。
2. 在kubectl节点执行以下命令，获取tomcat工作负载的Pod名称。 
   **kubectl get pod -n \<vmns\>\|grep tomcat**
   回显示例：
   ```
   tomcat-75cbb4b948-nzrfs       2/2      Running   0      19h
   ```
   
   
3. 执行以下命令，对虚拟机服务发起访问。 
   **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](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_0007.html#asm_bestpractice_0007__zh-cn_topic_0000001494658309_li8573193914511)中填写的命名空间。
   若回显"599"，则表示配置的中断故障生效。
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001492251024.png)
   
   
 
#### 移除故障注入
1. 登录[应用服务网格控制台](https://console.huaweicloud.com/asm/?locale=zh-cn)，单击服务网格的名称，进入网格详情页面。
2. 在左侧导航栏选择"网格配置"，单击"istio资源管理"页签。
3. 选择"istio资源：virtualservices"，命名空间选择"vmns"，选择[创建VirtualService](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_0010.html#asm_bestpractice_0010__zh-cn_topic_0000001494538437_li865313575122)中创建的VirtualService，单击操作列的"编辑"，删除[更新VirtualService]中添加的字段。
4. 单击"确定"完成修改。
 
