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 オフロードを懸念することなく、バックエンドとプロキシを任意のリージョンに配置できます。パススルー ロードバランサを使用すると、高性能なダイレクト サーバー リターン(DSR)を使用して、複数のプロトコルをバックエンドにすばやくルーティングできます。

Cloud Load Balancing の概要。
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内にある場合は、内部ロードバランサを使用できます。詳細については、外部ロード バランシングと内部ロード バランシングをご覧ください。

  • グローバル ロード バランシングとリージョン ロード バランシング。ロードバランサのスコープを定義します。グローバル ロードバランサは複数のリージョンのバックエンドをサポートしますが、リージョン ロードバランサは単一リージョンのバックエンドをサポートします。リージョン ロードバランサの IP アドレスは 1 つのリージョンにありますが、リージョン ロードバランサにはグローバルにアクセスできます。バックエンドを単一または複数のリージョンに分散して、ユーザーの近くで接続を終端し、高可用性の要件を満たすことができます。詳細については、グローバル ロード バランシングとリージョン ロード バランシングをご覧ください。

  • プレミアム ティアとスタンダード ティアのトラフィックのルーティング。 Google Cloud のロード バランシング サービスは、選択したネットワーク ティア(プレミアム ティアまたはスタンダード ティア)に応じて異なる種類があります。前者は後者よりも費用が高くなります。プレミアム ティアは Google の高品質なグローバル バックボーンを活用しますが、スタンダード ティアは公共のインターネットを使用してネットワーク全体でトラフィックをルーティングします。選択するネットワーク ティアは、エンタープライズ ワークロードのコストとパフォーマンスのどちらを優先するかによって異なります。一部のロード バランシング サービスは、プレミアム ティアでのみ使用でき、スタンダード ティアでは使用できません。詳細については、プレミアムとスタンダードの Network Service Tiers をご覧ください。

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

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

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

Google Cloud ロードバランサの種類

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

次の表に、動作する OSI レイヤと外部アクセスと内部アクセスのどちらに使用されるかによって分類された、さまざまなタイプのGoogle Cloud ロードバランサの概要を示します。

lan Cloud Load Balancing 外部
(インターネット トラフィックを受け入れる)
内部
(内部 Google Cloud トラフィックを受け入れる)
アプリケーション ロードバランサ

HTTPS
レイヤ 7 ロード バランシング
  • グローバル外部
  • リージョン外部
  • 以前のバージョン
  • クロスリージョン内部
  • リージョン内部
ネットワーク ロードバランサ

TCP/SSL/その他
レイヤ 4 ロード バランシング
プロキシ ネットワーク ロードバランサ
  • グローバル外部
  • リージョン外部
  • 以前のバージョン
  • クロスリージョン内部
  • リージョン内部
パススルー ネットワーク ロードバランサ
  • リージョン外部
  • リージョン内部

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

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

次の図は、アプリケーションがインターネットに公開されているか内部専用かに応じて、外部または内部にデプロイできるさまざまなタイプのアプリケーション ロードバランサの概要を示しています。

さまざまなタイプのアプリケーション ロードバランサ
さまざまなタイプのアプリケーション ロードバランサ。

外部アプリケーション ロードバランサは、Google Front End(GFE)または Envoy プロキシのいずれかにマネージド サービスとして実装されます。クライアントはインターネット上のどこからでもこれらのロードバランサに接続できます。次の点にご注意ください。

  • これらのロードバランサは、グローバル、リージョン、従来のモードでデプロイできます。
  • グローバル外部アプリケーション ロードバランサは、複数のリージョンにあるバックエンドをサポートします。
  • リージョン外部アプリケーション ロードバランサは、単一リージョン内のバックエンドのみをサポートします。
  • 従来のアプリケーション ロードバランサは、プレミアム ティアではグローバルです。スタンダード ティアでは、単一リージョン内のバックエンドにのみトラフィックを分散できます。
  • アプリケーション ロードバランサは、オープンソースの Envoy プロキシを使用して高度なトラフィック管理機能を有効にします。

