Traffic Director とハイブリッド接続ネットワーク エンドポイント グループ

Traffic Director では、オンプレミス データセンターや、ハイブリッド接続を使用して到達可能な他のパブリック クラウドなど、Google Cloud の枠を越えた環境をサポートします。

サービス メッシュが Google Cloud の外部にあるエンドポイントにトラフィックを送信できるように、Traffic Director を構成します。このエンドポイントには、次に挙げるものが含まれます。

  • オンプレミスのロードバランサ。
  • 別のクラウドの仮想マシン(VM)インスタンス上のサーバー アプリケーション。
  • ハイブリッド接続を使用して、IP アドレスとポートで到達可能な他の宛先。

各エンドポイントの IP アドレスとポートをハイブリッド接続のネットワーク エンドポイント グループ(NEG)に追加します。ハイブリッド接続 NEG のタイプは NON_GCP_PRIVATE_IP_PORT です。

オンプレミス サービスとマルチクラウド サービスに対する Traffic Director のサポートにより、次のことが可能になります。

  • オンプレミス サービスとマルチクラウド サービスのエンドポイントを含めて、グローバルにトラフィックをルーティングする。
  • Traffic Director とサービス メッシュのメリット(サービス ディスカバリや高度なトラフィック管理などの機能を含む)が、Google Cloud の外部にある既存のインフラストラクチャで実行されているサービスでも得られるようにする。
  • Traffic Director の機能と Cloud Load Balancing を組み合わせて、Google Cloud ネットワーキング サービスをマルチ環境まで拡げる。

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

ユースケース

Traffic Director では、次のような複数の環境で、VM ベースのサービスとコンテナベースのサービスの間にネットワークを構成できます。

  • Google Cloud
  • オンプレミスのデータセンター
  • その他のパブリック クラウド

メッシュ トラフィックをオンプレミスの場所または別のクラウドにルーティングする

この機能の最も簡単なユースケースは、トラフィックのルーティングです。アプリケーションが Traffic Director の Envoy プロキシを実行しているとします。Traffic Director は、サービスと各サービスのエンドポイントについてクライアントに伝えます。

メッシュ トラフィックをオンプレミスの場所または別のクラウドにルーティングする。
メッシュ トラフィックをオンプレミスの場所または別のクラウドにルーティングする(クリックして拡大)

上図では、アプリケーションが on-prem サービスにリクエストを送信すると、Traffic Director クライアントが送信リクエストを調べて宛先を更新します。宛先は、on-prem サービスに関連付けられたエンドポイントに設定されます(この場合は 10.2.0.1)。続いて、Cloud VPN または Cloud Interconnect 経由で、目的の宛先にリクエストが送信されます。

エンドポイントを追加する必要がある場合は、Traffic Director を更新してサービスに追加します。アプリケーション コードを変更する必要はありません。

既存のオンプレミス サービスを Google Cloud に移行する

Google Cloud 以外のエンドポイントにトラフィックを送信すると、他の環境にトラフィックを転送できます。この機能と高度なトラフィック管理を組み合わせると、環境間でサービスを移行できます。

オンプレミスの場所から Google Cloud への移行。
オンプレミスの場所から Google Cloud への移行(クリックして拡大)

上の図は以前のパターンを拡張したものです。すべてのトラフィックを on-prem サービスに送信するように Traffic Director を構成するのではなく、重み付けベースのトラフィック分割を使用して、2 つのサービス間でトラフィックを分割するように Traffic Director を構成します。

トラフィック分割を使用すると、トラフィックの 0% を cloud サービスに送信し、100% を on-prem サービスに送信することから始めることが可能です。その後、cloud サービス宛てのトラフィックの割合を徐々に増やしていきます。最終的には、トラフィックの 100% が cloud サービスに送信され、on-prem サービスは廃止できます。

オンプレミスとマルチクラウドのデプロイ向け Google Cloud ネットワーク エッジサービス

最後に、この機能を Google Cloud の既存のネットワーキング ソリューションと組み合わせることもできます。Google Cloud では、分散型サービス拒否攻撃(DDoS)対策のために Google Cloud Armor を使用したグローバルな外部負荷分散など、幅広いネットワーク サービスを提供します。これを Traffic Director とともに使用することで、新しい機能がオンプレミスやマルチクラウド サービスにもたらされます。また、このようなオンプレミス サービスやマルチクラウド サービスを公共のインターネットに公開する必要のないことが、最大のメリットです。

複数の環境にまたがるデプロイ。
複数の環境にまたがるデプロイ(クリックして拡大)

