Cloud Load Balancing の概要

ロードバランサは、ユーザーのトラフィックをアプリケーションの複数のインスタンスに分散します。負荷分散によりアプリケーションについて、過剰な負荷がかかる、動作速度が低下する、または機能しなくなるリスクを低減します。

負荷分散の簡単な概要(クリックして拡大)
負荷分散の簡単な概要(クリックして拡大)

Cloud Load Balancing について

Cloud Load Balancing を使用すると、1 秒あたり 100 万を超えるクエリに応答できるシステムで、可能な限りユーザーに近い場所からコンテンツを配信できます。

Cloud Load Balancing は、完全分散された、ソフトウェア定義型のマネージド サービスです。ハードウェアベースではないため、物理的な負荷分散インフラストラクチャを管理する必要はありません。

Google Cloud には、次の負荷分散機能があります。

  • フロントエンドとして機能する単一の IP アドレス
  • バックエンドのインテリジェントな自動スケーリング
  • ユーザーがインターネットからアプリケーションにアクセスしたときの外部負荷分散
  • クライアントが Google Cloud 内にある場合の内部負荷分散
  • アプリケーションが 1 つのリージョン内で使用できる場合のリージョン負荷分散
  • 世界各地でアプリケーションを利用できる場合のグローバル負荷分散
  • パススルー負荷分散(ダイレクト サーバー リターン(DSR)またはダイレクト ルーティングもご覧ください)
  • プロキシベースの負荷分散(パススルーの代わりとして)
  • IP アドレス、TCP ポート、UDP ポートなど、ネットワークとトランスポート層プロトコルのデータに基づいてトラフィックを誘導するレイヤ 4 ベースの負荷分散
  • HTTP ヘッダーやユニフォーム リソース識別子などの属性に基づいてコンテンツ ベースのルーティング決定を追加するレイヤ 7 ベースの負荷分散
  • キャッシュに保存されたコンテンツ配信用の Cloud CDN との統合

機能の広範な一覧については、ロードバランサの機能をご覧ください。

Cloud Load Balancing の種類

次の表は、ロードバランサが内部か外部のどちらの IP アドレスを使用するか、ロードバランサがリージョンかグローバルか、サポートされるネットワーク階層やトラフィックの種類はどれかなど、それぞれの Google Cloud ロードバランサの特性をまとめたものです。

内部または外部 リージョンまたはグローバル サポート対象のネットワーク階層 プロキシまたはパススルー トラフィックの種類 ロードバランサの種類
内部 リージョン プレミアム階層のみ パススルー TCP または UDP 内部 TCP / UDP
リージョン プレミアム階層のみ プロキシ HTTP または HTTPS 内部 HTTP(S)
外部 リージョン プレミアム階層またはスタンダード階層 パススルー TCP または UDP TCP / UDP ネットワーク
プレミアム階層ではグローバル

スタンダード階層では実質的にリージョン1
プレミアム階層またはスタンダード階層 プロキシ TCP TCP プロキシ
プレミアム階層またはスタンダード階層 プロキシ SSL SSL プロキシ
プレミアム階層またはスタンダード階層 プロキシ HTTP または HTTPS 外部 HTTP(S)

1実質的にリージョンとは、バックエンド サービスがグローバルであっても、スタンダード階層を選択した場合に、外部転送ルールと外部 IP アドレスはリージョンであり、グローバル バックエンド サービスに接続されているバックエンド インスタンス グループまたはネットワーク エンドポイント グループ(NEG)は、転送ルールおよび IP アドレスと同じリージョンになければならないことを意味します。詳細については、スタンダード階層を HTTP(S) 負荷分散、TCP プロキシ負荷分散、SSL プロキシ負荷分散用に構成するをご覧ください。

グローバル負荷分散とリージョン負荷分散

バックエンドが複数のリージョンに分散しており、ユーザーが同じアプリケーションとコンテンツにアクセスする必要があって、単一のエニーキャスト IP アドレスを使用してアクセスを提供する場合は、グローバル負荷分散を使用します。グローバル負荷分散は、IPv6 終端も提供します。

バックエンドが同一のリージョン内にあり、IPv4 終端のみが必要な場合は、リージョンの負荷分散を使用します

外部負荷分散と内部負荷分散

Google Cloud ロードバランサは、外部ロードバランサと内部ロードバランサに分けられます。

  • 外部ロードバランサは、インターネットからのトラフィックを Google Cloud の Virtual Private Cloud(VPC)ネットワークに配信します。グローバル負荷分散では、Network Service Tiers のうちプレミアム階層を使用する必要があります。リージョン負荷分散では、スタンダード階層を使用できます。

  • 内部ロードバランサは、Google Cloud 内部のインスタンスにトラフィックを分散します。

