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

Alibaba Cloud Service Mesh:アダプティブ xds 最適化

最終更新日:Jun 06, 2025

アダプティブ xds 最適化機能を使用して、サービスメッシュのパフォーマンスを向上させます。

重要

背景

Sidecar はデータプレーンにサービス情報を保存し、コントロールプレーンは構成の更新(例:新しい仮想サービスルール)をすべての Sidecar にプッシュします。頻繁な更新は、サービスメッシュのパフォーマンスを低下させる可能性があります。

このプロセスを最適化するには、アダプティブ xds 最適化機能を有効にします。これにより、エグレスゲートウェイ(istio-axds-egressgateway)がクラスタにデプロイされます。すべての HTTP トラフィックはこのゲートウェイを経由してルーティングされ、サービスの依存関係はゲートウェイのアクセスログから自動的に推測されます。手動での構成は不要です。 詳細については、「Sidecar リソース適用後の構成プッシュ最適化の効果」をご参照ください。

始める前に

ステップ 1:アダプティブ xds 最適化を有効にする

  1. ASM コンソール にログインします。左側のナビゲーションウィンドウで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[メッシュ最適化センター] > [アダプティブ Xds 最適化] を選択します。

  3. [アダプティブ Xds 最適化を有効にする] スイッチをオンにします。[確認] ダイアログボックスで、[OK] をクリックします。

    [OK] をクリックすると、更新にしばらく時間がかかります。[アダプティブ Xds 最適化を有効にする] スイッチがオンになると、アダプティブに最適化できる名前空間のリストが表示されます。

ステップ 2:名前空間に対してアダプティブ xds 最適化を有効にする

アダプティブ xds 最適化は、名前空間内のすべてのサービスに適用されます。 また、サービスに注釈 annotations asm.alibabacloud.com/asm-adaptive-xds: true を追加して、そのサービスに対してのみアダプティブ xds 最適化を有効にすることもできます。

  1. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[メッシュ最適化センター] > [アダプティブ Xds 最適化] を選択します。

  2. ターゲットサービス名前空間の右側にあるスイッチをオンにします。[確認] ダイアログボックスで、[OK] をクリックします。

  3. ASM インスタンスの詳細ページで、左側のナビゲーションウィンドウの [トラフィック管理センター] > [Sidecar トラフィック構成] を選択します。

  4. [Sidecar トラフィック構成] ページで、Sidecar リソースの詳細を表示します。

    axds で始まる Sidecar リソースがリストされます。各 Sidecar リソースは、Bookinfo アプリケーションのサービスに対応しています。Sidecar资源

ステップ 3:アプリケーションにアクセスしてアダプティブ xds 最適化をトリガーする

  1. イングレスゲートウェイの IP アドレスを取得する必要があります。

  2. 次の URL を使用して Bookinfo アプリケーションにアクセスします。