上の図では、公共のインターネット上のクライアントからのトラフィックが、Google Cloud のロードバランサ(グローバルな外部アプリケーション ロードバランサなど)から Google Cloud のネットワークに入っています。トラフィックがロードバランサに到達すると、Google Cloud Armor DDoS 対策や Identity-Aware Proxy(IAP)のユーザー認証などのネットワーク エッジサービスを適用できます。詳細については、マルチ環境デプロイ向けのネットワーク エッジ サービスをご覧ください。

これらのサービスを適用すると、トラフィックは Google Cloud で一時停止され、アプリケーションやスタンドアロンのプロキシ(Traffic Director で構成)が Cloud VPN または Cloud Interconnect を介してオンプレミス サービスにトラフィックを転送します。

Google Cloud のリソースとアーキテクチャ

このセクションでは、オンプレミス環境とマルチクラウド環境で Traffic Director によるマネージド サービス メッシュを提供する際に使用できる Google Cloud リソースの背景情報について説明します。

次の図は、オンプレミス サービスとマルチクラウド サービスで Traffic Director のサポートを可能にする Google Cloud リソースを示しています。主要なリソースは、NEG とそのネットワーク エンドポイントです。他のリソースは、標準の Traffic Director 設定の一環として構成するリソースです。わかりやすくするため、この図では複数のグローバル バックエンド サービスなどのオプションは表示されていません。

オンプレミスとマルチクラウド サービス用の Compute Engine リソース。
オンプレミス サービスとマルチクラウド サービス用の Compute Engine リソース(クリックして拡大)

Traffic Director を構成するときに、グローバル バックエンド サービス API リソースを使用してサービスを作成します。サービスは、次のものを組み合わせた論理的な構成です。

  1. クライアントがサービスにトラフィックを送信しようとしたときに適用するポリシー
  2. サービス宛てのトラフィックを処理する 1 つ以上のバックエンドまたはエンドポイント

オンプレミス サービスとマルチクラウド サービスは、Traffic Director が構成する他のサービスと同じように機能します。主な違いは、ハイブリッド接続 NEG を使用してこれらのサービスのエンドポイントを構成することです。これらの NEG のネットワーク エンドポイント タイプは NON_GCP_PRIVATE_IP_PORT に設定されています。ハイブリッド接続 NEG に追加するエンドポイントは、クライアントがアクセスできる有効な IP:port の組み合わせ(Cloud VPN や Cloud Interconnect などのハイブリッド接続など)にする必要があります。

各 NEG にはネットワーク エンドポイント タイプがあり、同じタイプのネットワーク エンドポイントのみを含めることができます。このタイプによって、次のことが決まります。

  • サービスがトラフィックを送信できる宛先。
  • ヘルスチェックの動作。

NEG を作成するときは、オンプレミスまたはマルチクラウドの宛先にトラフィックを送信できるように、次のように構成します。

  • ネットワーク エンドポイント タイプを NON_GCP_PRIVATE_IP_PORT に設定します。これは到達可能な IP アドレスを表します。この IP アドレスがオンプレミスまたは別のクラウド プロバイダにある場合は、Cloud VPN や Cloud Interconnect によって提供される接続などのハイブリッド接続を使用して Google Cloud から到達可能である必要があります。
  • Google Cloud と、オンプレミス環境またはマルチクラウド環境との間の地理的距離が最短になる Google Cloud ゾーンを指定します。たとえば、ドイツのフランクフルトのオンプレミス環境にサービスをホストする場合、NEG を作成するときに europe-west3-a Google Cloud ゾーンを指定できます。

このタイプのネットワーク エンドポイントのヘルスチェック動作は、他のタイプのネットワーク エンドポイントのヘルスチェック動作とは異なります。他のネットワーク エンドポイント タイプでは Google Cloud の一元化されたヘルスチェック システムを使用しますが、NON_GCP_PRIVATE_IP_PORT ネットワーク エンドポイントは Envoy の分散ヘルスチェック メカニズムを使用します。詳細については、制限事項とその他の考慮事項をご覧ください。

接続性とネットワーキングに関する考慮事項

Envoy プロキシなどの Traffic Director クライアントは、trafficdirector.googleapis.com:443 で Traffic Director に接続できる必要があります。Traffic Director コントロール プレーンとの接続が失われると、次のようになります。

  • 既存の Traffic Director クライアントは、Traffic Director から構成の更新を受信できません。現在の構成に基づいて動作が継続されます。
  • 新しい Traffic Director クライアントは、Traffic Director に接続できません。接続が再度確立されるまで、サービス メッシュを使用できません。

Google Cloud と、オンプレミス環境またはマルチクラウド環境との間でトラフィックを送信する場合は、両環境をハイブリッド接続で接続する必要があります。Cloud VPN または Cloud Interconnect による高可用接続をおすすめします。

オンプレミス、他のクラウド、Google Cloud サブネットの IP アドレスと IP アドレス範囲は、重複しないようにする必要があります。