内部アプリケーション ロードバランサは、Andromeda ネットワークの仮想化スタックとオープンソースの Envoy プロキシ上に構築されています。このロードバランサは、レイヤ 7 アプリケーション データの内部プロキシベースのロード バランシングを提供します。ロードバランサは、同じ VPC ネットワーク内のクライアントまたは VPC ネットワークに接続されているクライアントのみがアクセスできる内部 IP アドレスを使用します。次の点にご注意ください。

  • これらのロードバランサは、リージョン モードまたはクロスリージョン モードでデプロイできます。
  • リージョン内部アプリケーション ロードバランサは、単一リージョン内のバックエンドのみをサポートします。
  • クロスリージョン内部アプリケーション ロードバランサは、複数のリージョンのバックエンドをサポートし、常にグローバルにアクセスできます。任意のGoogle Cloud リージョンのクライアントがロードバランサにトラフィックを送信できます。

アプリケーション ロードバランサの詳細については、アプリケーション ロードバランサの概要をご覧ください。

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

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

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

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

次の図は、アプリケーションがインターネットに公開されているか内部専用かに応じて、外部または内部にデプロイできるプロキシ ネットワーク ロードバランサの種類の概要を示しています。

プロキシ ネットワーク ロードバランサの種類
プロキシ ネットワーク ロードバランサの種類。

外部プロキシ ネットワーク ロードバランサは、インターネットからのトラフィックを Google Cloud VPC ネットワーク、オンプレミス、またはその他のクラウド環境のバックエンドに分散するレイヤ 4 ロードバランサです。これらのロードバランサは、Google Front End(GFE)または Envoy プロキシのいずれかに構築されています。

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

  • グローバル外部プロキシ ネットワーク ロードバランサは、複数のリージョンのバックエンドをサポートします。
  • リージョン外部プロキシ ネットワーク ロードバランサは、単一リージョンのバックエンドをサポートします。
  • 従来のプロキシ ネットワーク ロードバランサは、プレミアム ティアではグローバルです。スタンダード ティアでは、単一リージョン内のバックエンドにのみトラフィックを分散できます。

内部プロキシ ネットワーク ロードバランサは、同じ VPC ネットワーク内のクライアント、または VPC ネットワークに接続されているクライアントのみがアクセスできる内部 IP の背後で TCP サービス トラフィックを実行し、スケーリングできる Envoy プロキシベースのリージョン レイヤ 4 ロードバランサです。

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

  • リージョン内部プロキシ ネットワーク ロードバランサは、単一リージョン内のバックエンドのみをサポートします。
  • クロスリージョン内部プロキシ ネットワーク ロードバランサは、複数のリージョンのバックエンドをサポートし、常にグローバルにアクセスできます。任意のGoogle Cloud リージョンのクライアントがロードバランサにトラフィックを送信できます。

プロキシ ネットワーク ロードバランサの詳細については、プロキシ ネットワーク ロードバランサの概要をご覧ください。

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

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

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

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

さまざまなタイプのパススルー ネットワーク ロードバランサ
さまざまなタイプのパススルー ネットワーク ロードバランサ。
  • 外部パススルー ネットワーク ロードバランサは Maglev 上に構築されています。これらのロードバランサには、Network Service Tiers に関係なく、インターネット上のどこからでも接続できます。また、ロードバランサは、 Google Cloud 外部 IP アドレスを持つ VM からのトラフィック、または Google Cloud Cloud NAT やインスタンス ベースの NAT を介したインターネット アクセスがある VM からのトラフィックを受信することもできます。

    外部パススルー ネットワーク ロードバランサのバックエンドは、バックエンド サービスまたはターゲット プールを使用してデプロイできます。新しいデプロイでは、バックエンド サービスを使用することをおすすめします。

  • 内部パススルー ネットワーク ロードバランサは、Andromeda ネットワークの仮想化スタック上に構築されます。内部パススルー ネットワーク ロードバランサを使用すると、同じ VPC ネットワークのシステムまたは VPC ネットワークに接続しているシステムのみがアクセスできる内部ロード バランシング IP アドレスの背後の TCP / UDP トラフィックをロードバランスできます。このロードバランサは、プレミアム ティアでのみ構成できます。

パススルー ネットワーク ロードバランサの詳細については、パススルー ネットワーク ロードバランサをご覧ください。

Google Cloud ロードバランサの基盤となるテクノロジー

