アプリケーション ロードバランサの概要

アプリケーション ロードバランサは、サービスの実行とスケールを可能にするプロキシベースのレイヤ 7 ロードバランサです。アプリケーション ロードバランサは、Compute Engine、Google Kubernetes Engine(GKE)、Cloud Storage、Cloud Run など、さまざまな Google Cloud プラットフォームでホストされているバックエンド、およびインターネット経由で、またはハイブリッド接続を使用して接続された外部バックエンドに HTTP および HTTPS トラフィックを分散します。

アプリケーション ロードバランサは、次のデプロイモードで使用できます。

  • 外部アプリケーション ロードバランサ: インターネット上のクライアントから着信したトラフィックをロードバランスします。アーキテクチャの詳細については、外部アプリケーション ロードバランサのアーキテクチャをご覧ください。

    デプロイモード ネットワーク サービス ティア ロード バランシング スキーム IP アドレス フロントエンド ポート
    グローバル外部 プレミアム ティア EXTERNAL_MANAGED IPv4
    IPv6

    1~65535 のポートを 1 つだけ参照できます。

    リージョン外部 プレミアムまたはスタンダード ティア EXTERNAL_MANAGED IPv4
    従来

    グローバル(プレミアム ティア)

    リージョン(スタンダード ティア)

    EXTERNAL* IPv4
    IPv6(プレミアム ティアが必要)
    * EXTERNAL_MANAGED バックエンド サービスを EXTERNAL 転送ルールに接続できます。ただし、EXTERNAL バックエンド サービスを EXTERNAL_MANAGED 転送ルールに接続することはできません。グローバル外部アプリケーション ロードバランサでのみ利用可能な新機能を活用するには、従来のアプリケーション ロードバランサからグローバル外部アプリケーション ロードバランサにリソースを移行するで説明されている移行プロセスを使用して、既存の EXTERNAL リソースを EXTERNAL_MANAGED に移行することをおすすめします。
  • 内部アプリケーション ロードバランサ: VPC ネットワーク内または VPC ネットワークに接続されているネットワーク内のトラフィックをロードバランスします。アーキテクチャの詳細については、内部アプリケーション ロードバランサのアーキテクチャをご覧ください。

    デプロイモード ネットワーク サービス ティア ロード バランシング スキーム IP アドレス フロントエンド ポート
    リージョン内部 プレミアム ティア INTERNAL_MANAGED IPv4

    1~65535 のポートを 1 つだけ参照できます。

    クロスリージョン内部*

    プレミアム ティア INTERNAL_MANAGED IPv4

    * ロードバランサはグローバル リソースを使用します。このロードバランサは、選択した 1 つまたは複数の Google Cloud リージョンにデプロイできます。

ロード バランシング スキームは、ロードバランサの転送ルールバックエンド サービスの属性であり、ロードバランサを内部トラフィックと外部トラフィックのどちらで使用できるかを示します。ロード バランシング スキームの _MANAGED という用語は、ロードバランサが Google Front End(GFE)またはオープンソースの Envoy プロキシのマネージド サービスとして実装されていることを示します。 _MANAGED のロード バランシング スキームでは、GFE または Envoy プロキシにリクエストがルーティングされます。

外部アプリケーション ロードバランサ

外部アプリケーション ロードバランサは、Google Front End(GFE)またはマネージド プロキシを使用して実装されます。グローバル外部アプリケーション ロードバランサと従来のアプリケーション ロードバランサは、グローバルに分散している GFE を使用し、Google のグローバル ネットワークとコントロール プレーンを使用して連携します。GFE はプレミアム ティアでマルチリージョン ロード バランシングを行い、空き容量のある、最も近い正常なバックエンドにトラフィックを転送し、ユーザーにできるだけ近いところで HTTP(S) トラフィックを終端します。グローバル外部アプリケーション ロードバランサとリージョン外部アプリケーション ロードバランサは、オープンソースの Envoy プロキシ ソフトウェアを使用して、高度なトラフィック管理機能を可能にします。

これらのロードバランサは、グローバル、リージョン、従来のいずれかのモードでデプロイできます。

外部アプリケーション ロードバランサは、次の機能をサポートしています。

次の図は、外部アプリケーション ロードバランサのアーキテクチャの例を示しています。

外部アプリケーション ロードバランサのアーキテクチャ。
外部アプリケーション ロードバランサのアーキテクチャ。

概要については、外部アプリケーション ロードバランサのアーキテクチャの概要をご覧ください。

内部アプリケーション ロードバランサ

内部アプリケーション ロードバランサは、Envoy プロキシベースのリージョン レイヤ 7 ロードバランサであり、内部 IP アドレスの背後で HTTP アプリケーション トラフィックを実行し、スケーリングできます。内部アプリケーション ロードバランサは 1 つのリージョンのバックエンドをサポートしますが、任意の Google Cloud リージョンのクライアントがグローバルにアクセスできるように構成できます。

