Cloud Load Balancing の概要

ロードバランサは、ユーザーのトラフィックをアプリケーションの複数のインスタンスに分散します。負荷を分散することで、アプリケーションにパフォーマンスの問題が起こるリスクを低減します。Google の Cloud Load Balancing は、Google 独自のプロダクトと同じテクノロジーである Maglev、Andromeda、Google Front End、Envoy などの信頼性の高いテクノロジーで構築されています。

Cloud Load Balancing は、アプリケーションおよびネットワーク ロードバランサの最も包括的なポートフォリオを提供します。Google のグローバル プロキシ ロードバランサを使用すると、単一のエニーキャスト IP アドレスを使用して、世界中の 80 を超えるロケーションにある Google Front End フリートを使用し、複数のリージョンのバックエンド間で毎秒数百万のリクエストを処理できます。Google のリージョン プロキシ ロードバランサを使用して強固な管轄区域制御を実装すると、TLS / SSL オフロードを懸念することなく、バックエンドとプロキシを任意のリージョンに配置できます。パススルー ロードバランサを使用すると、高性能なダイレクト サーバー リターンを使用して、複数のプロトコルをバックエンドにすばやくルーティングできます。

Cloud Load Balancing の概要。
Cloud Load Balancing の概要(クリックして拡大)

Cloud Load Balancing には、次のロード バランシング機能があります。

  • 単一のエニーキャスト IP アドレス。Cloud Load Balancing では、単一のエニーキャスト IP アドレスが、世界中のリージョンに分散されたすべてのバックエンド インスタンスのフロントエンドとして機能します。Cloud Load Balancing はリージョンにまたがって負荷を分散します(自動マルチリージョン フェイルオーバーなど)。これにより、プライマリ バックエンドが異常な状態になった場合にトラフィックがフェイルオーバー バックエンドに移動します。Cloud Load Balancing は、ユーザー、トラフィック、ネットワーク、バックエンドの健全性、その他の関連条件の変化に瞬時に対応します。

  • ソフトウェアで定義されたロード バランシング。Cloud Load Balancing は、ソフトウェアで定義された完全分散型のマネージド サービスで、あらゆるトラフィックに対応しています。これはインスタンス ベースまたはデバイスベースのソリューションではないため、物理的なロード バランシング インフラストラクチャの制約を受けることも、インスタンス ベースのロードバランサに固有の高可用性、スケール、および管理の課題に直面することもありません。

  • シームレスな自動スケーリング。Cloud Load Balancing は、ユーザーやトラフィックの増加に応じてスケールできます。トラフィックの予期せぬ急増が発生した場合も、世界中の各リージョンにトラフィックを転送して容易に対応できます。この自動スケーリングにプレウォーミングは必要なく、トラフィックがゼロの状態からフル稼働の状態までスケールするのに、わずか数秒しかかかりません。

  • レイヤ 4 とレイヤ 7 のロード バランシング。TCP、UDP、ESP、GRE、ICMP、ICMPv6 など、ネットワークとトランスポート層プロトコルのデータに基づいてトラフィックを誘導するレイヤ 4 ベースのロード バランシングを使用します。HTTP ヘッダーやユニフォーム リソース識別子などの属性に基づいてコンテンツ ベースのリクエスト ルーティングの決定を追加するレイヤ 7 ベースのロード バランシングを使用します。

  • 外部ロード バランシングと内部ロード バランシング。ユーザーがインターネットからアプリケーションにアクセスする際は、外部ロード バランシングを使用できます。クライアントが Google Cloud 内にある場合は、内部ロード バランシングを使用できます。

  • グローバル ロード バランシングとリージョン ロード バランシング。ロード バランシングされたリソースを単一または複数のリージョンに分散して、ユーザーの近くで接続を終端し、高可用性の要件を満たすことができます。

  • 高度な機能のサポート。Cloud Load Balancing では、IPv6 グローバル ロード バランシング、ソース IP ベースのトラフィック ステアリング重み付きロード バランシング、WebSocket、ユーザー定義のリクエスト ヘッダー、プライベート仮想 IP アドレス(VIP)のプロトコル転送などの機能がサポートされています。

    また、次の統合も組み込まれています。

    • キャッシュに保存されたコンテンツ配信用の Cloud CDN との統合。Cloud CDN は、グローバル外部アプリケーション ロードバランサと従来のアプリケーション ロードバランサでサポートされています。
    • Google Cloud Armor との統合。インフラストラクチャを分散型サービス拒否攻撃(DDoS)などの標的型攻撃から保護します。グローバル外部アプリケーション ロードバランサ、従来のアプリケーション ロードバランサ、外部プロキシ ネットワーク ロードバランサ、外部パススルー ネットワーク ロードバランサで、常時有効な DDoS 対策を利用できます。また、Google Cloud Armor は、外部パススルー ネットワーク ロードバランサでのみ高度なネットワーク DDoS 対策をサポートします。詳細については、高度なネットワーク DDoS 対策を構成するをご覧ください。

