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

Google Cloud の外部 TCP / UDP ネットワーク負荷分散(以降はネットワーク負荷分散と呼びます)は、リージョンのパススルー ロードバランサです。ネットワーク ロードバランサは、同じリージョン内の仮想マシン(VM)インスタンス間で外部トラフィックを分散します。

ネットワーク ロードバランサは、TCP、UDP、ESP、ICMP トラフィック向けに構成できます。ESP と ICMP のサポートは、プレビュー版です。

ネットワーク ロードバランサは、以下からのトラフィックを受信できます。

  • インターネット上のすべてのクライアント
  • 外部 IP を持つ Google Cloud VM
  • Cloud NAT またはインスタンス ベースの NAT 経由でインターネットにアクセスできる Google Cloud VM

ネットワーク負荷分散には次の特長があります。

  • ネットワーク負荷分散はマネージド サービスです。
  • ネットワーク負荷分散は、Andromeda 仮想ネットワーキングGoogle Maglev で実装されます。
  • ネットワーク ロードバランサはプロキシではありません。
    • 負荷分散されたパケットは、パケットの送信元 IP アドレス、宛先 IP アドレス、プロトコル(プロトコルがポートベースの場合は、送信元ポートと宛先ポートは変更されていません)を持つバックエンド VM によって受信されます。
    • 負荷分散接続はバックエンド VM によって終端されます。
    • バックエンド VM からのレスポンスは、ロードバランサを経由せず、クライアントに直接送信されます。これを業界用語で Direct Server Return といいます。

次の図に、カリフォルニア、ニューヨーク、シンガポールのユーザーを示します。これらのユーザーは、myapp、test、travel というバックエンド リソースに接続しています。範囲がエニーキャストになっているため、シンガポールのユーザーが米国西部のバックエンドに接続しても、トラフィックは最も近いシンガポールに送信されます。そこから、トラフィックはリージョン バックエンドにルーティングされます。

3 つのリージョン バックエンドと 3 つの転送ルール(クリックして拡大)
ネットワーク負荷分散の例(クリックして拡大)

スコープ

ネットワーク ロードバランサはインターネットからのトラフィックを分散します。

ネットワーク ロードバランサのスコープは、グローバルではなくリージョンです。つまり、ネットワーク ロードバランサが複数のリージョンにまたがることはできません。ロードバランサは単一リージョン内のすべてのゾーンにサービスを提供します。

ユースケース

ネットワーク負荷分散は次のような状況で使用します。

  • TCP 以外のトラフィックの負荷分散が必要な場合。または、他のロードバランサでサポートされていない TCP ポートの負荷分散が必要な場合。
  • ロードバランサではなく、バックエンドで SSL トラフィックの復号を行う場合。ネットワーク負荷分散はこのタスクを実行できません。SSL トラフィックをバックエンドで復号すると、VM の CPU 使用量が非常に多くなります。
  • バックエンド VM の SSL 証明書を自己管理する場合。Google マネージド SSL 証明書は HTTP(S) 負荷分散と SSL プロキシ負荷分散でのみ使用できます。
  • プロキシを経由せずに元のパケットを転送する必要がある場合。たとえば、クライアントの送信元 IP を保持する必要がある場合など。
  • 既存の環境でパススルー ロードバランサを使用していて、これを変更せずに移行する場合。

GKE アプリケーションのロード バランシング

GKE でアプリケーションを構築する場合は、組み込みの GKE Service コントローラを使用することをおすすめします。このコントローラは GKE ユーザーに代わって Google Cloud ロードバランサをデプロイします。これは、スタンドアロンのロード バランシング アーキテクチャと同じですが、ライフサイクルが GKE によって完全に自動化、制御される点で異なります。

関連する GKE のドキュメント:

アーキテクチャ

ネットワーク ロードバランサのアーキテクチャは、バックエンド サービスベースのネットワーク ロードバランサとターゲット プールベースのネットワーク ロードバランサのどちらを使用するかによって異なります。

バックエンド サービスベースのネットワーク ロードバランサ

ネットワーク ロードバランサは、リージョン バックエンド サービスを使用して作成できます。リージョン バックエンド サービスでは、ロードバランサの動作と、バックエンド インスタンス グループにトラフィックを分散する方法が定義されます。バックエンド サービスを使用すると、従来のターゲット プールではサポートされていない機能が有効になります。具体的には、非レガシー ヘルスチェック(TCP、SSL、HTTP、HTTPS、HTTP/2)のサポート、マネージド インスタンス グループによる自動スケーリング、コネクション ドレイン、構成可能なフェイルオーバー ポリシーなどです。

バックエンド サービスベースのネットワーク ロードバランサは、TCP、UDP、ESP、ICMP トラフィックの負荷分散に使用できます。

アーキテクチャの詳細については、リージョン バックエンド サービスを使用したネットワーク ロードバランサをご覧ください。

既存のターゲット プールベースのネットワーク ロードバランサを移行して、バックエンド サービスを使用することもできます。手順については、ターゲット プールからバックエンド サービスへのネットワーク ロードバランサの移行をご覧ください。

ターゲット プールベースのネットワーク ロードバランサ

ターゲット プールは、Google Cloud のネットワーク ロードバランサでサポートされているレガシー バックエンドです。ターゲット プールでは、ロードバランサから受信トラフィックを受け取るインスタンスのグループを定義します。

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

アーキテクチャの詳細については、ターゲット プールのバックエンドを使用するネットワーク ロードバランサをご覧ください。

ネットワーク負荷分散と他の Google Cloud ロードバランサの比較

Google Cloud ロードバランサとの相違点については、次のドキュメントをご覧ください。