ロードバランサは、Google Cloud、オンプレミス、その他のクラウド環境でホストされているバックエンドにトラフィックを分散します。内部アプリケーション ロードバランサは、次の機能もサポートしています。

  • 局所性ポリシー。バックエンド インスタンス グループまたはネットワーク エンドポイント グループ内で、メンバー インスタンスまたはエンドポイントにリクエストを分散する方法を構成できます。詳細については、トラフィック管理をご覧ください。
  • グローバル アクセス。グローバル アクセスを有効にすると、どのリージョンのクライアントでもロードバランサにアクセスできます。詳しくは、グローバル アクセスを有効にするをご覧ください。
  • 接続ネットワークからのアクセス。 クライアントが Google Cloud Virtual Private Cloud(VPC)ネットワークを越えてネットワークからロードバランサにアクセスできるようにします。他のネットワークは、VPC ネットワーク ピアリング、Cloud VPN、Cloud Interconnect のいずれかを使用して、ロードバランサの VPC ネットワークに接続されている必要があります。詳しくは、接続ネットワークにアクセスするをご覧ください。
  • Ingress(完全にオーケストレート)による GKE との互換性。詳細については、内部アプリケーション ロードバランサの Ingress を構成するをご覧ください。
  • リージョン内部アプリケーション ロードバランサは、プレビュー版App Hub でサポートされています。
内部アプリケーション ロードバランサのアーキテクチャ。
内部アプリケーション ロードバランサ アーキテクチャ。

概要については、内部アプリケーション ロードバランサのアーキテクチャの概要をご覧ください。

ユースケース

以下のセクションでは、アプリケーション ロードバランサの一般的なユースケースについて説明します。

3 層ウェブサービス

アプリケーション ロードバランサとネットワーク ロードバランサの組み合わせをデプロイして、従来の 3 層ウェブサービスをサポートできます。次の例は、トラフィックの種類に応じて各階層をデプロイする方法を示しています。

  • ウェブ階層。アプリケーションのフロントエンドは、インスタンス グループのバックエンドを持つ外部アプリケーション ロードバランサによってサービスされます。インターネットから入ってきたトラフィックは、ロードバランサを経由して、さまざまなリージョンの一連のインスタンス グループ バックエンドにプロキシされます。これらのバックエンドは、一連の内部アプリケーション ロードバランサに HTTP(S) トラフィックを送信します。
  • アプリケーション階層。アプリケーションのミドルウェアは、内部アプリケーション ロードバランサとインスタンス グループのバックエンドを使用してデプロイとスケーリングを行います。ロードバランサは、トラフィックをミドルウェア インスタンス グループに分散します。次に、ミドルウェア インスタンス グループが、トラフィックを内部パススルー ネットワーク ロードバランサに送信します。
  • データベース階層。ネットワーク ロードバランサは、データベース層のフロントエンドとして機能します。さまざまなリージョンのデータ ストレージ バックエンドにトラフィックを分散します。
3 層ウェブ アプリケーションにおけるレイヤ 7 ベースのルーティング。
3 層ウェブ アプリケーションでのレイヤ 7 ベースのルーティング。

リージョン内部アプリケーション ロードバランサのグローバル アクセス

リージョン内部アプリケーション ロードバランサでグローバル アクセスを有効にすると、ウェブ層クライアント VM を別のリージョンに配置できます。

この多層アプリケーションの例では、次の処理を行います。

  • グローバルに利用可能な、インターネットに接続したウェブ層が、外部のアプリケーション ロードバランサを使用してトラフィックをロード バランシングする。
  • us-east1 リージョンの内部バックエンド ロード バランシングされたデータベース層に、グローバル ウェブ層がアクセスする。
  • europe-west1 リージョンのウェブ層の一部であるクライアント VM が、us-east1 にある内部ロードバランスされたデータベース層にアクセスする。
外部アプリケーション ロードバランサ、グローバル アクセス、内部アプリケーション ロードバランサを備えた 3 層ウェブアプリ。
外部アプリケーション ロードバランサ、グローバル アクセス、内部アプリケーション ロードバランサを備えた 3 層ウェブアプリ(クリックして拡大)。

地域の適用法令遵守が必要なワークロード

規制対象またはコンプライアンス要件のある一部のワークロードでは、ネットワーク構成とトラフィックの終端を特定のリージョンに配置する必要があります。これらのワークロードで必要な地域の適用法令遵守を行うには、通常、リージョン外部アプリケーション ロードバランサが適切な選択肢になります。

高度なトラフィック管理

