プロキシレス gRPC の制限事項

このドキュメントでは、プロキシレス gRPC アプリケーションで Traffic Director に適用される制限事項について説明します。上限については、割り当てと上限をご覧ください。

一般的な制限事項

プロキシレス gRPC アプリケーションでの Traffic Director の制限事項には、次のものがあります。

  • Google Cloud コンソールでは、gRPC プロトコルを使用してバックエンド サービスとルーティング ルールマップを構成することはできません。これらのリソースでは、Google Cloud コンソールは読み取り専用です。

  • プロキシレス gRPC は、エンドポイントの検出、ルーティング、ロード バランシング、負荷レポート、多数の高度なトラフィック管理機能をサポートしています。

    • 一部の高度なトラフィック管理機能をサポートするために必要な gRPC の最小バージョンについては、サポートされる gRPC のバージョンと言語をご覧ください。

    • サポートされていない高度なトラフィック管理機能を必要とする gRPC アプリケーションの場合は、xDS リゾルバの代わりに DNS 名前リゾルバを使用し、Traffic Director でサポートされているサイドカー プロキシでデプロイします。ターゲット gRPC プロキシ内で validateForProxyless フィールドを FALSE に設定します。これにより、gRPC でまだサポートされていないものの、サイドカー プロキシを使用して Traffic Director で使用可能な機能を構成できます。

  • プロキシレス gRPC では、ロード バランシング ポリシーとしてラウンドロビンとリングハッシュのみがサポートされます。その他のロード バランシング ポリシーはサポートされません。

    • Traffic Director は、gRPC クライアントに対して、地域区分に優先順位と重みを付けたリスト(1 つのインスタンス グループまたは 1 つのネットワーク エンドポイント グループ(NEG))を提供します。Traffic Director は、最も近い利用可能なゾーン、その容量、バックエンド サービスの分散モードに基づいてこのリストを算出します。
    • 特定のリクエストでは、gRPC クライアントは優先度と重みに基づいて 1 つ以上の地域区分を選択し、それらの地域区分内でバックエンドに対して、ラウンドロビンまたはリングハッシュに基づいたロード バランシングを行います。
  • 現在のゾーンの容量が 50% を下回ると、あるゾーン(地域区分)から別のゾーンへのフェイルオーバーが開始されます。このしきい値は構成できません。

  • ターゲット gRPC プロキシと、ターゲット gRPC プロキシを参照する転送ルールに関連する構成コマンドの実行には最大で 1 分を要する場合があります。

  • ハイブリッド接続 NEG(NON_GCP_PRIVATE_IP_PORT NEG)は、プロキシレス gRPC クライアントではサポートされていません。

URL マップの制限事項

プロキシレス gRPC サービスでは、次の URL マップ トラフィック管理機能がサポートされています。

hostRulespathMatcher でサポートされている機能:

pathMatcher
  name
  description
  defaultService
  defaultRouteAction
     weightedBackendServices
       backendService
       weight
    retryPolicy
       retryConditions
       numRetries
    faultInjectionPolicy
    maxStreamDuration
  pathRules
    service
    routeAction
      weightedBackendServices
         backendService
         weight
      retryPolicy
         retryConditions
         numRetries
      faultInjectionPolicy
      maxStreamDuration
    paths
  routeRules
    priority
    description
    matchRules
        prefixMatch
        fullPathMatch
        headerMatches
        metadataFilters
    service
    routeAction
      weightedBackendServices
         backendService
         weight
      retryPolicy
         retryConditions
         numRetries
      faultInjectionPolicy
      maxStreamDuration