制限事項とその他の考慮事項

ハイブリッド接続 NEG を使用する場合は、以下の制限事項があります。

proxyBind の設定

targetHttpProxy を作成するときは、proxyBind の値のみ設定できます。既存の targetHttpProxy を更新することはできません。

接続と接続の中断

接続要件と制限の詳細については、接続とネットワークに関する考慮事項セクションをご覧ください。

混合バックエンド タイプ

バックエンド サービスには、VM バックエンドまたは NEG バックエンドを使用できます。バックエンド サービスに NEG バックエンドがある場合、すべての NEG に同じネットワーク エンドポイント タイプを含める必要があります。バックエンド サービスに、エンドポイント タイプが異なる複数の NEG を使用することはできません。

URL マップには、異なるバックエンド サービスを解決するホストルールを設定できます。ハイブリッド接続 NEG のみのバックエンド サービス(オンプレミス エンドポイントを含む)と、スタンドアロン NEG(GKE エンドポイントを含む)を使用するバックエンド サービスがあります。URL マップには、各バックエンド サービス間でトラフィックを分割するルール(重み付けベースのトラフィック分割など)を含めることができます。

Google Cloud バックエンドによる NON_GCP_PRIVATE_IP_PORT タイプのエンドポイントでの NEG の使用

Google Cloud のバックエンドを指すハイブリッド接続 NEG を使用してバックエンド サービスを作成できます。ただし、ハイブリッド接続 NEG は一元化されたヘルスチェックのメリットを得られないため、このパターンはおすすめしません。一元化されたヘルスチェックと分散されたヘルスチェックの説明については、ヘルスチェック セクションをご覧ください。

エンドポイントの登録

NEG にエンドポイントを追加する場合は、NEG を更新する必要があります。これは手動で行うことも、Google Cloud NEG REST API または Google Cloud CLI を使用して自動化することもできます。

サービスの新しいインスタンスが開始されると、Google Cloud APIs を使用して、構成した NEG にインスタンスを登録できます。Compute Engine マネージド インスタンス グループ(MIG)または GKE(Google Cloud)を使用する場合、MIG コントローラまたは NEG コントローラがエンドポイントの登録をそれぞれ自動的に処理します。

ヘルスチェック

ハイブリッド接続 NEG を使用する場合、ヘルスチェックの動作は、標準的な集中型ヘルスチェックと次の点が異なります。

  • NON_GCP_PRIVATE_IP_PORT タイプのネットワーク エンドポイントの場合、Traffic Director は、データプレーンを使用してヘルスチェックを処理するようにクライアントを構成します。正常でないバックエンドにリクエストが送信されないようにするため、Envoy インスタンスは、独自のヘルスチェックを実行し、独自の仕組みを使用します
  • データプレーンがヘルスチェックを処理するため、Google Cloud Console、API、Google Cloud CLI を使用してヘルスチェックのステータスを取得することはできません。

実際には、NON_GCP_PRIVATE_IP_PORT を使用すると次のようになります。

  • Traffic Director クライアントは、それぞれ分散された方法でヘルスチェックを処理するため、ヘルスチェックが原因でネットワーク トラフィックが増加することがあります。その増加量は、Traffic Director クライアントの数と、各クライアントがヘルスチェックに必要とするエンドポイントの数によって異なります。例:
    • ハイブリッド接続 NEG に別のエンドポイントを追加すると、既存の Traffic Director クライアントは、ハイブリッド接続 NEG のエンドポイントのヘルスチェックを開始することがあります。
    • サービス メッシュに別のインスタンスを追加すると(たとえば、アプリケーション コードを実行する VM インスタンスと Traffic Director クライアントなど)、新しいインスタンスがハイブリッド接続 NEG のエンドポイントのヘルスチェックを開始することがあります。
    • ヘルスチェックによるネットワーク トラフィックは、二乗(O(n^2))の割合で増加します。

VPC ネットワーク

サービス メッシュは、Virtual Private Cloud(VPC)ネットワーク名で一意に識別されます。Traffic Director クライアントは、ブートストラップ構成で指定された VPC ネットワークに基づいて Traffic Director から構成を受け取ります。したがって、メッシュが完全に Google Cloud データセンターの外にある場合でも、ブートストラップ構成で有効な VPC ネットワーク名を指定する必要があります。

サービス アカウント

Google Cloud 内のデフォルトの Envoy ブートストラップは、Compute Engine と GKE の一方または両方のデプロイ環境からサービス アカウント情報を読み取るように構成されています。Google Cloud の外部で実行する場合、Envoy ブートストラップでサービス アカウント、ネットワーク名、プロジェクト番号を明示的に指定する必要があります。このサービス アカウントには、Traffic Director API に接続するための十分な権限が必要です。

次のステップ