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

Alibaba Cloud Service Mesh:ASM トラフィックスケジューリングスイートを使用して、分散システムのトラフィックを制御する

最終更新日:Jun 11, 2025

サービスメッシュ(ASM)トラフィックスケジューリングスイートは、分散システム内のすべてのトラフィックを一元管理および制御するための、非侵入型でスケーラブルな動的トラフィックスケジューリングアーキテクチャを提供します。これは、クラウドネイティブの分散アプリケーションの信頼性を高め、コストを削減し、リソース使用率を向上させるのに役立ちます。このトピックでは、ASM トラフィックスケジューリングスイートとその機能について説明します。

ASM トラフィックスケジューリングスイートとは

ASM トラフィックスケジューリングスイートは、ASM ベースの一元化されたトラフィックスケジューリングアーキテクチャモデルです。 クラウドネイティブの分散アプリケーションのリクエストを一元的にスケジュールおよび管理するように設計されています。

エージェントとコントローラーで構成される ASM トラフィックスケジューリングスイートは、一連の事前設定されたトラフィックスケジューリングポリシーを提供します。 これらのポリシーは、コントローラーによってエージェントに公開され、トラフィックスケジューリングを動的に制御します。 サイドカープロキシがポッドのインバウンドまたはアウトバウンドリクエストを転送すると、エージェントはトラフィックスケジューリングの決定をサイドカープロキシに渡し、これらのリクエストを調整またはキューイングします。

ASM トラフィックスケジューリングスイートを有効にする

説明

ACK ServerlessContainer Compute Service (ACS) は、ASM トラフィックスケジューリングスイートをサポートしていません。

ASM トラフィックスケジューリングスイートを使用するには、ASM インスタンスのバージョンが 1.21.6.82 以降であり、Kubernetes クラスターが ASM インスタンスに追加されていることを確認してください。詳細については、ASM インスタンスへのクラスターの追加 をご参照ください。

ASM トラフィックスケジューリングスイートを有効にするには、次の手順に従います。

ASM コンソールで

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

  2. ASM インスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、[トラフィック管理センター] > [トラフィック保護とスケジューリング] を選択します。

  3. [高度なトラフィックスケジューリング] タブを選択し、[トラフィックスケジューリングを有効にする] をクリックします。

  4. 以下の表を参照し、[OK] をクリックします。

    構成項目

    説明

    [ストレージタイプ]

    トラフィックスケジューリングスイートがスケジューリングエージェントとメタデータ間でデータ交換を行うために必要な、有効なストレージタイプ。

    [リソースの設定]

    エージェント Pod の構成。

    [制限] のデフォルトは 2 CPU と 1024MiB です。

    [リクエスト] のデフォルトは 0.5 CPU と 512MiB です。

    [タイムアウト期間]

    トラフィックスケジューリングスイートは、システムが過負荷状態のときにリクエストをキューイングすることをサポートしています。 指定された期間キューイングされたリクエストは破棄されます。

    [有効範囲]

    構成されていない場合、デフォルトはグローバルスコープです。 サポートされているスコープは次のとおりです。

    • ゲートウェイスコープ: 特定のゲートウェイに関連付けられたリソースに適用されます。

    • ワークロードスコープ: 特定のワークロードに適用されます。

    • 名前空間スコープ: 特定の名前空間に適用されます。

kubectl で

  1. kubectl を使用して ASM インスタンスに接続します。 詳細については、「コントロールプレーンで kubectl を使用して Istio リソースにアクセスする」をご参照ください。

  2. 次のコマンドを実行します。

    kubectl patch asmmeshconfig default --type=merge --patch='{"spec":{"adaptiveSchedulerConfiguration":{"enabled":true,"schedulerScopes":[{"namespace":"default"}]}}}'

ASM トラフィックスケジューリングスイートでサポートされているトラフィックスケジューリングポリシー

次の表に、ASM トラフィックスケジューリングスイートでサポートされているポリシーを示します。

ポリシー

説明

参照

トラフィックレート制限