プロキシレス gRPC サービスを使用する場合、次の URL マップ制限事項が適用されます。

  • URL マップのホストルールとデフォルト ルールのワイルドカード文字(暗黙的に作成される URL マップの * ホストルールなど)は、サポートされていません。ホストのマッチングが完了すると、このエントリはスキップされます。

  • 次の機能はサポートされていません。

    • routeRulesqueryParameterMatches
    • headerActionurlRewriterequestMirrorPolicycorsPolicyurlRedirect のルート アクション。
    • timeout ルート アクション。timeout ではなく maxStreamDuration を使用してください。
    • retryPolicyperTryTimeout
    • retryPolicyretryConditionscancelleddeadline-exceededinternalresource-exhaustedunavailable の 1 つ以上の条件を除く)
    • URL マップの defaultServicedefaultRouteActiondefaultUrlRedirectheaderAction は、プロキシレス gRPC サービスで使用されません。プロキシレス gRPC クライアントによるサービス名の検索で、一致するホストルールが見つからない場合、Traffic Director は URL マップのデフォルトのサービスまたはアクションを使用する代わりに、名前検索エラーを返します。
    • weightedBackendServicesheaderAction
  • URL マップのヘッダー マッチング ルールでは、非バイナリで、ユーザー指定のカスタム メタデータと、content-type ヘッダーのみがサポートされます。トランスポート レベルのヘッダー(:authority:method:path:schemeuser-agentaccept-encodingcontent-encodinggrpc-accept-encodinggrpc-encodinggrpc-previous-rpc-attemptsgrpc-tags-bingrpc-timeoutgrpc-trace-bin)は、ヘッダー マッチング ルールでは使用できません。

  • あるバックエンド サービスから別のバックエンド サービスに変更するために URL マップ ホストルールを更新すると、新しい構成がクライアントに push される一方で、トラフィックが一時的にドロップされる可能性があります。この制限を回避するには、重み付けされたバックエンド サービスによるトラフィック分割を構成します。トラフィック分割を構成したら、古いバックエンド サービスから新しいバックエンド サービスにトラフィックを段階的にシフトします。

ターゲット gRPC プロキシの制限事項

ターゲット gRPC プロキシによって URL マップが参照される場合に、次の URL マップ機能は構成できません。これは、サイドカー プロキシとプロキシレス gRPC サービスのいずれを使用する場合でも同じです。これらの HTTP プロトコル固有の機能は gRPC プロトコルに適用されないためです。

  • queryParameterMatches マッチング ルール
  • urlRewrite ルート アクション
  • urlRedirect ルート アクション
  • corsPolicy アクション

バックエンド サービスの制限事項

サイドカー プロキシでサポートされているプロキシレス gRPC サービスでは、次のバックエンド サービス機能がサポートされません。

  • localityLbPolicyLEAST_REQUEST(Java クライアントのみを含む)、ROUND_ROBINRING_HASH を除く)
  • sessionAffinityHEADER_FIELDNONE を除く)
  • consistentHashhttpHeaderNameminimumRingSize のフィールドを除く)
  • affinityCookieTtlSec
  • timeoutSec。代わりに maxStreamDuration を使用してください。
  • circuitBreakersmaxRequests フィールドを除く)

高度なトラフィック管理の制限

Traffic Director で、一部のプロキシレス gRPC サービスの高度なトラフィック管理機能を構成することはできません。サポートされている機能については、以下をご覧ください。

Service Directory の制限事項

  • Service Directory と Traffic Director は、クライアントのネットワーク到達性を保証しません。
  • バックエンド サービスは、次のいずれかのみを参照できます。

    • マネージド インスタンス グループまたは非マネージド インスタンス グループ
    • ネットワーク エンドポイント グループ
    • サービス バインディング
  • Service Directory サービスは、load-balancing-scheme=INTERNAL_SELF_MANAGED を含むグローバル バックエンド サービスでのみ使用できます。

  • サービス バインディングによって参照されている Service Directory サービスを削除できます。バックエンド サービスが接続している基盤となる Service Directory サービスが削除されると、Traffic Director を使用するアプリケーションは、このサービスにトラフィックを送信できないため、リクエストは失敗します。ベスト プラクティスについては、オブザーバビリティとデバッグをご覧ください。

ヘルスチェック

Service Directory サービスをバックエンド サービスにバインドする場合、バックエンド サービスでヘルスチェックを構成することはできません。

次のステップ