アダプティブ xds 最適化機能を使用して、サービスメッシュのパフォーマンスを向上させます。
アダプティブ xds 最適化を有効にするには、ASM インスタンスを 1.15.3.63 以降にスペックアップする必要があります。
アダプティブ xds 最適化は HTTP のみをサポートしています。
背景
Sidecar はデータプレーンにサービス情報を保存し、コントロールプレーンは構成の更新(例:新しい仮想サービスルール)をすべての Sidecar にプッシュします。頻繁な更新は、サービスメッシュのパフォーマンスを低下させる可能性があります。
このプロセスを最適化するには、アダプティブ xds 最適化機能を有効にします。これにより、エグレスゲートウェイ(istio-axds-egressgateway)がクラスタにデプロイされます。すべての HTTP トラフィックはこのゲートウェイを経由してルーティングされ、サービスの依存関係はゲートウェイのアクセスログから自動的に推測されます。手動での構成は不要です。 詳細については、「Sidecar リソース適用後の構成プッシュ最適化の効果」をご参照ください。
始める前に
Helm がインストールされている必要があります。
ステップ 1:アダプティブ xds 最適化を有効にする
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[アダプティブ Xds 最適化を有効にする] スイッチをオンにします。[確認] ダイアログボックスで、[OK] をクリックします。
[OK] をクリックすると、更新にしばらく時間がかかります。[アダプティブ Xds 最適化を有効にする] スイッチがオンになると、アダプティブに最適化できる名前空間のリストが表示されます。
ステップ 2:名前空間に対してアダプティブ xds 最適化を有効にする
アダプティブ xds 最適化は、名前空間内のすべてのサービスに適用されます。 また、サービスに注釈 annotations asm.alibabacloud.com/asm-adaptive-xds: true を追加して、そのサービスに対してのみアダプティブ xds 最適化を有効にすることもできます。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
ターゲットサービス名前空間の右側にあるスイッチをオンにします。[確認] ダイアログボックスで、[OK] をクリックします。
ASM インスタンスの詳細ページで、左側のナビゲーションウィンドウの を選択します。
[Sidecar トラフィック構成] ページで、Sidecar リソースの詳細を表示します。
axds で始まる Sidecar リソースがリストされます。各 Sidecar リソースは、Bookinfo アプリケーションのサービスに対応しています。

ステップ 3:アプリケーションにアクセスしてアダプティブ xds 最適化をトリガーする
イングレスゲートウェイの IP アドレスを取得する必要があります。
次の URL を使用して Bookinfo アプリケーションにアクセスします。
# {イングレスゲートウェイの IP アドレス} を前のステップで取得した IP アドレスに置き換えます。
http://{イングレスゲートウェイの IP アドレス}/productpage. Sidecar リソースを表示します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[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: productpageBookinfo にアクセスした後、Sidecar リソース
axds-productpageには、productpageが依存するdetailsとreviewsが追加されています。
パフォーマンス比較
以下のテストでは、名前空間 asm-perf でアダプティブ構成プッシュ最適化が有効になっていない場合と、有効になっている場合 のコントロールプレーンとデータプレーンのパフォーマンスを、大量の構成更新が発生した場合に比較します。
ワークロードのスケールアウト:
httpbinを 2 レプリカから 400 レプリカにスケールアウトします。テストトラフィックの開始:
sleepアプリケーションから異なるhttpbinアプリケーションにランダムにリクエストを送信し、アダプティブ xds 最適化の再プッシュをトリガーします。ワークロードの再起動:
httpbinアプリケーションの再デプロイをトリガーし、ワークロードのスケーリングと更新のシナリオをシミュレートします。
ステップ 1:環境を準備する
サンプルスクリプトを取得します。
git clone https://github.com/AliyunContainerService/asm-labs.git && \ cd asm-labs/asm-perf/adativexdsテスト環境を構築します。
bash run.sh -sこのコマンドは、クラスタに次のリソースを作成します。
名前空間
asm-perf。ワークロードを監視するための
prometheusおよびgrafana。構成プッシュを受信するための
sleepアプリケーションとhttpbinアプリケーションの 2 つのレプリカ。
次のコマンドを使用して、ダッシュボードにポート フォワーディングを行います。
localhost:3000にアクセスしてダッシュボードにアクセスできます。kubectl port-forward svc/grafana -n asm-perf 3000
ステップ 2:パフォーマンスを比較する
ワークロードをスケールアウトします。
bash run.sh -suしばらくしてから、ダッシュボードを確認します。想定される結果は次のとおりです。
アダプティブ xds 最適化が無効になっている場合
sleep アプリケーションの CPU 使用率

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

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

