Cloud Load Balancing の概要

ロードバランサは、ユーザーのトラフィックをアプリケーションの複数のインスタンスに分散します。負荷を分散することで、アプリケーションにパフォーマンスの問題が起こるリスクを低減します。

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

Cloud Load Balancing について

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

Cloud Load Balancing は、Google サービスと同じフロントエンド インフラストラクチャ上に構築されています。そのため毎秒 100 万件以上のクエリに対応でき、安定した高パフォーマンスと低レイテンシを提供します。トラフィックは世界 80 か所以上に設けられたロード バランシング地点を経由して Cloud Load Balancing に入るため、データは転送経路のほとんどで Google の高速プライベート ネットワーク バックボーンを通ります。Cloud Load Balancing を使用すると、可能な限りユーザーに近い場所からコンテンツを配信できます。

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

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

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

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

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

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

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

  • 高度な機能のサポート。Cloud Load Balancing は、IPv6 グローバル ロード バランシング、WebSocket、ユーザー定義のリクエスト ヘッダー、プライベート VIP のためのプロトコル転送などの機能をサポートしています。

    また、外部 HTTP(S) ロード バランシングには以下の統合が含まれます。

    • キャッシュに保存されたコンテンツ配信用の Cloud CDN との統合
    • Google Cloud Armor との統合。インフラストラクチャを分散型サービス拒否攻撃(DDoS)などの標的型攻撃から保護します。

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

次の図は、利用可能な Cloud Load Balancing プロダクトをまとめたものです。

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

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

ロードバランサの種類 トラフィックの種類 グローバルかリージョンか ネットワーク サービス ティア ロード バランシング スキーム ロードバランサのフロントエンド ポート プロキシまたはパススルー
グローバル外部 HTTP(S) ロードバランサプレビュー HTTP または HTTPS グローバル プレミアム ティアのみ EXTERNAL_MANAGED HTTP では 80 か 8080、HTTPS では 443 プロキシ
グローバル外部 HTTP(S) ロードバランサ(従来) HTTP または HTTPS グローバル(プレミアム ティア)。リージョン(スタンダード ティア)。 プレミアム ティアまたはスタンダード ティア EXTERNAL HTTP では 80 か 8080、HTTPS では 443 プロキシ
リージョン外部 HTTP(S) ロードバランサプレビュー HTTP または HTTPS リージョン スタンダードのみ EXTERNAL_MANAGED HTTP では 80 か 8080、HTTPS では 443 プロキシ
内部 HTTP(S) ロードバランサ HTTP または HTTPS リージョン プレミアム ティアのみ INTERNAL_MANAGED HTTP では 80 か 8080、HTTPS では 443 プロキシ
SSL プロキシ ロードバランサ TCP、SSL オフロード グローバル(プレミアム ティア)。リージョン(スタンダード ティア)。 プレミアム ティアまたはスタンダード ティア EXTERNAL 25、43、110、143、195、443、465、587、700、993、995、1883、3389、5222、5432、5671、5672、5900、5901、6379、8085、8099、9092、9200、9300 プロキシ
TCP プロキシ ロードバランサ TCP、SSL オフロードなし グローバル(プレミアム ティア)。リージョン(スタンダード ティア)。 プレミアム ティアまたはスタンダード ティア EXTERNAL 25、43、110、143、195、443、465、587、700、993、995、1883、3389、5222、5432、5671、5672、5900、5901、6379、8085、8099、9092、9200、9300 プロキシ
外部 TCP / UDP ネットワーク ロードバランサ TCP、UDP、ESP、ICMPプレビュー リージョン プレミアム ティアまたはスタンダード ティア EXTERNAL 任意 パススルー
内部 TCP / UDP ロードバランサ TCP または UDP リージョン バックエンド、リージョン フロントエンド(グローバル アクセスをサポート) プレミアム ティアのみ INTERNAL 任意 パススルー

ロードバランサの選択

使用する Cloud Load Balancing プロダクトを決定するには、まず、ロードバランサが処理するトラフィックの種類と、グローバル ロード バランシングとリージョン ロード バランシング、外部ロード バランシングと内部ロード バランシング、プロキシ ロード バランシングとパススルー ロード バランシングのいずれが必要かどうかを判断する必要があります。上記の決定の詳細については、ロードバランサの選択をご覧ください。

このディシジョン ツリーを使用して、クライアント、プロトコル、ネットワーク構成で使用できるロードバランサを決定します。

ロードバランサを選ぶためのディシジョン ツリー(クリックで拡大)
ロードバランサを選ぶためのディシジョン ツリー(クリックで拡大)

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

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

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

内部 HTTP(S) ロード バランシング

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

外部 HTTP(S) ロード バランシング

HTTP(S) ロード バランシングの実装は、ロードバランサのモードによって異なります。

高度なトラフィック管理機能を含むグローバル外部 HTTP(S) ロードバランサは GFE に実装されます。GFE はグローバルに分散しており、Google のグローバル ネットワークとコントロール プレーンを使用して連携を取ります。GFE はマルチリージョンのロード バランシングを行い、空き容量のある、最も近い正常なバックエンドにトラフィックを転送して、ユーザーにできるだけ近いところで HTTP(S) トラフィックを終端します。また、グローバル外部 HTTP(S) ロードバランサは、オープンソースの Envoy プロキシを使用して高度なトラフィック管理機能を有効にします。グローバル外部 HTTP(S) ロードバランサはプレミアム ティアでのみサポートされます。

グローバル外部 HTTP(S) ロードバランサ(従来)は GFE にも実装されています。これは、プレミアム ティアではグローバル ロードバランサですが、スタンダード ティアでは実質的なリージョン ロードバランサとなるように構成できます。実質的なリージョン ロードバランサでは、バックエンドサービスは常にグローバルですが、スタンダード ティアを選択した場合、外部転送ルールと外部 IP アドレスがリージョン ベースにし、かつ、グローバル バックエンド サービスに接続しているバックエンドもその転送ルールや IP アドレスと同じリージョン内に存在する必要があります。

リージョン外部 HTTP(S) ロードバランサは、オープンソースの Envoy プロキシをベースにしたマネージド サービスで、高度なトラフィック管理機能を有効にします。これは、スタンダード ティアでのみサポートされているリージョン HTTP(S) ロードバランサです。

内部 TCP / UDP ロード バランシング

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

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

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

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

バックエンド サービスベースのネットワーク ロードバランサは、TCP、UDP、ESP、ICMP トラフィックに対応しています。

ターゲット プールベースのネットワーク ロードバランサは、TCP または UDP のトラフィックのみをサポートします。

SSL プロキシ負荷分散

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

TCP プロキシ負荷分散

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

インターフェース

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

  • gcloud コマンドライン ツール: Cloud SDK に含まれるコマンドライン ツール。ドキュメントでは、タスクを完了するためにこのツールを頻繁に呼び出しています。ツールの完全な概要については、gcloud ツールガイドをご覧ください。負荷分散に関連するコマンドは、gcloud compute コマンド グループにあります。

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

    gcloud compute http-health-checks create --help
    
  • Google Cloud Console: Cloud Console を使用して負荷分散タスクを実行できます。

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

次のステップ