Envoy を使用する場合の Traffic Director の制限事項
このドキュメントでは、高度なトラフィック管理の制限事項など、Traffic Director に適用される制限事項について説明します。上限については、割り当てと上限をご覧ください。
一般的な制限事項
Traffic Director の制限事項には、次のものがあります。
- Traffic Director は、Google Cloud APIs のみをサポートしています。Traffic Director では、Istio API はサポートしていません。
- Traffic Director を使用して、HTTP(HTTP/1.1 または HTTP/2)、HTTPS、TCP、gRPC のリクエスト プロトコルを構成できます。
- Envoy をデータプレーン プロキシとして使用する場合、
stream_idle_timeout
の値はデフォルトで 5 分に設定されます。この値を、Traffic Director を使用して構成することはできません。 - ターゲット TCP プロキシ リソースを使用して TCP リクエスト プロトコルを構成する場合は、高度なトラフィック管理機能を使用できません。高度なトラフィック管理機能は、HTTP リクエストまたは gRPC リクエストを処理するようにデータプレーンを構成する場合にのみ使用できます。
Traffic Director は共有 VPC をサポートしています。次の点にご注意ください。
- ロード バランシング API を使用する場合、転送ルールとそれに関連付けられたターゲット プロキシ、URL マップ、バックエンド サービス、バックエンドは、単一のプロジェクト(ホストまたはサービス プロジェクト)に存在する必要があります。複数のサービス プロジェクトがある場合は、各サービス プロジェクトにこれらのリソースの独自のセットを配置できます。
- ロード バランシング API を使用する場合、デフォルトでは、共有 VPC ネットワークを参照する転送ルールは、ホストとホスト プロジェクトに接続されたサービス プロジェクトに存在するすべての Envoy プロキシに対してアドバタイズされます。ただし、これらのプロキシが、
bootstrap/sidecar.env
ファイルで共有 VPC ネットワークを指定する必要があります。この動作は、構成フィルタリングを使用して調整できます。 - 共有 VPC ネットワークに関連付けられたロード バランシング スキーム
INTERNAL_SELF_MANAGED
を持つ転送ルールを少なくとも 1 つ含むプロジェクトのサービス アカウントによってのみ、Traffic Director にアクセスできます。
Traffic Director は、サービス ルーティング API による VPC ネットワーク ピアリングをサポートしていますが、ロード バランシング API ではサポートされていません。
Traffic Director では、サーバー ファーストのプロトコルはサポートされていません。
Knative または Google Cloud のサーバーレス コンピューティングで実行されているサービスでは Traffic Director を使用できません。
このドキュメントでは、Envoy プロキシについて説明しますが、Traffic Director では任意のオープン標準 API(xDS)プロキシを使用できます。ただし、Google では Traffic Director のテストについては、Envoy プロキシでのみ実施しています。
Traffic Director を使用するには、Envoy バージョン 1.9.1 以降を使用します。
正規表現を使用するには、Envoy バージョン 1.12.0 以降を使用します。1.12.0 より前の Envoy バージョンは、正規表現をサポートしていません。
既知のすべてのセキュリティに関する脆弱性が軽減されているため、最新の Envoy バージョンを使用することをおすすめします。Envoy のセキュリティ アドバイザリについては、Envoy のセキュリティ アドバイザリをご覧ください。
Google Cloud Console では、ハイブリッド接続ネットワーク エンドポイント グループ(NEG)はサポートされていません。ハイブリッド接続 NEG を作成または削除するには、Google Cloud CLI を使用します。
データプレーンがヘルスチェックを処理するため、Google Cloud コンソール、API、gcloud CLI を使用してヘルスチェックのステータスを取得できません。
iptables
が正しく設定されていることを確認します。iptables
の構成方法の詳細については、Envoy の HTTP フィルタリングの構成に関するメモをご覧ください。- Google Cloud コンソールを使用して仮想マシン(VM)インスタンスを作成する場合、一部の
ipv6
関連モジュールはインストールされず、再起動しなければ使用できません。これは、依存関係がないことによる、iptables.sh
の失敗につながります。その場合は、VM を再起動してrun.sh
スクリプトを再実行します。 - gcloud CLI を使用して Compute Engine VM を作成する場合、この問題は発生しないと考えられます。
- Google Cloud コンソールを使用して仮想マシン(VM)インスタンスを作成する場合、一部の
高度なトラフィック管理の制限
高度なトラフィック管理の制限事項には、次のものがあります。
BackendService.sessionAffinity
の値が NONE ではなく、BackendService.localityLbPolicy
がMAGLEV
またはRING_HASH
以外の負荷分散ポリシーに設定されている場合、セッション アフィニティの設定は有効になりません。gcloud import
コマンドは、バックエンド サービスや URL マップなど、リソースの最上位フィールドを削除しません。たとえば、バックエンド サービスを作成し、circuitBreakers
を設定した場合は、後続のgcloud import
コマンドを使用してこれらの設定を更新できます。ただし、これらの設定をバックエンド サービスから削除することはできません。リソースを削除して、circuitBreakers
の設定なしで再作成できます。- 転送ルールのインポートが正しく機能しません(エクスポートされた YAML ファイルを再インポートできません)。これを回避するには、構成ファイルをエクスポートして変更を行い、転送ルールを削除して構成ファイルをインポートします。
Service Directory の制限事項
- Service Directory と Traffic Director は、クライアントのネットワーク到達性を保証しません。
バックエンド サービスは、次のいずれかのみを参照できます。
- マネージド インスタンス グループまたは非マネージド インスタンス グループ
- ネットワーク エンドポイント グループ
- サービス バインディング
Service Directory サービスは、
load-balancing-scheme=INTERNAL_SELF_MANAGED
を含むグローバル バックエンド サービスでのみ使用できます。サービス バインディングによって参照されている Service Directory サービスを削除できます。バックエンド サービスが接続している基盤となる Service Directory サービスが削除されると、Traffic Director を使用するアプリケーションは、このサービスにトラフィックを送信できないため、リクエストは失敗します。ベスト プラクティスについては、オブザーバビリティとデバッグをご覧ください。
ヘルスチェック
Service Directory サービスをバックエンド サービスにバインドする場合、バックエンド サービスでヘルスチェックを構成することはできません。
次のステップ
- プロキシレス gRPC アプリケーションに関し、Traffic Director に適用される制限事項について、プロキシレス gRPC の制限事項で確認する。
- Traffic Director の詳細については、Traffic Director の概要をご覧ください。