全部產品
Search
文件中心

Alibaba Cloud Service Mesh:【Fault Injection】故障注入

更新時間:Jun 30, 2024

故意破壞服務,以暴露弱點的測試方法可以提高容錯能力,發現用戶端的錯誤,或者識別您所面臨的故障情況。Service MeshASM支援故障注入,您可以使用虛擬服務在應用程式層進行測試。本文介紹如何配置故障注入。

前提條件

已完成準備工作,並部署httpbin服務和sleep服務。具體操作,請參見準備工作

操作步驟

  1. 驗證服務配置是否生效。

    1. 在ACK叢集對應的KubeConfig環境下,執行以下命令,進入sleep環境開啟bash。

      kubectl exec -it deploy/sleep -- sh
    2. 執行以下命令,向httpbin服務發送請求。

      curl -I httpbin:8000

      預期輸出:

      HTTP/1.1 200 OK
      server: envoy
      date: Fri, 11 Aug 2023 09:50:24 GMT
      content-type: text/html; charset=utf-8
      content-length: 9593
      access-control-allow-origin: *
      access-control-allow-credentials: true
      x-envoy-upstream-service-time: 3
  2. 使用以下內容,配置httpbin應用的流量規則,注入故障。具體操作,請參見管理虛擬服務

  3. apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: httpbin-vs
      namespace: default
    spec:
      hosts:
        - httpbin
      http:
        - fault:
            delay:
              fixedDelay: 5s
              percentage:
                value: 100
          route:
            - destination:
                host: httpbin
  4. 驗證配置是否生效。

    1. 在ACK叢集對應的KubeConfig環境下,執行以下命令,進入sleep環境開啟bash。

      kubectl exec -it deploy/sleep -- sh
    2. 執行以下命令,向httpbin服務發送請求。

      curl -w "Total time: %{time_total} seconds\n" -I httpbin:80

      預期輸出:

      HTTP/1.1 200 OK
      server: istio-envoy
      date: Sun, 27 Aug 2023 12:41:05 GMT
      content-type: text/html; charset=utf-8
      content-length: 9593
      access-control-allow-origin: *
      access-control-allow-credentials: true
      x-envoy-upstream-service-time: 3
      
      Total time: 5.008333 seconds

      預期輸出表明響應延遲5秒返回。