アプリケーション ロードバランサは、高度なトラフィック管理機能をサポートしており、トラフィックの処理方法をきめ細かく制御できます。たとえば、次のような機能があります。

  • アプリケーション コードを変更することなく、トラフィックの管理方法を更新できます。
  • ホスト、パス、ヘッダー、その他のリクエスト パラメータなどの HTTP(S) パラメータに基づいて、トラフィックをインテリジェントに転送できます。たとえば、静的動画コンテンツの処理に Cloud Storage バケットを使用し、他のすべてのリクエストの処理にインスタンス グループまたは NEG を使用できます。
  • 重み付けベースのトラフィック分割を使用すると、アプリケーションの新しいバージョンをデプロイする際のリスクを軽減できます。たとえば、トラフィックの 95% をサービスの前のバージョンに送信し、5% を新しいバージョンに送信できます。新しいバージョンが期待どおりに動作していることを確認したら、すべてのトラフィックが新しいバージョンに到達するまで、この割合を段階的に変更することができます。トラフィック分割は通常、新しいバージョンのデプロイ、A/B テスト、サービス移行、レガシー サービスのモダナイゼーションなどのプロセスに使用されます。

以下は、内部アプリケーション ロードバランサを使用して実装されたパスベースのルーティングの例です。各パスは異なるバックエンドによって処理されます。

内部アプリケーション ロードバランサを使用したパスベースのルーティング。
内部アプリケーション ロードバランサを使用したパスベースのルーティング。

詳しくは次の記事をご覧ください。

Service Extension による機能拡張

Service Extensions と統合すると、サポートされているアプリケーション ロードバランサのロード バランシング パスにカスタム ロジックを挿入できます。

詳細については、Service Extensions の概要をご覧ください。

レガシー サービスの Google Cloud への移行

既存のサービスを Google Cloud に移行することで、オンプレミスの容量を解放し、オンプレミス インフラストラクチャを保守する費用と負担を減らすことができます。現在のオンプレミス サービスと対応する Google Cloud サービス エンドポイントの両方にトラフィックを転送できるように、一時的にハイブリッド デプロイメントを設定できます。

次の図は、内部アプリケーション ロードバランサを使用した設定を示しています。内部ロードバランサを使用している場合は、重み付けベースのトラフィック分割を使用して 2 つのサービス間でトラフィックを分割するように Google Cloud ロードバランサを構成できます。トラフィック分割を使用すると、トラフィックの 0% を Google Cloud サービスに送信し、100% をオンプレミス サービスに送信することから始めることが可能です。その後、Google Cloud サービス宛てのトラフィックの割合を徐々に増やしていきます。最終的には、トラフィックの 100% を Google Cloud サービスに送信し、オンプレミス サービスを廃止します。

レガシー サービスを Google Cloud に移行する。
レガシー サービスを Google Cloud に移行する。

GKE アプリケーションのロード バランシング

GKE クラスタ用のアプリケーション ロードバランサをデプロイするには、次の 3 つの方法があります。

  • GKE Gateway Controller。グローバル外部アプリケーション ロードバランサ、従来のアプリケーション ロードバランサ、リージョン内部アプリケーション ロードバランサでのみサポートされます。設定手順については、ゲートウェイのデプロイをご覧ください。
  • GKE Ingress コントローラ。組み込みの GKE Ingress コントローラを使用できます。このコントローラは GKE ユーザーに代わって Google Cloud ロードバランサをデプロイします。これは、スタンドアロンのロード バランシング アーキテクチャと同じですが、ライフサイクルが GKE によって完全に自動化、制御される点で異なります。外部と内部の両方のアプリケーション ロードバランサでサポートされています。設定手順については、以下をご覧ください。
  • スタンドアロン ゾーン NEG スタンドアロン NEG は GKE NEG コントローラを介してデプロイ、管理されますが、すべてのロード バランシング リソース(転送ルール、ヘルスチェックなど)は手動でデプロイされます。これらは、外部と内部の両方のアプリケーション ロードバランサでサポートされています。

Cloud Run、Cloud Run 関数、App Engine アプリケーションのロード バランシング

アプリケーション ロードバランサは、Google Cloud サーバーレス アプリケーションのフロントエンドとして使用できます。これにより、他のサービスと共有されていない専用の IP アドレスからのリクエストを処理するように、サーバーレス アプリケーションを構成できます。

これを設定するには、ロードバランサのバックエンドとしてサーバーレス NEG を使用します。次の図は、サーバーレス アプリケーションとアプリケーション ロードバランサがどのように統合されているのかを示します。

グローバル外部

この図は、サーバーレス NEG がグローバル外部アプリケーション ロードバランサ アーキテクチャにどのように適合するかを示しています。