# {イングレスゲートウェイの IP アドレス} を前のステップで取得した IP アドレスに置き換えます。
http://{イングレスゲートウェイの IP アドレス}/productpage. 
  1. Sidecar リソースを表示します。

    1. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[トラフィック管理センター] > [Sidecar トラフィック構成] を選択します。

    2. [Sidecar トラフィック構成] ページで、[操作] 列の [axds-productpage] の右側にある [YAML の表示] をクリックします。次の例が表示されます。

      apiVersion: networking.istio.io/v1beta1
      kind: Sidecar
      metadata:
        annotations:
          adapted-svc: productpage.default.svc.cluster.local
        creationTimestamp: '2024-01-05T07:52:56Z'
        generation: 4
        labels:
          asm-adaptive-xds-system: 'true'
          asm-system: 'true'
          provider: asm
        name: axds-productpage
        namespace: default
        resourceVersion: '23688435'
        uid: 753e3603-6bee-4dd1-b1fc-2e735a88****
      spec:
        egress:
          - hosts:
              - arms-prom/*
              - default/details.default.svc.cluster.local
              - default/kubernetes.default.svc.cluster.local
              - default/reviews.default.svc.cluster.local
              - istio-system/*
              - kube-system/*
        workloadSelector:
          labels:
            app: productpage

      Bookinfo にアクセスした後、Sidecar リソース axds-productpage には、productpage が依存する detailsreviews が追加されています。

パフォーマンス比較

以下のテストでは、名前空間 asm-perf でアダプティブ構成プッシュ最適化が有効になっていない場合と、有効になっている場合 のコントロールプレーンとデータプレーンのパフォーマンスを、大量の構成更新が発生した場合に比較します。

  • ワークロードのスケールアウト:httpbin を 2 レプリカから 400 レプリカにスケールアウトします。

  • テストトラフィックの開始:sleep アプリケーションから異なる httpbin アプリケーションにランダムにリクエストを送信し、アダプティブ xds 最適化の再プッシュをトリガーします。

  • ワークロードの再起動:httpbin アプリケーションの再デプロイをトリガーし、ワークロードのスケーリングと更新のシナリオをシミュレートします。

ステップ 1:環境を準備する

  1. サンプルスクリプトを取得します。

    git clone https://github.com/AliyunContainerService/asm-labs.git && \
    
    cd asm-labs/asm-perf/adativexds
  2. テスト環境を構築します。

    bash run.sh -s

    このコマンドは、クラスタに次のリソースを作成します。

    • 名前空間 asm-perf

    • ワークロードを監視するための prometheus および grafana

    • 構成プッシュを受信するための sleep アプリケーションと httpbin アプリケーションの 2 つのレプリカ。

    次のコマンドを使用して、ダッシュボードにポート フォワーディングを行います。localhost:3000 にアクセスしてダッシュボードにアクセスできます。

    kubectl port-forward svc/grafana -n asm-perf 3000

ステップ 2:パフォーマンスを比較する

  1. ワークロードをスケールアウトします。

    bash run.sh -su

    しばらくしてから、ダッシュボードを確認します。想定される結果は次のとおりです。

    アダプティブ xds 最適化が無効になっている場合

    sleep アプリケーションの CPU 使用率

    image.png

    sleep アプリケーションのメモリ使用量

    image.png

    sleep アプリケーションのネットワーク帯域幅の使用量

    image.png

    コントロールプレーンのトラフィックの変化
    1. メッシュインスタンスの [基本情報] ページで、[Istio Pilot を公開するための CLB インスタンス] の後の CLB ID を記録します。

    2. Classic Load Balancer CLB コンソール にログインします。対応する CLB の [監視] 列のアイコンをクリックし、[リスナー] > [帯域幅/トラフィック] を選択してチャートを表示します。

      image.png

    メッシュ内のサービスが変更されると、コントロールプレーンは構成の更新をプッシュし、パフォーマンスが低下します。

    アダプティブ xds 最適化が有効になっている場合

    sleep アプリケーションの CPU 使用率

    image.png

    sleep アプリケーションのメモリ使用量

    image.png

    sleep アプリケーションのネットワーク帯域幅の使用量

    image.png

    コントロールプレーンのトラフィックの変化

    image.png

    パフォーマンスの低下は、アダプティブ xds 最適化が無効になっている場合よりも悪化しません。

    Sidecar リソース構成の表示
    1. sleep アプリケーションに有効な Sidecar リソース構成を表示します。

      kubectl get sidecar axds-sleep -n asm-perf -o yaml

      想定される出力:

      apiVersion: networking.istio.io/v1
      kind: Sidecar
      metadata:
        annotations:
          adapted-svc: sleep.asm-perf.svc.cluster.local
        creationTimestamp: "2025-04-03T03:09:42Z"
        generation: 2
        labels:
          asm-adaptive-xds-system: "true"
          asm-system: "true"
          provider: asm
        name: axds-sleep
        namespace: asm-perf
        resourceVersion: "14844729886"
        uid: 31dfc081-b0ec-403f-b420-91f3c3e5f8fb
      spec:
        egress:
        - hosts:
          - arms-prom/*
          - asm-perf/grafana.asm-perf.svc.cluster.local
          - default/kubernetes.default.svc.cluster.local
          - istio-system/*
          - kube-system/*
        workloadSelector:
          labels:
            app: sleep

      spec.egress.hosts の下に複数のサービスが存在します。これは、上記のサービスへの変更のみが sleep アプリケーションの構成更新をトリガーすることを意味します。 詳細については、「Sidecar リソース適用後の構成プッシュ最適化の効果」をご参照ください。

  2. テストトラフィックを開始します。sleep アプリケーションから異なる httpbin アプリケーションに合計 100 件のリクエストをランダムに送信します。

    bash run.sh -t

    リクエストが完了したら、ダッシュボードを確認します。

    アダプティブ xds 最適化が無効になっている場合

    sleep アプリケーションの CPU 使用率

    image.png

    sleep アプリケーションのメモリ使用量

    image

    sleep アプリケーションのネットワーク帯域幅の使用量

    image

    コントロールプレーンのトラフィックの変化

    image

    sleep アプリケーションからトラフィックを開始しても、構成の更新には影響しません。これは、各ワークロードに完全な構成があるためです。

    アダプティブ xds 最適化が有効になっている場合

    sleep アプリケーションの CPU 使用率

    image

    sleep アプリケーションのメモリ使用量

    image

    sleep アプリケーションのネットワーク帯域幅の使用量

    image

    コントロールプレーンのトラフィックの変化

    image.png

    sleep アプリケーションからトラフィックを開始すると、コントロールプレーンからの構成の更新がトリガーされます。

    Sidecar リソース構成の表示
    1. sleep アプリケーションに有効な Sidecar リソース構成を表示します。

      kubectl get sidecar axds-sleep -n asm-perf -o yaml

      想定される出力:

      展開して想定される出力を表示する

      apiVersion: networking.istio.io/v1
      kind: Sidecar
      metadata:
        annotations:
          adapted-svc: sleep.asm-perf.svc.cluster.local
        creationTimestamp: "2025-04-03T05:26:00Z"
        generation: 90
        labels:
          asm-adaptive-xds-system: "true"
          asm-system: "true"
          provider: asm
        name: axds-sleep
        namespace: asm-perf
        resourceVersion: "14845598119"
        uid: a272cb0f-6e6a-492e-9ee1-b0d072813c19
      spec:
        egress:
        - hosts:
          - arms-prom/*
          - asm-perf/grafana.asm-perf.svc.cluster.local
          - asm-perf/httpbin-v102.asm-perf.svc.cluster.local
          // ... (省略) ...
          - kube-system/*
        workloadSelector:
          labels:
            app: sleep

      spec.egress.hosts の下に複数のサービスが存在します。これは、上記のサービスへの変更のみが sleep アプリケーションの構成の再プッシュをトリガーすることを意味します。 詳細については、「Sidecar リソース適用後の構成プッシュ最適化の効果」をご参照ください。

  3. ワークロードを再起動します。

    bash run.sh -r

    すべてのワークロードが再起動したら、コントロールプレーンのトラフィックの変化を確認します。

    アダプティブ xds 最適化が無効になっている場合

    コントロールプレーンのトラフィックの変化

    image

    メッシュ内のサービスが変更されると、コントロールプレーンは構成の更新をプッシュし、パフォーマンスが低下します。

    アダプティブ xds 最適化が有効になっている場合

    コントロールプレーンのトラフィックの変化

    image

    アダプティブ xds 最適化が無効になっている場合と比較して、構成更新の量が大幅に削減されます。

  4. テスト環境を復元します。

    bash run.sh -sd

    httpbin アプリケーションポッドが 400 から 2 にスケールインするまで約 2 分かかります。

次の操作

アダプティブ xds 最適化機能を無効にする

  1. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[メッシュ最適化センター] > [アダプティブ Xds 最適化] を選択します。

  2. ターゲットサービス名前空間の右側にあるスイッチをオフにします。[確認] ダイアログボックスで、[OK] をクリックします。

  3. サービスメッシュの詳細ページの左側のナビゲーションウィンドウで、[トラフィック管理センター] > [Sidecar トラフィック構成] に移動します。

    アダプティブ xds 最適化機能によって作成された Sidecar リソースは削除されています。

エグレスゲートウェイ構成を変更する

  1. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[メッシュ最適化センター] > [アダプティブ Xds 最適化] を選択します。

  2. [エグレスゲートウェイ構成] タブをクリックし、必要に応じて構成を変更してから、[設定の更新] をクリックします。

    説明

    これで WordPress のインストールは完了です。詳細については、「WordPress サポート」をご参照ください。