次の表に、各Google Cloud ロードバランサの基盤となるテクノロジーを示します。

  • Google Front End(GFE)は、Google の拠点(PoP)にあるソフトウェア定義の分散システムであり、他のシステムやコントロール プレーンと連携してグローバル負荷分散を行います。
  • Andromeda は、Google Cloud のソフトウェア定義のネットワーク仮想化スタックです。
  • Maglev は、ネットワーク ロード バランシング用の分散システムです。
  • Envoy は、クラウドネイティブ アプリ用に設計されたオープンソースのエッジおよびサービス プロキシです。
ロードバランサ テクノロジー
グローバル外部アプリケーション ロードバランサ Envoy ベースの Google Front End(GFE)
従来のアプリケーション ロードバランサ GFE
リージョン外部アプリケーション ロードバランサ Envoy
クロスリージョン内部アプリケーション ロードバランサ Envoy
リージョン内部アプリケーション ロードバランサ Envoy
グローバル外部プロキシ ネットワーク ロードバランサ Envoy ベースの GFE
従来のプロキシ ネットワーク ロードバランサ GFE
リージョン外部プロキシ ネットワーク ロードバランサ Envoy
リージョン内部プロキシ ネットワーク ロードバランサ Envoy
クロスリージョン内部プロキシ ネットワーク ロードバランサ Envoy
外部パススルー ネットワーク ロードバランサ Maglev
内部パススルー ネットワーク ロードバランサ Andromeda

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

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

アプリケーションが外部(インターネットに公開)されているか内部専用か、バックエンドをグローバルまたはリージョンのどちらでデプロイする必要があるか、Network Service Tiers がプレミアムかスタンダードかなど、アプリケーションの要件に応じて選択肢をさらに絞り込むことができます。

次の図は、Cloud Load Balancing で利用可能なすべてのデプロイモードを示しています。詳細については、ロードバランサを選択するガイドをご覧ください。

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

1. グローバル外部アプリケーション ロードバランサは、グローバルと従来の 2 つの運用モードをサポートしています。

2. グローバル外部プロキシ ネットワーク ロードバランサは、グローバルと従来の 2 つの運用モードをサポートしています。

3. パススルー ネットワーク ロードバランサは、クライアントの送信元 IP アドレスを保持します。パススルー ネットワーク ロードバランサは、UDP、ESP、ICMP などの追加のプロトコルもサポートしています。

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

次の表に、各ロードバランサが動作するネットワーク サービス ティアと、そのロード バランシング スキームなどの詳細を示します。

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

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

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

外部2
リージョン内部3 HTTP または HTTPS プレミアム ティア INTERNAL_MANAGED
クロスリージョン内部 HTTP または HTTPS プレミアム ティア INTERNAL_MANAGED
プロキシ ネットワーク ロードバランサ グローバル外部 TCP とオプションの SSL オフロード プレミアム ティア EXTERNAL_MANAGED
リージョン外部 TCP プレミアムまたはスタンダード ティア EXTERNAL_MANAGED
従来 TCP とオプションの SSL オフロード

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

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

EXTERNAL
リージョン内部3 TCP、SSL オフロードなし プレミアム ティア INTERNAL_MANAGED
クロスリージョン内部 TCP、SSL オフロードなし プレミアム ティア INTERNAL_MANAGED
パススルー ネットワーク ロードバランサ

外部

常にリージョン

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

内部3

常にリージョン

TCP、UDP、ICMP、ICMPv6、SCTP、ESP、AH、GRE プレミアム ティア INTERNAL

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

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

2 EXTERNAL_MANAGED バックエンド サービスに EXTERNAL 転送ルールを適用できます。ただし、EXTERNAL バックエンド サービスに EXTERNAL_MANAGED 転送ルールを適用することはできません。グローバル外部アプリケーション ロードバランサでのみ利用可能な新機能を活用するには、従来のアプリケーション ロードバランサからグローバル外部アプリケーション ロードバランサにリソースを移行するで説明されている移行プロセスに従って、既存の EXTERNAL リソースを EXTERNAL_MANAGED に移行することをおすすめします。

3 デフォルトでは、リージョン内部ロードバランサは、ロードバランサと同じリージョンにあるクライアントからのトラフィックのみを許可します。ただし、転送ルールでグローバル アクセスを有効にすると、他のリージョンのクライアントからのトラフィックを許可できます。

インターフェース

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

  • 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 CloudLoad Balancing インフラストラクチャをプロビジョニング、更新、削除できます。

次のステップ