ロードバランサの種類

Cloud Load Balancing には、アプリケーション ロードバランサとネットワーク ロードバランサの 2 種類のロードバランサがあります。アプリケーション ロードバランサは、HTTP(S) トラフィックを使用するアプリケーション用のレイヤ 7 ロードバランサが必要な場合に選択します。ネットワーク ロードバランサは、TLS ロードバランサ(プロキシ ロードバランサ)を使用したレイヤ 4 ロードバランサが必要な場合、または UDP、ESP、ICMP などの IP プロトコルのサポート(パススルー ロードバランサを使用)が必要な場合に選択します。

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

アプリケーション ロードバランサは、プロキシベースのレイヤ 7 ロードバランサであり、単一の IP アドレスの背後でサービスを実行し、スケーリングできます。アプリケーション ロードバランサは、Compute Engine、Google Kubernetes Engine(GKE)、Cloud Run などのさまざまな Google Cloud プラットフォームでホストされているバックエンドと Google Cloud 外部の外部バックエンドに HTTP および HTTPS トラフィックを分散します。

アプリケーション ロードバランサは、アプリケーションがインターネットに接続しているか内部かに応じて、外部または内部にデプロイできます。

  • 外部アプリケーション ロードバランサは、Google Front End(GFE)または Envoy プロキシのいずれかにマネージド サービスとして実装されます。クライアントはインターネット上のどこからでもこれらのロードバランサに接続できます。次の点にご注意ください。
    • これらのロードバランサはグローバルまたはリージョンです。
    • グローバル外部アプリケーション ロードバランサの場合、プレミアム ティアのみがサポートされます。
    • リージョン外部アプリケーション ロードバランサの場合、スタンダード ティアのみがサポートされます。
    • アプリケーション ロードバランサは、オープンソースの Envoy プロキシを使用して高度なトラフィック管理機能を有効にします。
  • 内部アプリケーション ロードバランサは、Andromeda ネットワークの仮想化スタックとオープンソースの Envoy プロキシ上に構築されています。このロードバランサは、レイヤ 7 アプリケーション データの内部プロキシベースのロード バランシングを提供します。トラフィックのルーティング方法は、URL マップを使用して指定します。ロードバランサは、同じ VPC ネットワーク内のクライアントまたは VPC ネットワークに接続されているクライアントのみがアクセスできる内部 IP アドレスを使用します。次の点にご注意ください。
    • これらのロードバランサはリージョンまたはクロスリージョンです。
    • リージョン内部アプリケーション ロードバランサは、リージョン バックエンドのみをサポートします。
    • クロスリージョン内部アプリケーション ロードバランサ(プレビュー)は、グローバル バックエンドをサポートし、常にグローバルにアクセスできます。任意の Google Cloud リージョンのクライアントがロードバランサにトラフィックを送信できます。

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

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

ネットワーク ロードバランサ

ネットワーク ロードバランサは、TCP、UDP、その他の IP プロトコル トラフィックを処理できるレイヤ 4 ロードバランサです。これらは、プロキシ ロードバランサまたはパススルー ロードバランサとして使用できます。アプリケーションのニーズと処理する必要があるトラフィックの種類に応じて、ロードバランサを選択できます。オンプレミスおよびその他のクラウド環境で高度なトラフィック制御とバックエンドをサポートするリバース プロキシ ロードバランサを構成する場合は、プロキシ ネットワーク ロードバランサを選択します。クライアント パケットの送信元 IP アドレスを保持する場合、レスポンスで直接的なサーバー リターンを優先する場合、または TCP、UDP、ESP、GRE、ICMP、ICMPv6 などのさまざまな IP プロトコルを処理したい場合は、パススルー ネットワーク ロードバランサを選択します。

