プロキシレス 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 マップ トラフィック管理機能がサポートされています。
hostRules
の pathMatcher
でサポートされている機能:
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 マップの
*
ホストルールなど)は、サポートされていません。ホストのマッチングが完了すると、このエントリはスキップされます。次の機能はサポートされていません。
routeRules
のqueryParameterMatches
headerAction
、urlRewrite
、requestMirrorPolicy
、corsPolicy
、urlRedirect
のルート アクション。timeout
ルート アクション。timeout
ではなくmaxStreamDuration
を使用してください。retryPolicy
のperTryTimeout
retryPolicy
のretryConditions
(cancelled
、deadline-exceeded
、internal
、resource-exhausted
、unavailable
の 1 つ以上の条件を除く)- URL マップの
defaultService
、defaultRouteAction
、defaultUrlRedirect
、headerAction
は、プロキシレス gRPC サービスで使用されません。プロキシレス gRPC クライアントによるサービス名の検索で、一致するホストルールが見つからない場合、Traffic Director は URL マップのデフォルトのサービスまたはアクションを使用する代わりに、名前検索エラーを返します。 weightedBackendServices
のheaderAction
URL マップのヘッダー マッチング ルールでは、非バイナリで、ユーザー指定のカスタム メタデータと、
content-type
ヘッダーのみがサポートされます。トランスポート レベルのヘッダー(:authority
、:method
、:path
、:scheme
、user-agent
、accept-encoding
、content-encoding
、grpc-accept-encoding
、grpc-encoding
、grpc-previous-rpc-attempts
、grpc-tags-bin
、grpc-timeout
、grpc-trace-bin
)は、ヘッダー マッチング ルールでは使用できません。あるバックエンド サービスから別のバックエンド サービスに変更するために URL マップ ホストルールを更新すると、新しい構成がクライアントに push される一方で、トラフィックが一時的にドロップされる可能性があります。この制限を回避するには、重み付けされたバックエンド サービスによるトラフィック分割を構成します。トラフィック分割を構成したら、古いバックエンド サービスから新しいバックエンド サービスにトラフィックを段階的にシフトします。
ターゲット gRPC プロキシの制限事項
ターゲット gRPC プロキシによって URL マップが参照される場合に、次の URL マップ機能は構成できません。これは、サイドカー プロキシとプロキシレス gRPC サービスのいずれを使用する場合でも同じです。これらの HTTP プロトコル固有の機能は gRPC プロトコルに適用されないためです。
queryParameterMatches
マッチング ルールurlRewrite
ルート アクションurlRedirect
ルート アクションcorsPolicy
アクション
バックエンド サービスの制限事項
サイドカー プロキシでサポートされているプロキシレス gRPC サービスでは、次のバックエンド サービス機能がサポートされません。
localityLbPolicy
(LEAST_REQUEST
(Java クライアントのみを含む)、ROUND_ROBIN
、RING_HASH
を除く)sessionAffinity
(HEADER_FIELD
とNONE
を除く)consistentHash
(httpHeaderName
とminimumRingSize
のフィールドを除く)affinityCookieTtlSec
timeoutSec
。代わりにmaxStreamDuration
を使用してください。circuitBreakers
(maxRequests
フィールドを除く)
高度なトラフィック管理の制限
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 サービスをバックエンド サービスにバインドする場合、バックエンド サービスでヘルスチェックを構成することはできません。
次のステップ
- 高度なトラフィック管理の制限事項など、Traffic Director に適用される制限事項について、Traffic Director の制限事項で確認する。
- プロキシレス gRPC サービスのユースケースとアーキテクチャ パターンを確認するには、プロキシレス gRPC サービスの概要をご覧ください。