トラフィックレート制限ポリシーは、RateLimtingPolicy CustomResourceDefinition(CRD)を使用して作成されます。このようなポリシーは、ASM インスタンス内の指定されたサービスに対してグローバルスロットリングを提供します。オープンソースの Istio が提供するスロットリングソリューションと比較して、RateLimtingPolicy CRD を使用して作成されたポリシーは、ユーザー固有のスロットリング、バーストトラフィックウィンドウの設定、リクエストトークンのカスタム消費レートの構成などの高度なスロットリング機能をサポートします。

RateLimitingPolicy を使用してユーザー固有のスロットリングを実装する

平均レイテンシに基づく優先順位ベースのリクエストスケジューリング

優先順位ベースのリクエストスケジューリングポリシーは、リアルタイムレイテンシを過去の平均レイテンシと比較して、トラフィックの過負荷が発生しているかどうかを判断します。トラフィックの過負荷が発生した場合、トークンバケットと優先順位に基づくスケジューリングメカニズムを使用してリクエストがスケジューリングされます。システムが過負荷になっている場合、優先度の高いリクエストを優先的に処理できます。

AverageLatencySchedulingPolicy を使用して優先順位ベースのリクエストスケジューリングを実装する

同時実行制御

同時実行制御は、処理中のリクエスト(つまり、送信済みだがまだ応答されていないリクエスト)のレコードを保持します。処理中のリクエストの数が指定された制限を超えると、後続の受信リクエストは拒否されます。

ConcurrencyLimitingPolicy を使用してリクエストの同時実行制限を実装する

制御された同時実行下での優先順位ベースのリクエストスケジューリング

ConcurrencySchedulingPolicy は、同時リクエストの制限に基づいてトラフィックが過負荷になっているかどうかを判断します。同時リクエストの数が指定された上限を超えると、後続のリクエストはキューに入れられ、優先順位に基づいてスケジューリングされます。

ConcurrencySchedulingPolicy を使用して制御された同時実行下での優先順位ベースのリクエストスケジューリングを実装する

段階的サービスリリース ポリシー

ASM トラフィックスケジューリングスイートは、段階的サービスリリース ポリシーをサポートしています。新しいサービスをリリースするときに、段階的リリース ポリシーを構成して、サービスが受信するトラフィックを徐々に増やすことができます。これにより、サービスがスムーズにリリースされます。

LoadRampingPolicy を使用して段階的サービスリリースを実装する

指定されたリクエストクォータを使用した優先順位ベースのリクエストスケジューリング

システムで単位時間あたりに処理されるリクエストの数が指定されたクォータを超えると、後続のリクエストはキューに入れられ、優先度の高いリクエストを優先的に処理できます。

QuotaSchedulingPolicy を使用してリクエスト呼び出しクォータ管理を実装する

ASM トラフィックスケジューリングスイートの監視メトリックを収集するための構成

Kubernetes クラスタが Managed Service for Prometheus インスタンスまたはセルフビルド Prometheus インスタンスと統合されている場合は、次の構成を実行して ASM リクエストスケジューリングエージェントの監視メトリックを収集できます。 これにより、ASM トラフィックスケジューリングスイートの特定のポリシーが有効になっているかどうかを確認できます。

Managed service for Prometheus

次のコードを実行して、カスタム収集ルールを追加します。 詳細については、「その他の Prometheus サービスディスカバリー構成」をご参照ください。

scrape_configs:
- job_name: asm-adaptive-scheduler-stats
  scrape_interval: 30s
  scrape_timeout: 30s
  metrics_path: /metrics
  scheme: http
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - source_labels:
    - __meta_kubernetes_namespace
    action: keep
    regex: istio-system
  - source_labels:
    - __meta_kubernetes_pod_container_port_name
    action: keep
    regex: server
  - source_labels:
    - __meta_kubernetes_pod_container_name
    action: keep
    regex: aperture-agent

セルフビルド Prometheus インスタンス

Managed Service for Prometheus の JSON ファイルを、Prometheus インスタンスの scrape_configs ノードに追加します。 詳細については、「Prometheus 構成」をご参照ください。