サーバーレス アプリ用のグローバル外部アプリケーション ロードバランサ アーキテクチャ。
サーバーレス アプリ用のグローバル外部アプリケーション ロードバランサのアーキテクチャ。

リージョン外部

次の図は、サーバーレス NEG がリージョン外部アプリケーション ロードバランサ アーキテクチャにどのように適合するかを示しています。このロードバランサは、Cloud Run バックエンドのみをサポートしています。

サーバーレス アプリ用のリージョン外部アプリケーション ロードバランサのアーキテクチャ。
サーバーレス アプリ用のリージョン外部アプリケーション ロードバランサのアーキテクチャ。

リージョン内部

この図は、サーバーレス NEG がリージョン内部アプリケーション ロードバランサ モデルにどのように適合するかを示しています。このロードバランサは、Cloud Run バックエンドのみをサポートしています。

サーバーレス アプリ用のリージョン内部アプリケーション ロードバランサのアーキテクチャ。
サーバーレス アプリ用のリージョン内部アプリケーション ロードバランサのアーキテクチャ

クロスリージョン内部

この図は、サーバーレス NEG がクロスリージョン内部アプリケーション ロードバランサ モデルにどのように適合するかを示しています。このロードバランサは、Cloud Run バックエンドのみをサポートしています。

サーバーレス アプリ用のクロスリージョン内部アプリケーション ロードバランサのアーキテクチャ。
サーバーレス アプリ用のクロスリージョン内部アプリケーション ロードバランサのアーキテクチャ(クリックして拡大)

関連ドキュメント:

Google Cloud の外部にあるバックエンドへのロード バランシング

アプリケーション ロードバランサは、Google Cloud の外部に拡張されたエンドポイント(オンプレミスのデータセンターや他のクラウド環境など)へのトラフィックのロード バランシングをサポートします。通常、外部バックエンドには次のいずれかの方法でアクセスできます。

  • 公共のインターネット経由。これらのエンドポイントでは、インターネット NEG をロードバランサのバックエンドとして使用します。インターネット NEG は、外部バックエンド上の単一の FQDN:Port または IP:Port エンドポイントを参照するように構成されています。 インターネット NEG はグローバルまたはリージョンです。

    次の図は、グローバル インターネット NEG を使用して、公共のインターネットを介してアクセス可能な外部バックエンドに接続する方法を示しています。

    外部バックエンドを使用するグローバル外部アプリケーション ロードバランサ。
    外部バックエンドを持つグローバル外部アプリケーション ロードバランサ。

    詳細については、インターネット NEG の概要をご覧ください。

  • ハイブリッド接続(Cloud Interconnect または Cloud VPN)を使用してアクセス可能。これらのエンドポイントでは、ハイブリッド NEG をロードバランサのバックエンドとして使用します。ハイブリッド NEG は、外部バックエンドの IP:Port エンドポイントを参照するように構成されています。

    次の図は、Cloud Interconnect または Cloud VPN を使用してアクセス可能な外部バックエンドに接続する方法を示しています。

    外部

    グローバル外部アプリケーション ロードバランサとのハイブリッド接続。
    グローバル外部アプリケーション ロードバランサとのハイブリッド接続。

    内部

    内部アプリケーション ロードバランサとのハイブリッド接続。
    内部アプリケーション ロードバランサとのハイブリッド接続。

    詳細については、ハイブリッド NEG の概要をご覧ください。

Private Service Connect との統合

Private Service Connect を使用すると、異なるグループ、チーム、プロジェクト、組織に属する VPC ネットワーク全体でサービスをプライベートに利用できます。Private Service Connect を使用すると、Google API とサービス、または別の VPC ネットワーク内のマネージド サービスにアクセスできます。

グローバル外部アプリケーション ロードバランサを使用すると、Private Service Connect を使用して公開されているサービスにアクセスできます。詳細については、Private Service Connect バックエンドについてをご覧ください。

内部アプリケーション ロードバランサを使用して、サポートされているリージョンの Google API とサービスにリクエストを送信できます。詳細については、バックエンド経由で Google API にアクセスするをご覧ください。

高可用性とクロスリージョン フェイルオーバー

クロスリージョン フェイルオーバーは、グローバル外部アプリケーション ロードバランサ、従来のアプリケーション ロードバランサ、クロスリージョン内部アプリケーション ロードバランサでのみ使用できます。これらのロードバランサを使用すると、複数のリージョンにバックエンドがあるグローバル バックエンド サービスを作成するときに、サービスの可用性を向上させることができます。特定のリージョンのバックエンドが停止した場合、トラフィックは別のリージョンに正常にフェイルオーバーされます。

フェイルオーバーの仕組みの詳細については、次のトピックをご覧ください。