コントロールプレーンのトラフィックの変化
メッシュインスタンスの [基本情報] ページで、[Istio Pilot を公開するための CLB インスタンス] の後の CLB ID を記録します。
Classic Load Balancer CLB コンソール にログインします。対応する CLB の [監視] 列のアイコンをクリックし、 を選択してチャートを表示します。

メッシュ内のサービスが変更されると、コントロールプレーンは構成の更新をプッシュし、パフォーマンスが低下します。
アダプティブ xds 最適化が有効になっている場合
sleep アプリケーションの CPU 使用率

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

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

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

パフォーマンスの低下は、アダプティブ xds 最適化が無効になっている場合よりも悪化しません。
Sidecar リソース構成の表示
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: sleepspec.egress.hostsの下に複数のサービスが存在します。これは、上記のサービスへの変更のみがsleepアプリケーションの構成更新をトリガーすることを意味します。 詳細については、「Sidecar リソース適用後の構成プッシュ最適化の効果」をご参照ください。
テストトラフィックを開始します。
sleepアプリケーションから異なるhttpbinアプリケーションに合計 100 件のリクエストをランダムに送信します。bash run.sh -tリクエストが完了したら、ダッシュボードを確認します。
アダプティブ xds 最適化が無効になっている場合
sleep アプリケーションの CPU 使用率

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

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

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

sleepアプリケーションからトラフィックを開始しても、構成の更新には影響しません。これは、各ワークロードに完全な構成があるためです。アダプティブ xds 最適化が有効になっている場合
sleep アプリケーションの CPU 使用率

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

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

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

sleepアプリケーションからトラフィックを開始すると、コントロールプレーンからの構成の更新がトリガーされます。Sidecar リソース構成の表示
sleepアプリケーションに有効な Sidecar リソース構成を表示します。kubectl get sidecar axds-sleep -n asm-perf -o yaml想定される出力:
spec.egress.hostsの下に複数のサービスが存在します。これは、上記のサービスへの変更のみがsleepアプリケーションの構成の再プッシュをトリガーすることを意味します。 詳細については、「Sidecar リソース適用後の構成プッシュ最適化の効果」をご参照ください。
ワークロードを再起動します。
bash run.sh -rすべてのワークロードが再起動したら、コントロールプレーンのトラフィックの変化を確認します。
アダプティブ xds 最適化が無効になっている場合
コントロールプレーンのトラフィックの変化

メッシュ内のサービスが変更されると、コントロールプレーンは構成の更新をプッシュし、パフォーマンスが低下します。
アダプティブ xds 最適化が有効になっている場合
コントロールプレーンのトラフィックの変化

アダプティブ xds 最適化が無効になっている場合と比較して、構成更新の量が大幅に削減されます。
テスト環境を復元します。
bash run.sh -sdhttpbinアプリケーションポッドが 400 から 2 にスケールインするまで約 2 分かかります。
次の操作
アダプティブ xds 最適化機能を無効にする
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
ターゲットサービス名前空間の右側にあるスイッチをオフにします。[確認] ダイアログボックスで、[OK] をクリックします。
サービスメッシュの詳細ページの左側のナビゲーションウィンドウで、 に移動します。
アダプティブ xds 最適化機能によって作成された Sidecar リソースは削除されています。
エグレスゲートウェイ構成を変更する
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[エグレスゲートウェイ構成] タブをクリックし、必要に応じて構成を変更してから、[設定の更新] をクリックします。
説明これで WordPress のインストールは完了です。詳細については、「WordPress サポート」をご参照ください。