アプリケーション ロードバランサは、サービスの実行とスケールを可能にするプロキシベースのレイヤ 7 ロードバランサです。アプリケーション ロードバランサは、Compute Engine、Google Kubernetes Engine(GKE)、Cloud Storage、Cloud Run など、さまざまな Google Cloud プラットフォームでホストされているバックエンド、およびインターネット経由で、またはハイブリッド接続を使用して接続された外部バックエンドに HTTP および HTTPS トラフィックを分散します。
アプリケーション ロードバランサは、次のデプロイモードで使用できます。
外部アプリケーション ロードバランサ: インターネット上のクライアントから着信したトラフィックをロードバランスします。アーキテクチャの詳細については、外部アプリケーション ロードバランサのアーキテクチャをご覧ください。
デプロイモード ネットワーク サービス ティア ロード バランシング スキーム† IP アドレス フロントエンド ポート グローバル外部 プレミアム ティア EXTERNAL_MANAGED IPv4
IPv61~65535 のポートを 1 つだけ参照できます。
リージョン外部 プレミアムまたはスタンダード ティア EXTERNAL_MANAGED IPv4 従来 グローバル(プレミアム ティア)
リージョン(スタンダード ティア)
EXTERNAL IPv4
IPv6(プレミアム ティアが必要)内部アプリケーション ロードバランサ: VPC ネットワーク内または VPC ネットワークに接続されているネットワーク内のトラフィックをロードバランスします。アーキテクチャの詳細については、内部アプリケーション ロードバランサのアーキテクチャをご覧ください。
デプロイモード ネットワーク サービス ティア ロード バランシング スキーム† IP アドレス フロントエンド ポート リージョン内部 プレミアム ティア INTERNAL_MANAGED IPv4 1~65535 のポートを 1 つだけ参照できます。
クロスリージョン内部*
プレミアム ティア INTERNAL_MANAGED IPv4
† ロード バランシング スキームは、ロードバランサに関する転送ルールとバックエンド サービスの属性であり、ロードバランサを内部トラフィックと外部トラフィックのどちらで使用できるかを示します。ロード バランシング スキームにおける用語 *_MANAGED
は、ロードバランサが Google Front End(GFE)またはオープンソースの Envoy プロキシのいずれかのマネージド サービスとして実装されていることを示します。*_MANAGED
のロード バランシング スキームでは、GFE または Envoy プロキシにリクエストがルーティングされます。
* ロードバランサはグローバル リソースを使用します。このロードバランサは、選択した 1 つまたは複数の Google Cloud リージョンにデプロイできます。
外部アプリケーション ロードバランサ
外部アプリケーション ロードバランサは、Google Front End(GFE)またはマネージド プロキシを使用して実装されます。グローバル外部アプリケーション ロードバランサと従来のアプリケーション ロードバランサは、グローバルに分散している GFE を使用し、Google のグローバル ネットワークとコントロール プレーンを使用して連携します。GFE はプレミアム ティアでマルチリージョン ロード バランシングを行い、空き容量のある、最も近い正常なバックエンドにトラフィックを転送し、ユーザーにできるだけ近いところで HTTP(S) トラフィックを終端します。グローバル外部アプリケーション ロードバランサとリージョン外部アプリケーション ロードバランサは、オープンソースの Envoy プロキシ ソフトウェアを使用して、高度なトラフィック管理機能を可能にします。
これらのロードバランサは、グローバル、リージョン、従来のいずれかのモードでデプロイできます。
外部アプリケーション ロードバランサは、次の機能をサポートしています。
- トラフィックのミラーリング、重み付けに基づくトラフィック分割、リクエスト / レスポンス ベースのヘッダー変換など、高度なトラフィック管理。詳細については、トラフィック管理の概要をご覧ください。
- Compute Engine、Google Kubernetes Engine(GKE)、Cloud Run など、さまざまな Google Cloud プラットフォームでホストされているバックエンドへのトラフィックのロード バランシング。バックエンドのサポートは、ロードバランサのデプロイモードによって異なります。詳細については、外部アプリケーション ロードバランサの概要をご覧ください。
- Cloud CDN によるキャッシュに保存されたレスポンス。
- Google Cloud Armor を使用した DDoS や他のウェブ攻撃からの保護。
- Ingress または Gateway(完全なオーケストレーション)またはスタンドアロン NEG を使用した GKE へのロード バランシング。
- リージョン外部アプリケーション ロードバランサは、プレビュー版の App Hub でサポートされています。
次の図は、外部アプリケーション ロードバランサのアーキテクチャの例を示しています。
概要については、外部アプリケーション ロードバランサのアーキテクチャの概要をご覧ください。
内部アプリケーション ロードバランサ
内部アプリケーション ロードバランサは、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) トラフィックを送信します。
- アプリケーション階層。アプリケーションのミドルウェアは、内部アプリケーション ロードバランサとインスタンス グループのバックエンドを使用してデプロイとスケーリングを行います。ロードバランサは、トラフィックをミドルウェア インスタンス グループに分散します。次に、ミドルウェア インスタンス グループが、トラフィックを内部パススルー ネットワーク ロードバランサに送信します。
- データベース階層。ネットワーク ロードバランサは、データベース層のフロントエンドとして機能します。さまざまなリージョンのデータ ストレージ バックエンドにトラフィックを分散します。
リージョン内部アプリケーション ロードバランサのグローバル アクセス
リージョン内部アプリケーション ロードバランサでグローバル アクセスを有効にすると、ウェブ層クライアント VM を別のリージョンに配置できます。
この多層アプリケーションの例では、次の処理を行います。
- グローバルに利用可能な、インターネットに接続したウェブ層が、外部のアプリケーション ロードバランサを使用してトラフィックをロード バランシングする。
us-east1
リージョンの内部バックエンド ロード バランシングされたデータベース層に、グローバル ウェブ層がアクセスする。europe-west1
リージョンのウェブ層の一部であるクライアント VM が、us-east1
にある内部ロードバランスされたデータベース層にアクセスする。
地域の適用法令遵守が必要なワークロード
規制対象またはコンプライアンス要件のある一部のワークロードでは、ネットワーク構成とトラフィックの終端を特定のリージョンに配置する必要があります。これらのワークロードで必要な地域の適用法令遵守を行うには、通常、リージョン外部アプリケーション ロードバランサが適切な選択肢になります。
高度なトラフィック管理
アプリケーション ロードバランサは、高度なトラフィック管理機能をサポートしており、トラフィックの処理方法をきめ細かく制御できます。たとえば、次のような機能があります。
- アプリケーション コードを変更することなく、トラフィックの管理方法を更新できます。
- ホスト、パス、ヘッダー、その他のリクエスト パラメータなどの HTTP(S) パラメータに基づいて、トラフィックをインテリジェントに転送できます。たとえば、静的動画コンテンツの処理に Cloud Storage バケットを使用し、他のすべてのリクエストの処理にインスタンス グループまたは NEG を使用できます。
- 重み付けベースのトラフィック分割を使用すると、アプリケーションの新しいバージョンをデプロイする際のリスクを軽減できます。たとえば、トラフィックの 95% をサービスの前のバージョンに送信し、5% を新しいバージョンに送信できます。新しいバージョンが期待どおりに動作していることを確認したら、すべてのトラフィックが新しいバージョンに到達するまで、この割合を段階的に変更することができます。トラフィック分割は通常、新しいバージョンのデプロイ、A/B テスト、サービス移行、レガシー サービスのモダナイゼーションなどのプロセスに使用されます。
以下に、内部アプリケーション ロードバランサを使用して実装されたパスベースのルーティングの例を示します。各パスは異なるバックエンドによって処理されます。
詳しくは次の記事をご覧ください。
Service Extension による機能拡張
Service Extensions コールアウトを使用すると、ロード バランシング データパスにカスタム ロジックを挿入できます。これらの拡張機能を使用すると、データの処理中にユーザー管理のアプリケーションやサービスに対して gRPC 呼び出しを行うように、サポートされているアプリケーション ロードバランサに指示できます。
詳細については、Service Extensions の概要をご覧ください。
レガシー サービスの Google Cloud への移行
既存のサービスを Google Cloud に移行することで、オンプレミスの容量を解放し、オンプレミス インフラストラクチャを保守する費用と負担を減らすことができます。現在のオンプレミス サービスと対応する Google Cloud サービス エンドポイントの両方にトラフィックを転送できるように、一時的にハイブリッド デプロイメントを設定できます。
次の図は、内部アプリケーション ロードバランサを使用した設定を示しています。内部ロードバランサを使用している場合は、重み付けベースのトラフィック分割を使用して 2 つのサービス間でトラフィックを分割するように Google Cloud ロードバランサを構成できます。トラフィック分割を使用すると、トラフィックの 0% を Google Cloud サービスに送信し、100% をオンプレミス サービスに送信することから始めることが可能です。その後、Google Cloud サービス宛てのトラフィックの割合を徐々に増やしていきます。最終的には、トラフィックの 100% を 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 バックエンドのみをサポートしています。
関連ドキュメント:
- サーバーレス NEG の概要
- Cloud Run、Cloud Run 関数、または App Engine バックエンドを使用してグローバル外部アプリケーション ロードバランサを設定する
- Cloud Run バックエンドを使用してリージョン外部アプリケーション ロードバランサを設定する
- Cloud Run バックエンドを使用してリージョン内部アプリケーション ロードバランサを設定する
- 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 にアクセスするをご覧ください。
高可用性とクロスリージョン フェイルオーバー
クロスリージョン フェイルオーバーは、グローバル外部アプリケーション ロードバランサ、従来のアプリケーション ロードバランサ、クロスリージョン内部アプリケーション ロードバランサでのみ使用できます。これらのロードバランサを使用すると、複数のリージョンにバックエンドがあるグローバル バックエンド サービスを作成するときに、サービスの可用性を向上させることができます。特定のリージョンのバックエンドが停止した場合、トラフィックは別のリージョンに正常にフェイルオーバーされます。
フェイルオーバーの仕組みの詳細については、次のトピックをご覧ください。