プロキシ ネットワーク ロードバランサ

プロキシ ネットワーク ロードバランサは、TCP トラフィックを Google Cloud VPC ネットワーク内の仮想マシン(VM)インスタンスに分散するレイヤ 4 リバース プロキシ ロードバランサです。トラフィックはロード バランシング レイヤで終端し、TCP を使用して最も近い利用可能なバックエンドに転送されます。これらのロードバランサは、グローバルに分散している GFE に実装されます。

これらのロードバランサは、アプリケーションがインターネット接続か内部接続かに応じて、次の 2 つのモードでデプロイされます。

  • 外部プロキシ ネットワーク ロードバランサは、インターネットからのトラフィックを Google Cloud VPC ネットワーク、オンプレミス、またはその他のクラウド環境のバックエンドに分散するレイヤ 4 ロードバランサです。これらのロードバランサは、グローバルまたはリージョンのいずれかのモードでデプロイできます。

    • リージョン外部プロキシ ネットワーク ロードバランサの場合、スタンダード ティアのみがサポートされます。
    • グローバル外部プロキシ ネットワーク ロードバランサの場合、ロードバランサはプレミアム ティアのグローバル ロードバランサですが、スタンダード ティアでは実質的にリージョン ロードバランサとなるように構成できます。
  • 内部プロキシ ネットワーク ロードバランサは、同じ VPC ネットワーク内のクライアント、または VPC ネットワークに接続されているクライアントのみがアクセスできる内部 IP の背後で TCP サービス トラフィックを実行し、スケーリングできる Envoy プロキシベースのリージョン レイヤ 4 ロードバランサです。

次の図は、プロキシ ネットワーク ロードバランサ アーキテクチャの例を示しています。

プロキシ ネットワーク ロードバランサのアーキテクチャ。
プロキシ ネットワーク ロードバランサのアーキテクチャ。

パススルー ネットワーク ロードバランサ

パススルー ネットワーク ロードバランサは、レイヤ 4 のリージョン パススルー ロードバランサです。これらのロードバランサは、ロードバランサと同じリージョンのバックエンド間でトラフィックを分散します。これらは、Andromeda 仮想ネットワークと Google Maglev を使用して実装されます。

名前が示すように、これらのロードバランサはプロキシではありません。ロード バランシングされたパケットは、パケットの送信元 IP アドレス、宛先 IP アドレス、プロトコル(プロトコルがポートベースの場合は、送信元ポートと宛先ポートは変更されていません)を持つバックエンド VM によって受信されます。ロード バランシングされた接続はバックエンドで終端されます。バックエンド VM からのレスポンスは、ロードバランサを経由せず、クライアントに直接送信されます。これを業界用語で Direct Server Return(DSR)といいます。

これらのロードバランサは、インターネット接続であるか内部接続であるかに応じて、次の 2 つのモードでデプロイされます。

  • 外部パススルー ネットワーク ロードバランサは Maglev 上に構築されています。これらのロードバランサの IP アドレスがプレミアム ティアとスタンダード ティアのどちらであるかに関係なく、クライアントはインターネット上のどこからでもロードバランサに接続できます。また、ロードバランサは、外部 IP アドレスを持つ Google Cloud VM からのトラフィック、または Cloud NAT やインスタンス ベースの NAT を介してインターネットにアクセスできる Google Cloud VM からのトラフィックを受信することもできます。
  • 内部パススルー ネットワーク ロードバランサは、Andromeda ネットワークの仮想化スタック上に構築されます。内部パススルー ネットワーク ロードバランサを使用すると、同じ VPC ネットワークのシステムまたは VPC ネットワークに接続しているシステムのみがアクセスできる内部ロード バランシング IP アドレスの背後の TCP / UDP トラフィックをロードバランスできます。このロードバランサは、プレミアム ティアでのみ構成できます。

次の図は、パススルー ネットワーク ロードバランサのアーキテクチャの例を示しています。

パススルー ネットワーク ロードバランサのアーキテクチャ。
パススルー ネットワーク ロードバランサのアーキテクチャ。

