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 アドレスを使用するか、ロードバランサがリージョンかグローバルか、サポートされる Network Service Tiers やトラフィックの種類はどれかなど、それぞれの 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 ネットワークのさまざまなリージョンにトラフィックが分散されています。2 つのリージョンの 2 つの内部ロードバランサ(us-central1asia-east1)が、トラフィックを分散します。us-central1 内で、内部ロードバランサは、2 つのゾーン(us-central1-aus-central1-b)間でトラフィックを分散します。

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

トラフィックの種類

ロードバランサで処理する必要があるトラフィックの種類は、使用するロードバランサを決定するもう 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 Front End(GFE)から DDoS 保護を自動的に継承します。

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

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

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

詳細については、宛先外部 IP アドレスへの上り(内向き)トラフィックをご覧ください。

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

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

外部および内部の負荷分散と基盤テクノロジー(クリックして拡大)
外部および内部の負荷分散と基盤テクノロジー(クリックして拡大)
  • Google Front End(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 リファレンス ドキュメントでは、使用できるリソースとメソッドについて説明しています。

次のステップ

  • どの Google Cloud ロードバランサがニーズに最も合っているかを判断するには、ロードバランサの選択をご覧ください。