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 には、次のロードバランサ機能があります。

  • 単一のエニーキャスト 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)などのさまざまな 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 Cloud VPC ネットワーク内の仮想マシン(VM)インスタンスに分散するレイヤ 4 リバース プロキシ ロードバランサです。トラフィックはロード バランシング レイヤで終端し、TCP を使用して最も近い利用可能なバックエンドに転送されます。これらのロードバランサは、GFE でマネージド サービスとして実装されます。

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

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

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

    • グローバル外部プロキシ ネットワーク ロードバランサは、複数のリージョンのバックエンドをサポートします。
    • リージョン外部プロキシ ネットワーク ロードバランサは、単一リージョンのバックエンドをサポートします。
    • 従来のプロキシ ネットワーク ロードバランサは、プレミアム ティアではグローバルですが、スタンダード ティアでは実質的にリージョンに構成できます。
  • 内部プロキシ ネットワーク ロードバランサは、同じ 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 に関係なく、インターネット上のどこからでも接続できます。また、ロードバランサは、外部 IP アドレスを持つ Google Cloud VM からのトラフィック、または Cloud NAT やインスタンス ベースの NAT を介してインターネットにアクセスできる Google Cloud VM からのトラフィックを受信することもできます。

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

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

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

パススルー ネットワーク ロードバランサのアーキテクチャ。
パススルー ネットワーク ロードバランサのアーキテクチャ(クリックして拡大)

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

使用する 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 ロードバランサの種類の概要

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

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

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

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

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

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

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

EXTERNAL
リージョン内部 TCP、SSL オフロードなし プレミアム ティア INTERNAL_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 インフラストラクチャをプロビジョニング、更新、削除できます。

次のステップ