すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:フォールトインジェクションの設定

最終更新日:Jan 15, 2025

フォールトインジェクションとは、サービスに意図的に障害を発生させることで、フォールトトレランスの向上、クライアント側のバグの発見、潜在的な障害の特定を行うテスト手法です。Service Mesh はフォールトインジェクションをサポートしています。仮想サービスを使用して、アプリケーション層でフォールトインジェクションテストを実行できます。このトピックでは、フォールトインジェクションの設定方法について説明します。

前提条件

準備が完了し、HTTPBin サービスと sleep サービスがデプロイされています。詳細については、「準備」をご参照ください。

手順

  1. サービス設定が有効になっているかどうかを確認します。

    1. kubeconfig ファイルの情報に基づいて、kubectl を使用して Container Service for Kubernetes (ACK) クラスタに接続し、次のコマンドを実行して 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. kubeconfig ファイルの情報に基づいて、kubectl を使用して ACK クラスタに接続し、次のコマンドを実行して 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 秒遅延していることを示しています。