外部と内部の負荷分散タイプ(クリックして拡大)
外部と内部の負荷分散タイプ(クリックして拡大)

次の図は、外部負荷分散と内部負荷分散をともに一般的な使用例を示しています。図では、サンフランシスコ、アイオワ、シンガポールのユーザーからのトラフィックが外部ロードバランサに転送され、Google Cloud ネットワークのさまざまなリージョンにトラフィックが分散されています。その後、内部ロードバランサが、us-central-1a ゾーンと us-central-1b ゾーン間でトラフィックを分散します。

外部と内部の負荷分散を連携させる方法
外部と内部の負荷分散を連携させる方法

トラフィックの種類

ロードバランサで処理する必要があるトラフィックの種類は、使用するロードバランサを決定するもう 1 つの要素です。

  • HTTP および HTTPS トラフィックには、次の負荷分散を使用します。
    • 外部 HTTP(S) 負荷分散
    • 内部 HTTP(S) 負荷分散
  • TCP トラフィックには、次の負荷分散を使用します。
    • TCP プロキシ負荷分散
    • ネットワーク負荷分散
    • 内部 TCP/UDP 負荷分散
  • UDP トラフィックには、次の負荷分散を使用します。
    • ネットワーク負荷分散
    • 内部 TCP / UDP 負荷分散

バックエンド リージョンとネットワーク

次の表は、異なる VPC ネットワークに存在するバックエンドのサポートをまとめたものです。この表には、マルチ NIC 負荷分散のサポートに関する情報も記載されています。

ロードバランサの種類 バックエンド リージョンとネットワーク マルチ NIC に関する情報
内部 TCP/UDP 負荷分散 すべてのバックエンドは、バックエンド サービスと同じ VPC ネットワークおよび同じリージョンに存在する必要があります。バックエンド サービスも、転送ルールと同じリージョンおよび VPC ネットワークに存在する必要があります。 複数のロードバランサを使用することにより、同じバックエンドの複数の NIC に負荷を分散できます
内部 HTTP(S) 負荷分散 すべてのバックエンドは、バックエンド サービスと同じ VPC ネットワークおよび同じリージョンに存在する必要があります。バックエンド サービスも、転送ルールと同じリージョンおよび VPC ネットワークに存在する必要があります。 バックエンド VM の nic0 は、転送ルールで使用されるのと同じネットワークとリージョンに存在する必要があります。
HTTP(S) 負荷分散、SSL プロキシ負荷分散、TCP プロキシ負荷分散 プレミアム階層の場合: バックエンドは、どのリージョンおよび VPC ネットワークに存在しても構いません。

スタンダード階層の場合: バックエンドは転送ルールと同じリージョンに存在する必要がありますが、どの VPC ネットワークに存在しても構いません。
ロードバランサは、nic0 がどの VPC ネットワークに属する場合でも、最初のネットワーク インターフェース(nic0)に対してのみトラフィックを送信します。

ファイアウォール ルール

次の表は、ロードバランサ アクセスに最低限必要なファイアウォール ルールをまとめたものです。

ロードバランサの種類 最小限必要な上り許可のファイアウォール ルール 概要
外部 HTTP(S) 負荷分散
  • ヘルスチェックの範囲
概要
内部 HTTP(S) 負荷分散
  • ヘルスチェックの範囲
  • プロキシ専用サブネット
概要
内部 TCP/UDP 負荷分散
  • ヘルスチェックの範囲
  • クライアントの内部 IP アドレス
概要
SSL プロキシ負荷分散
  • ヘルスチェックの範囲
概要
TCP プロキシ負荷分散
  • ヘルスチェックの範囲
概要
ネットワーク負荷分散
  • ヘルスチェックの範囲
  • インターネット上のクライアントの外部ソース IP アドレス
    (たとえば、0.0.0.0/0 または特定の範囲のセット)
概要

外部ロードバランサの DDoS 保護

Google Cloud では、ロードバランサのタイプに応じてさまざまな DDos 保護を提供しています。

プロキシベースの外部ロードバランサ

すべての Google Cloud プロキシベースの外部ロードバランサは、Google の本番環境インフラストラクチャの一部である Google フロントエンド(GFE)から自動的に DDoS 保護を継承します。

GFE によって提供される自動 DDoS に加えて、外部 HTTP(S) ロードバランサ用に Google Cloud Armor を構成できます。

パススルー外部ロードバランサ