ロードバランサを選択する

使用する Cloud Load Balancing プロダクトを決定するには、まず、ロードバランサが処理するトラフィック タイプを決定する必要があります。原則として、HTTP(S) トラフィックを使用するアプリケーションに柔軟な機能セットが必要な場合は、アプリケーション ロードバランサを選択します。また、大規模な TLS オフロードや UDP のサポートが必要な場合、あるいはクライアント IP アドレスをアプリケーションに公開する必要がある場合は、ネットワーク ロードバランサを選択します。

アプリケーションが外部(インターネット接続)か内部か、バックエンドのグローバル デプロイかリージョン デプロイか、などのアプリケーションの要件に応じて、選択肢をさらに絞り込むことができます。

次の図は、Cloud Load Balancing で利用可能なすべてのデプロイモードを示しています。

ロードバランサの選択。
ロードバランサの選択(クリックして拡大)

1 外部アプリケーション ロードバランサは、従来モードでデプロイすることもできます。

2 デフォルトでは、パススルー ネットワーク ロードバランサはクライアントの送信元 IP アドレスを保持します。また、外部パススルー ネットワーク ロードバランサは、TCP、UDP、ESP、GRE、ICMP、ICMPv6 の IP プロトコルを使用するトラフィックを処理できます。

Google Cloud ロードバランサの概要

次の表は、各ロードバランサに固有の情報を示しています。

ロードバランサ デプロイモード トラフィックの種類 ネットワーク サービス ティアロード バランシング スキーム
アプリケーション ロードバランサ グローバル外部 HTTP または HTTPS プレミアム EXTERNAL_MANAGED
リージョン外部 HTTP または HTTPS スタンダード EXTERNAL_MANAGED
従来 HTTP または HTTPS

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

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

EXTERNAL

リージョン内部

HTTP または HTTPS プレミアム INTERNAL_MANAGED

クロスリージョン内部

HTTP または HTTPS プレミアム INTERNAL_MANAGED
プロキシ ネットワーク ロードバランサ グローバル外部 TCP とオプションの SSL オフロード

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

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

EXTERNAL
リージョン外部 TCP スタンダードのみ EXTERNAL_MANAGED

内部

常にリージョン

TCP、SSL オフロードなし プレミアムのみ INTERNAL_MANAGED
パススルー ネットワーク ロードバランサ

外部

常にリージョン

TCP、UDP、ESP、GRE、ICMP、ICMPv6 プレミアム ティアまたはスタンダード ティア EXTERNAL

内部

常にリージョン

TCP、UDP、ICMP、ICMPv6、SCTP、ESP、AH、GRE プレミアムのみ INTERNAL

ロード バランシング スキームは、ロードバランサに関する転送ルールバックエンド サービスの属性であり、ロードバランサを内部トラフィックと外部トラフィックのどちらで使用できるかを示します。

ロード バランシング スキームにおける用語 *_MANAGED は、ロードバランサが Google Front End(GFE)またはオープンソースの Envoy プロキシのいずれかのマネージド サービスとして実装されていることを示します。*_MANAGED のロード バランシング スキームでは、GFE または Envoy プロキシにリクエストがルーティングされます。

インターフェース

次のインターフェースを使用して、ロードバランサを構成、更新できます。

  • Google Cloud CLI: Google Cloud CLI に含まれるコマンドライン ツール。タスクの実行方法については、頻繁に使用されているツールのドキュメントをご覧ください。ツールの完全な概要については、gcloud CLI ガイドをご覧ください。ロード バランシングに関連するコマンドは、gcloud compute コマンド グループにあります。

    --help フラグを使用して、gcloud コマンドの詳細なヘルプを入手することもできます。

    gcloud compute http-health-checks create --help
    
    
  • Google Cloud コンソール: Google Cloud コンソールを使用してロード バランシング タスクを実行できます。

  • REST API: ロード バランシング タスクはすべて、Cloud Load Balancing API を使用して実行できます。使用できるリソースとメソッドについては API リファレンス ドキュメントで説明されています。

  • Terraform: Terraform などのオープンソースの Infrastructure-as-Code ツールを使用して、Google Cloud Load Balancing インフラストラクチャをプロビジョニング、更新、削除できます。

次のステップ