更新时间:2023-06-29 GMT+08:00
分享

虚拟机服务配置故障注入

故障注入是一种评估系统可靠性的有效方法,故意在待测试的系统中引入故障,从而测试其健壮性和应对故障的能力。有两种类型的故障注入,可以在转发前延迟(delay)请求,模拟缓慢的网络或过载的服务,也可以中断(abort)HTTP请求,并返回一个特定的HTTP状态码给调用者。通过中断,可以模拟一个有故障的上游服务。

如下图所示,注入一个指定的HTTP状态码(如599)后,对于访问的客户端来说,就跟服务端发生异常一样。

本文以配置中断故障为例,其他治理策略的配置方法可参考Istio官网

前提条件

已执行添加虚拟机服务到网格,即已创建v1版本的WorkloadEntry、ServiceEntry,已创建VirtualService、DestinationRule。

更新VirtualService

  1. 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。
  2. 在左侧导航栏选择“网格配置”,单击“istio资源管理”页签。
  3. 选择“istio资源:virtualservices”,命名空间选择“vmns”,选择创建VirtualService中创建的VirtualService,单击操作列的“编辑”,在spec.http[0]下添加以下内容:

          fault:
            abort:
              httpStatus: 599
              percentage:
                value: 100

    其中,599为自定义的HTTP状态码,100为故障百分比。

  4. 单击“确定”完成修改。

验证故障注入

  1. 在CCE集群中部署容器服务tomcat,具体操作请参见部署容器服务
  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中填写的命名空间。

    若回显“599”,则表示配置的中断故障生效。

移除故障注入

  1. 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。
  2. 在左侧导航栏选择“网格配置”,单击“istio资源管理”页签。
  3. 选择“istio资源:virtualservices”,命名空间选择“vmns”,选择创建VirtualService中创建的VirtualService,单击操作列的“编辑”,删除更新VirtualService中添加的字段。
  4. 单击“确定”完成修改。

相关文档