パススルー外部ロードバランサはネットワーク ロードバランサのみです。これらのロードバランサは、Compute Engine VM の外部 IP アドレスの実装に使用される Google のルーティング インフラストラクチャを使用して実装されます。ネットワーク ロードバランサへの受信トラフィックの場合、Google Cloud は VM あたりの受信パケットを制限します。

詳細については、外部 IP アドレスへの受信帯域幅をご覧ください。

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

このセクションでは、Google Cloud ロードバランサのそれぞれの種類に関する詳細情報を提供します。より深く理解するための概要ドキュメントへのリンクも含まれます。

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

内部 HTTP(S) 負荷分散

内部 HTTP(S)負荷分散は、Andromeda ネットワークの仮想化スタックに構築され、オープンソースの Envoy プロキシに基づくマネージド サービスです。このロードバランサは、レイヤ 7 アプリケーション データのプロキシベースの負荷分散を提供します。トラフィックのルーティング方法は、URL マップを使用して指定します。 ロードバランサは、バックエンドへのフロントエンドとして機能する内部 IP アドレスを使用します。

外部 HTTP(S) 負荷分散

HTTP(S) 負荷分散は GFE に実装されます。GFE はグローバルに分散し、Google のグローバル ネットワークとコントロール プレーンを使用して連携します。プレミアム階層では、GFE は複数リージョン間の負荷分散を提供し、空き容量のある、最も近い正常なバックエンドにトラフィックを転送して、ユーザーにできるだけ近いところで HTTP(S) トラフィックを終端します。

内部 TCP/UDP 負荷分散

内部 TCP / UDP 負荷分散は、Andromeda ネットワークの仮想化スタックに構築されます。内部 TCP / UDP 負荷分散を使用すると、内部仮想マシン(VM)インスタンスのみがアクセスできる内部負荷分散 IP アドレスの背後の TCP / UDP トラフィックを負荷分散できます。内部 TCP / UDP 負荷分散を使用して、内部バックエンド インスタンスのフロントエンドとして機能する内部負荷分散 IP アドレスを構成します。負荷分散サービスには内部 IP アドレスのみを使用します。全体として、設定が単純になります。

内部 TCP / UDP 負荷分散はリージョンのマネージド インスタンス グループをサポートするため、リージョン全体を自動スケーリングでき、ゾーン障害からサービスを保護します。

外部 TCP / UDP ネットワーク負荷分散

ネットワーク負荷分散は、Maglev に構築されます。このロードバランサを使用すると、アドレス、ポート、プロトコルの種類などの受信 IP プロトコル データに基づいて、システムのトラフィックを負荷分散できます。これは、非プロキシのリージョン負荷分散システムです。UDP トラフィック、および SSL プロキシのロードバランサと TCP プロキシのロードバランサでサポートされていないポートの TCP および SSL トラフィックには、ネットワーク負荷分散を使用します。ネットワーク ロードバランサは、クライアントからの接続を中継しないパススルー ロードバランサです。

SSL プロキシ負荷分散

SSL プロキシ負荷分散は、グローバルに分散している GFE に実装されています。Network Service Tiers のプレミアム階層を選択した場合、SSL プロキシ ロードバランサはグローバルになります。プレミアム階層では、バックエンドを複数のリージョンにデプロイでき、ロードバランサは自動的にユーザーのトラフィックを空き容量のある、最も近いリージョンに転送します。スタンダード階層を選択した場合、SSL プロキシ ロードバランサは単一リージョン内のバックエンド間でのみトラフィックを転送できます。

TCP プロキシ負荷分散

TCP プロキシ負荷分散は、グローバルに分散している GFE に実装されています。Network Service Tiers のプレミアム階層を選択した場合、TCP プロキシ ロードバランサはグローバルになります。プレミアム階層では、バックエンドを複数のリージョンにデプロイでき、ロードバランサは自動的にユーザーのトラフィックを空き容量のある、最も近いリージョンに転送します。スタンダード階層を選択した場合、TCP プロキシ ロードバランサは単一リージョン内のバックエンド間でのみトラフィックを転送できます。

インターフェース

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

  • gcloud コマンドライン ツール: Cloud SDK に含まれるコマンドライン ツール。HTTP(S) 負荷分散のドキュメントでは、タスクの実行時にこのツールをよく利用します。ツールの完全な概要については、gcloud ツールガイドをご覧ください。負荷分散に関連するコマンドは、gcloud compute コマンド グループにあります。

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

    gcloud compute http-health-checks create --help
    
  • Google Cloud Console: 負荷分散タスクは、Google Cloud Consoleで実行できます。

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

次のステップ