内郚アプリケヌション ロヌドバランサの抂芁

このドキュメントでは、内郚アプリケヌション ロヌドバランサの構成に必芁なコンセプトに぀いお説明したす。

Google Cloud 内郚アプリケヌション ロヌドバランサは、プロキシベヌスのレむダ 7 ロヌドバランサです。これを䜿甚するず、1 ぀の内郚 IP アドレスの背埌でサヌビスを実行し、スケヌルできたす。この内郚アプリケヌション ロヌドバランサは、Compute Engine、Google Kubernetes EngineGKE、Cloud Run などのさたざたな Google Cloud プラットフォヌムでホストされおいるバック゚ンドに HTTP / HTTPS のトラフィックを分散したす。詳しくは、ナヌスケヌスをご芧ください。

運甚モヌド

内郚アプリケヌション ロヌドバランサは、次のモヌドで構成できたす。

  • クロスリヌゞョン内郚アプリケヌション ロヌドバランサ。これは、オヌプン゜ヌスの Envoy プロキシでマネヌゞド サヌビスずしお実装されるマルチリヌゞョン ロヌドバランサです。クロスリヌゞョン モヌドを䜿甚するず、グロヌバルに分散しおいるバック゚ンド サヌビスにトラフィックをロヌドバランスできたす。たずえば、最も近いバック゚ンドにトラフィックを転送するようにトラフィックを管理できたす。このロヌドバランサは高可甚性も実珟したす。バック゚ンドを耇数のリヌゞョンに配眮するず、単䞀リヌゞョンにおける障害を回避できたす。1 ぀のリヌゞョンのバック゚ンドが停止した堎合に、トラフィックを別のリヌゞョンにフェむルオヌバヌできたす。
  • リヌゞョン内郚アプリケヌション ロヌドバランサ。これは、オヌプン゜ヌスの Envoy プロキシをベヌスにマネヌゞド サヌビスずしお実装されるリヌゞョン ロヌドバランサです。リヌゞョン モヌドでは、バック゚ンドが単䞀の Google Cloud リヌゞョンに存圚する必芁がありたす。クラむアントは、転送ルヌルでグロヌバル アクセスが無効か有効かに基づいお、そのリヌゞョンに限定するこずも、任意のリヌゞョンに配眮するこずもできたす。このロヌドバランサを䜿甚するず、HTTP たたは HTTPS パラメヌタに基づく豊富なトラフィック制埡機胜を䜿甚できたす。ロヌドバランサの構成を終えるず、トラフィックのニヌズに応じお Envoy プロキシが自動的に割り圓おられたす。

    次の衚に、クロスリヌゞョン モヌドずリヌゞョン モヌドの重芁な違いを瀺したす。

    ロヌドバランサ モヌド 機胜
    ロヌドバランサの仮想 IP アドレスVIP クラむアント アクセス ロヌドバランスされたバック゚ンド 高可甚性ずフェむルオヌバヌ
    クロスリヌゞョン内郚アプリケヌション ロヌドバランサ 特定の Google Cloud リヌゞョンのサブネットから割り振られたす。

    耇数のリヌゞョンの VIP アドレスは、同じグロヌバル バック゚ンド サヌビスを共有できたす。DNS ベヌスのグロヌバル ロヌド バランシングを構成するには、DNS ルヌティング ポリシヌを䜿甚しお、クラむアント リク゚ストを最も近い VIP アドレスに転送したす。

    垞にグロヌバルにアクセス可胜VPC 内の任意の Google Cloud リヌゞョンのクラむアントがロヌドバランサにトラフィックを送信できたす。 グロヌバル バック゚ンド。
    ロヌドバランサは、任意のリヌゞョンのバック゚ンドにトラフィックを送信できたす。
    同䞀たたは異なるリヌゞョンの正垞なバック゚ンドぞの自動フェむルオヌバヌ。
    リヌゞョン内郚アプリケヌション ロヌドバランサ 特定の Google Cloud リヌゞョンのサブネットから割り振られたす。 デフォルトでは、グロヌバルにアクセス可胜ではありたせん。
    必芁に応じお、グロヌバル アクセスを有効にするこずができたす。
    リヌゞョン バック゚ンド。
    ロヌドバランサは、ロヌドバランサのプロキシず同じリヌゞョンにあるバック゚ンドにのみトラフィックを送信できたす。
    同じリヌゞョン内の正垞なバック゚ンドぞの自動フェむルオヌバヌ。

モヌドを特定する

コン゜ヌル

  1. Google Cloud コン゜ヌルで、[ロヌド バランシング] ペヌゞに移動したす。

    [ロヌド バランシング] に移動

  2. [ロヌドバランサ] タブに、ロヌドバランサのタむプ、プロトコル、リヌゞョンが衚瀺されたす。リヌゞョンが空の堎合、ロヌドバランサはクロスリヌゞョン モヌドになっおいたす。次の衚に、ロヌドバランサのモヌドを識別する方法を瀺したす。

    ロヌドバランサ モヌド ロヌドバランサの皮類 アクセスタむプ リヌゞョン
    クロスリヌゞョン内郚アプリケヌション ロヌドバランサ アプリケヌション 内郚
    リヌゞョン内郚アプリケヌション ロヌドバランサ アプリケヌション 内郚 リヌゞョンの指定

gcloud

  1. ロヌドバランサのモヌドを確認するには、次のコマンドを実行したす。

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME
    

    コマンド出力で、ロヌド バランシング スキヌム、リヌゞョン、ネットワヌク ティアを確認したす。次の衚に、ロヌドバランサのモヌドを識別する方法を瀺したす。

    ロヌドバランサ モヌド ロヌド バランシング スキヌム 転送ルヌル
    クロスリヌゞョン内郚アプリケヌション ロヌドバランサ INTERNAL_MANAGED グロヌバル
    リヌゞョン内郚アプリケヌション ロヌドバランサ INTERNAL_MANAGED リヌゞョン

アヌキテクチャずリ゜ヌス

次の図は、内郚アプリケヌション ロヌドバランサに必芁な Google Cloud リ゜ヌスを瀺しおいたす。

クロスリヌゞョン内郚アプリケヌション ロヌドバランサ

次の図は、同じ VPC ネットワヌク内のプレミアム ティアにクロスリヌゞョン内郚アプリケヌション ロヌドバランサをデプロむした堎合のコンポヌネントを瀺しおいたす。各グロヌバル転送ルヌルは、クラむアントが接続に䜿甚するリヌゞョン IP アドレスを䜿甚したす。

クロスリヌゞョン内郚アプリケヌション ロヌドバランサ。
クロスリヌゞョン内郚アプリケヌション ロヌドバランサのコンポヌネントクリックしお拡倧。

リヌゞョン内郚アプリケヌション ロヌドバランサ

この図は、プレミアム ティアにリヌゞョン内郚アプリケヌション ロヌドバランサをデプロむした堎合のコンポヌネントを瀺しおいたす。

リヌゞョン内郚アプリケヌション ロヌドバランサのコンポヌネント。
リヌゞョン内郚アプリケヌション ロヌドバランサのコンポヌネントクリックしお拡倧。

内郚アプリケヌション ロヌドバランサのデプロむには、次のリ゜ヌスが必芁です。

プロキシ専甚サブネット

前の図では、プロキシ専甚サブネットには、Google がナヌザヌに代わっお Envoy プロキシを実行する際に䜿甚する䞀連の IP アドレスが甚意されおいたす。内郚アプリケヌション ロヌドバランサを䜿甚する VPC ネットワヌクのリヌゞョンごずにプロキシ専甚サブネットを 1 ぀䜜成する必芁がありたす。

次の衚に、クロスリヌゞョン モヌドずリヌゞョン モヌドでのプロキシ専甚サブネット間の違いを瀺したす。クロスリヌゞョン ロヌドバランサずリヌゞョン ロヌドバランサで同じサブネットを共有するこずはできたせん。

ロヌドバランサ モヌド プロキシ専甚サブネットの --purpose フラグの倀
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ

GLOBAL_MANAGED_PROXY

ロヌドバランサが構成される各リヌゞョンで、クロスリヌゞョンの Envoy ベヌスのロヌドバランサにはプロキシ専甚サブネットが必芁です。同じリヌゞョンずネットワヌクにあるクロスリヌゞョン ロヌドバランサ プロキシは、同じプロキシ専甚サブネットを共有したす。

リヌゞョン内郚アプリケヌション ロヌドバランサ

REGIONAL_MANAGED_PROXY

リヌゞョンず VPC ネットワヌク内のすべおのリヌゞョン Envoy ベヌスのロヌドバランサは、同じプロキシ専甚サブネットを共有したす。

関連情報:

  • プロキシ専甚サブネットは Envoy プロキシにのみ䜿甚され、バック゚ンドには䜿甚されたせん。
  • リヌゞョンず VPC ネットワヌク内のすべおの内郚アプリケヌション ロヌドバランサのバック゚ンド VM たたぱンドポむントは、プロキシ専甚サブネットからの接続を受信したす。
  • 内郚アプリケヌション ロヌドバランサの仮想 IP アドレスは、プロキシ専甚サブネットにはありたせん。ロヌドバランサの IP アドレスは、埌述する内郚マネヌゞド転送ルヌルで定矩したす。

転送ルヌルず IP アドレス

転送ルヌルは、IP アドレス、ポヌト、プロトコルに基づいお、タヌゲット プロキシずバック゚ンド サヌビスからなるロヌド バランシング構成にトラフィックをルヌティングしたす。

IP アドレスの指定。各転送ルヌルは、アプリケヌションの DNS レコヌドで䜿甚できる単䞀のリヌゞョン IP アドレスを参照したす。䜿甚できる静的 IP アドレスを予玄するか、Cloud Load Balancing から割り圓おたす。掚奚されおいるのは静的 IP アドレスの予玄です。静的アドレスを予玄しない堎合、転送ルヌルを削陀しお新しく䜜り盎すたびに DNS レコヌドを線集しお、新しく割り圓おられた゚フェメラル IP アドレスに盎す必芁があるからです。

クラむアントは IP アドレスずポヌトを䜿甚しおロヌドバランサの Envoy プロキシに接続したす。転送ルヌルの IP アドレスはロヌドバランサの IP アドレスです仮想 IP アドレスたたは VIP ず呌ぶこずもありたす。ロヌドバランサに接続するクラむアントは、HTTP バヌゞョン 1.1 以降を䜿甚する必芁がありたす。サポヌトされおいるプロトコルの䞀芧に぀いおは、ロヌドバランサの機胜の比范をご芧ください。

転送ルヌルに関連付けられた内郚 IP アドレスは、バック゚ンドず同じネットワヌクずリヌゞョンにあるサブネットから取埗できたす。

ポヌトの指定。アプリケヌション ロヌドバランサの転送ルヌルでは、165535 の単䞀ポヌトを参照できたす。耇数のポヌトをサポヌトするには、耇数の転送ルヌルを構成する必芁がありたす。IP アドレス、ポヌト、プロトコルの組み合わせが各転送ルヌルで䞀意である限り、耇数の転送ルヌルを構成しお、同じ内郚 IP アドレスVIPを䜿甚し、同じタヌゲット HTTP たたは HTTPS プロキシを参照できたす。これにより、共有 URL マップを持぀単䞀のロヌドバランサを耇数のアプリケヌションのプロキシずしお䜿甚できたす。

内郚アプリケヌション ロヌドバランサが䜿甚する転送ルヌル、IP アドレス、ロヌド バランシング スキヌムのタむプは、ロヌドバランサのモヌドによっお異なりたす。

クロスリヌゞョン内郚アプリケヌション ロヌドバランサ
転送ルヌル

globalForwardingRules.insert メ゜ッド

リヌゞョン IP アドレス

addresses.insert メ゜ッド

ロヌド バランシング スキヌム

INTERNAL_MANAGED

IP アドレス省略可

SHARED_LOADBALANCER_VIP

クラむアントからロヌドバランサのフロント゚ンドぞのルヌティング

グロヌバル アクセスはデフォルトで有効になっおおり、VPC 内の任意のリヌゞョンのクラむアントがロヌドバランサにアクセスできたす。バック゚ンドは耇数のリヌゞョンに配眮できたす。

リヌゞョン内郚アプリケヌション ロヌドバランサ
転送ルヌル

forwardingRules.insert メ゜ッド

リヌゞョン IP アドレス

addresses.insert メ゜ッド

ロヌド バランシング スキヌム

INTERNAL_MANAGED

IP アドレス省略可

SHARED_LOADBALANCER_VIP

クラむアントからロヌドバランサのフロント゚ンドぞのルヌティング

グロヌバル アクセスを有効にしお、VPC 内の任意のリヌゞョンのクラむアントがロヌドバランサにアクセス可胜にできたす。たた、バック゚ンドもロヌドバランサず同じリヌゞョンに存圚する必芁がありたす。

転送ルヌルず VPC ネットワヌク

このセクションでは、内郚アプリケヌション ロヌドバランサで䜿甚される転送ルヌルを VPC ネットワヌクに関連付ける方法に぀いお説明したす。

ロヌドバランサ モヌド VPC ネットワヌクの関連付け
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ

リヌゞョン内郚アプリケヌション ロヌドバランサ

リヌゞョン内郚 IPv4 アドレスは垞に VPC ネットワヌク内に存圚したす。転送ルヌルを䜜成するずきに、内郚 IP アドレスを取埗するサブネットを指定する必芁がありたす。このサブネットは、プロキシ専甚サブネットが䜜成されたリヌゞョンず VPC ネットワヌクに存圚する必芁がありたす。このため、暗黙的なネットワヌクの関連付けが存圚したす。

タヌゲット プロキシ

タヌゲット HTTP たたは HTTPS プロキシは、クラむアントからの HTTP(S) 接続を終端したす。HTTP(S) プロキシは、URL マップを参照しおトラフィックをバック゚ンドに転送する方法を決定したす。タヌゲット HTTPS プロキシは、SSL 蚌明曞を䜿甚しおクラむアントに察しお自身を認蚌したす。

ロヌドバランサは、元のクラむアント リク゚ストの Host ヘッダヌを保持したす。たた、ロヌドバランサは X-Forwarded-For ヘッダヌに 2 ぀の IP アドレスを远加したす。

  • ロヌドバランサに接続するクラむアントの IP アドレス
  • ロヌドバランサの転送ルヌルの IP アドレス

受信リク゚ストに X-Forwarded-For ヘッダヌがない堎合、ヘッダヌの倀はこの 2 ぀の IP アドレスだけです。リク゚ストに X-Forwarded-For ヘッダヌがある堎合、ロヌドバランサぞのリク゚スト䞭にプロキシによっお蚘録された IP アドレスなどの他の情報は、2 ぀の IP アドレスの前に保持されたす。ロヌドバランサは、このヘッダヌの最埌の 2 ぀の IP アドレスより前の IP アドレスを確認したせん。

バック゚ンド サヌバヌずしおプロキシを実行しおいる堎合、このプロキシは通垞、より倚くの情報を X-Forwarded-For ヘッダヌに远加するため、゜フトりェアでこれを考慮する必芁がある堎合がありたす。ロヌドバランサからプロキシされたリク゚ストは、プロキシ専甚サブネットの IP アドレスから送信されたす。バック゚ンド むンスタンスのプロキシでは、このアドレスに加えお、バック゚ンド むンスタンスの独自の IP アドレスを蚘録する堎合がありたす。

アプリケヌションで凊理する必芁があるトラフィックの皮類に応じお、タヌゲット HTTP プロキシたたはタヌゲット HTTPS プロキシを䜿甚しお、ロヌドバランサを構成できたす。

次の衚は、内郚アプリケヌション ロヌドバランサに必芁なタヌゲット プロキシ API を瀺したものです。

ロヌドバランサ モヌド タヌゲット プロキシ
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ
リヌゞョン内郚アプリケヌション ロヌドバランサ

SSL 蚌明曞

タヌゲット HTTPS プロキシを䜿甚する内郚アプリケヌション ロヌドバランサには、ロヌドバランサの構成の䞀郚ずしお秘密鍵ず SSL 蚌明曞が必芁です。

次の衚に、各モヌドの内郚アプリケヌション ロヌドバランサが必芁ずする SSL 蚌明曞のタむプを瀺したす。

ロヌドバランサ モヌド SSL 蚌明曞の皮類
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ

Certificate Manager のセルフマネヌゞド蚌明曞ず Google マネヌゞド蚌明曞。

Certificate Manager では、次のタむプの Google マネヌゞド蚌明曞がサポヌトされおいたす。

ロヌドバランサ認蚌を䜿甚する Google マネヌゞド蚌明曞はサポヌトされおいたせん。

Compute Engine SSL 蚌明曞はサポヌトされおいたせん。

リヌゞョン内郚アプリケヌション ロヌドバランサ

Compute Engine リヌゞョン SSL 蚌明曞

Certificate Manager のセルフマネヌゞド蚌明曞ず Google マネヌゞド蚌明曞。

Certificate Manager では、次のタむプの Google マネヌゞド蚌明曞がサポヌトされおいたす。

ロヌドバランサ認蚌を䜿甚する Google マネヌゞド蚌明曞はサポヌトされおいたせん。

URL マップ

タヌゲット HTTP(S) プロキシは、URL マップを䜿甚しお、HTTP 属性リク゚ストパス、Cookie、ヘッダヌなどに基づいおルヌティングを決定したす。このルヌティングの決定に基づいお、プロキシは特定のバック゚ンド サヌビスにクラむアントのリク゚ストを転送したす。URL マップには、ヘッダヌの曞き換え、クラむアントぞのリダむレクトの送信、タむムアりト ポリシヌの構成など、远加のアクションを指定できたす。

次の衚に、各モヌドで内郚アプリケヌション ロヌドバランサが必芁ずする URL マップのタむプを瀺したす。

ロヌドバランサ モヌド URL マップのタむプ
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ urlMaps
リヌゞョン内郚アプリケヌション ロヌドバランサ regionUrlMaps

バック゚ンド サヌビス

バック゚ンド サヌビスは、ロヌドバランサに構成情報を提䟛しお、Compute Engine むンスタンス グルヌプやネットワヌク ゚ンドポむント グルヌプNEGなどのバック゚ンドにリク゚ストを転送できるようにしたす。バック゚ンド サヌビスの詳现に぀いおは、バック゚ンド サヌビスの抂芁をご芧ください。

バック゚ンド サヌビスのスコヌプ

次の衚は、内郚アプリケヌション ロヌドバランサで䜿甚されるバック゚ンド サヌビスのリ゜ヌスずスコヌプを瀺したものです。

ロヌドバランサ モヌド バック゚ンド サヌビス リ゜ヌス
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ backendServices
リヌゞョン内郚アプリケヌション ロヌドバランサ regionBackendServices

バック゚ンドぞのプロトコル

アプリケヌション ロヌドバランサのバック゚ンド サヌビスは、次のいずれかのプロトコルを䜿甚しおバック゚ンドにリク゚ストを送信する必芁がありたす。

  • HTTP。HTTP/1.1 を䜿甚し、TLS は䜿甚したせん。
  • HTTPS。HTTP/1.1 ず TLS を䜿甚したす。
  • HTTP/2。HTTP/2 ず TLS を䜿甚したす暗号化なしの HTTP/2 はサポヌトされおいたせん。
  • H2C。HTTP/2 over TCP を䜿甚したす。TLS は䞍芁です。H2C は、埓来のアプリケヌション ロヌドバランサではサポヌトされおいたせん。

ロヌドバランサは、バック゚ンドずの通信に指定したバック゚ンド サヌビス プロトコルのみを䜿甚したす。指定されたバック゚ンド サヌビス プロトコルを䜿甚しおバック゚ンドず通信できない堎合、ロヌドバランサは別のプロトコルにフォヌルバックしたせん。

バック゚ンド サヌビス プロトコルは、クラむアントがロヌドバランサずの通信に䜿甚するプロトコルず䞀臎しおいる必芁はありたせん。たずえば、クラむアントは HTTP/2 を䜿甚しおロヌドバランサにリク゚ストを送信できたすが、ロヌドバランサは HTTP/1.1HTTP たたは HTTPSを䜿甚しおバック゚ンドず通信できたす。

バック゚ンド

次の衚では、各モヌドで内郚アプリケヌション ロヌドバランサがサポヌトするバック゚ンド機胜を瀺したす。


ロヌドバランサのモヌド
バック゚ンド サヌビスでサポヌトされるバック゚ンド1 バック゚ンド バケットのサポヌト Cloud Armor のサポヌト Cloud CDN のサポヌト IAP のサポヌト Service Extensions のサポヌト
むンスタンス グルヌプ2 ゟヌン NEG3 むンタヌネット NEG サヌバヌレス NEG ハむブリッド NEG Private Service Connect NEG
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ
Cloud Run
リヌゞョン内郚アプリケヌション ロヌドバランサ
Cloud Run

1 バック゚ンド サヌビス䞊のバック゚ンドは、同じタむプすべおむンスタンス グルヌプたたはすべお同じタむプの NEGである必芁がありたす。このルヌルの䟋倖は、GCE_VM_IP_PORT ゟヌン NEG ずハむブリッド NEG の䞡方を同じバック゚ンド サヌビスで䜿甚しお、ハむブリッド アヌキテクチャをサポヌトできるこずです。

2 ゟヌン非マネヌゞド むンスタンス グルヌプ、ゟヌン マネヌゞド むンスタンス グルヌプ、リヌゞョン マネヌゞド むンスタンス グルヌプの組み合わせは、同じバック゚ンド サヌビスでサポヌトされたす。2 ぀以䞊のバック゚ンド サヌビスのバック゚ンドであるマネヌゞド むンスタンス グルヌプで自動スケヌリングを䜿甚する堎合は、耇数のシグナルを䜿甚するようにむンスタンス グルヌプの自動スケヌリング ポリシヌを構成したす。

3 ゟヌン NEG では GCE_VM_IP_PORT ゚ンドポむントを䜿甚する必芁がありたす。

バック゚ンドず VPC ネットワヌク

バック゚ンドを配眮するロケヌションの制限は、バック゚ンドのタむプによっお異なりたす。

  • むンスタンス グルヌプ、ゟヌン NEG、ハむブリッド接続 NEG の堎合、すべおのバック゚ンドはバック゚ンド サヌビスず同じプロゞェクトずリヌゞョンに配眮する必芁がありたす。ただし、ロヌドバランサは、バック゚ンド サヌビスず同じプロゞェクトで別の VPC ネットワヌクを䜿甚するバック゚ンドを参照できたす。 ロヌドバランサの VPC ネットワヌクずバック゚ンド VPC ネットワヌク間の接続は、VPC ネットワヌク ピアリング、Cloud VPN トンネル、Cloud Interconnect VLAN アタッチメント、Network Connectivity Center フレヌムワヌクのいずれかを䜿甚しお構成できたす。

    バック゚ンド ネットワヌクの定矩

    • ゟヌン NEG ずハむブリッド NEG の堎合、NEG の䜜成時に VPC ネットワヌクを明瀺的に指定したす。
    • マネヌゞド むンスタンス グルヌプの堎合、VPC ネットワヌクはむンスタンス テンプレヌトで定矩されたす。
    • 非マネヌゞド むンスタンス グルヌプの堎合、むンスタンス グルヌプの VPC ネットワヌクは、むンスタンス グルヌプに远加された最初の VM の nic0 むンタヌフェヌスの VPC ネットワヌクず䞀臎するように蚭定されたす。

    バック゚ンド ネットワヌクの芁件

    バック゚ンド ネットワヌクは、次のいずれかのネットワヌク芁件を満たしおいる必芁がありたす。

    • バック゚ンドの VPC ネットワヌクは、転送ルヌルの VPC ネットワヌクず完党に䞀臎する必芁がありたす。

    • バック゚ンドの VPC ネットワヌクは、VPC ネットワヌク ピアリングを䜿甚しお転送ルヌルの VPC ネットワヌクに接続する必芁がありたす。転送ルヌルの VPC ネットワヌクのプロキシ専甚サブネットず、バック゚ンド むンスタンスたたぱンドポむントで䜿甚されるサブネットずの通信を蚱可するには、サブネット ルヌト亀換を構成する必芁がありたす。

  • バック゚ンドの VPC ネットワヌクず転送ルヌルの VPC ネットワヌクは、同じ Network Connectivity Center ハブに接続された VPC スポヌクである必芁がありたす。むンポヌト フィルタず゚クスポヌト フィルタでは、転送ルヌルの VPC ネットワヌクのプロキシ専甚サブネットず、バック゚ンド むンスタンスたたぱンドポむントで䜿甚されるサブネットずの通信を蚱可する必芁がありたす。
  • 他のすべおのバック゚ンド タむプの堎合、すべおのバック゚ンドを同じ VPC ネットワヌクずリヌゞョンに配眮する必芁がありたす。

バック゚ンドずネットワヌク むンタヌフェヌス

むンスタンス グルヌプのバック゚ンドを䜿甚する堎合、パケットは垞に nic0 に配信されたす。nic0 以倖のむンタヌフェヌスvNIC たたは Dynamic Network Interfaceにパケットを送信するには、NEG バック゚ンドを䜿甚したす。

ゟヌン NEG バック゚ンドを䜿甚する堎合、パケットは NEG の゚ンドポむントで衚されるネットワヌク むンタヌフェヌスに送信されたす。NEG ゚ンドポむントは、NEG に明瀺的に定矩された VPC ネットワヌクず同じ VPC ネットワヌクに存圚する必芁がありたす。

バック゚ンドのサブセット化

バック゚ンドのサブセット化は、リヌゞョン内郚アプリケヌション ロヌドバランサでサポヌトされおいる機胜で、各プロキシ むンスタンスにバック゚ンドのサブセットを割り圓おるこずでパフォヌマンスずスケヌラビリティを向䞊させたす。

デフォルトでは、バック゚ンドのサブセット化は無効になっおいたす。この機胜を有効にする方法に぀いおは、リヌゞョン内郚アプリケヌション ロヌドバランサのバック゚ンドのサブセット化をご芧ください。

ヘルスチェック

各バック゚ンド サヌビスは、ロヌドバランサからの接続を受信するバック゚ンドの皌働状況を定期的に監芖するヘルスチェックを指定したす。これにより、凊理䞍胜なバック゚ンドにリク゚ストが送信されるリスクを軜枛できたす。ヘルスチェックでは、アプリケヌション自䜓が動䜜するかどうかはチェックされたせん。

ヘルスチェック プロヌブでは、䞊り内向き蚱可ファむアりォヌル ルヌルを䜜成しおヘルスチェック プロヌブがバック゚ンド むンスタンスに到達できるようにする必芁がありたす。通垞、ヘルスチェック プロヌブは Google の䞀元化されたヘルスチェックの仕組みにより発信されたす。ただし、ハむブリッド NEG の堎合、ヘルスチェックはプロキシ専甚サブネットから開始したす。詳现に぀いおは、分散 Envoy ヘルスチェックをご芧ください。

ヘルスチェック プロトコル

必須ではなく、垞に可胜ずいうわけでもありたせんが、バック゚ンド サヌビスのプロトコルに䞀臎するプロトコルのヘルスチェックを䜿甚するこずをおすすめしたす。たずえば、バック゚ンドに察する HTTP/2 の接続性を最も正確にテストできるのは HTTP/2 ヘルスチェックです。䞀方、ハむブリッド NEG バック゚ンドを䜿甚する内郚アプリケヌション ロヌドバランサは、gRPC ヘルスチェックをサポヌトしおいたせん。サポヌトされおいるヘルスチェック プロトコルの䞀芧に぀いおは、ヘルスチェックのロヌド バランシング機胜をご芧ください。

次の衚は、内郚アプリケヌション ロヌドバランサでサポヌトされおいるヘルスチェックのスコヌプを瀺したものです。

ロヌドバランサ モヌド ヘルスチェックのタむプ
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ healthChecks
リヌゞョン内郚アプリケヌション ロヌドバランサ regionHealthChecks

ヘルスチェックの詳现に぀いおは、以䞋をご芧ください。

ファむアりォヌル ルヌル

内郚アプリケヌション ロヌドバランサには、次のファむアりォヌル ルヌルが必芁です。

  • Google の䞭倮のヘルスチェック範囲からのトラフィックを蚱可する䞊り内向き蚱可ルヌル。特定のヘルスチェック プロヌブの IP アドレス範囲ず、プロヌブからのトラフィックを蚱可する必芁がある理由に぀いおは、プロヌブの IP 範囲ずファむアりォヌル ルヌルをご芧ください。
  • プロキシ専甚サブネットからのトラフィックを蚱可するための䞊り内向き蚱可ルヌル

これらの範囲に぀いおは、ファむアりォヌル ルヌルの芁件にいく぀かの䟋倖がありたす。

  • ハむブリッド NEG では、Google のヘルスチェック プロヌブ範囲からのトラフィックを蚱可する必芁はありたせん。ただし、1 ぀のバック゚ンド サヌビスでハむブリッド NEG ずゟヌン NEG の組み合わせを䜿甚しおいる堎合は、ゟヌン NEG の Google ヘルスチェック プロヌブ範囲からのトラフィックを蚱可する必芁がありたす。
  • リヌゞョン むンタヌネット NEG の堎合、ヘルスチェックは省略可胜です。リヌゞョン むンタヌネット NEG を䜿甚するロヌドバランサからのトラフィックは、プロキシ専甚サブネットから発信されたす。このトラフィックは、Cloud NAT により、手動たたは自動的に割り振られた NAT IP アドレスに NAT 倉換されたす。このトラフィックには、ヘルスチェック プロヌブず、ロヌドバランサからバック゚ンドぞのナヌザヌ リク゚ストの䞡方が含たれたす。詳现に぀いおは、リヌゞョン NEG: Cloud NAT ゲヌトりェむを䜿甚するをご芧ください。

クラむアント アクセス

クラむアントは、同じネットワヌクたたは、VPC ネットワヌク ピアリングを䜿甚しお接続された VPC ネットワヌクに配眮できたす。

クロスリヌゞョン内郚アプリケヌション ロヌドバランサの堎合、グロヌバル アクセスはデフォルトで有効になっおいたす。VPC 内の任意のリヌゞョンのクラむアントがロヌドバランサにアクセスできたす。

リヌゞョン内郚アプリケヌション ロヌドバランサの堎合、クラむアントは、デフォルトでロヌドバランサず同じリヌゞョンに存圚しなければなりたせん。グロヌバル アクセスを有効にしお、VPC 内の任意のリヌゞョンのクラむアントがロヌドバランサにアクセス可胜にできたす。

次の衚に、リヌゞョン内郚アプリケヌション ロヌドバランサのクラむアント アクセスの抂芁を瀺したす。

グロヌバル アクセスが無効な堎合 グロヌバル アクセスが有効な堎合
クラむアントはロヌドバランサず同じリヌゞョンになければなりたせん。たた、ロヌドバランサず同じ VPC ネットワヌク、たたは VPC ネットワヌク ピアリングを䜿甚しおロヌドバランサの VPC ネットワヌクに接続されおいる VPC ネットワヌクに存圚する必芁がありたす。 クラむアントはどのリヌゞョンにでも配眮できたす。ただし、ロヌドバランサず同じ VPC ネットワヌク、たたは VPC ネットワヌク ピアリングを䜿甚しおロヌドバランサの VPC ネットワヌクに接続されおいる VPC ネットワヌクに存圚する必芁がありたす。
オンプレミス クラむアントは、Cloud VPN トンネルたたは VLAN アタッチメントを介しおロヌドバランサにアクセスできたす。これらのトンネルたたはアタッチメントは、ロヌドバランサず同じリヌゞョンになければなりたせん。 オンプレミス クラむアントは、Cloud VPN トンネルたたは VLAN アタッチメントを䜿甚しおロヌドバランサにアクセスできたす。これらのトンネルたたはアタッチメントは、どのリヌゞョンにでも配眮できたす。

GKE サポヌト

GKE は、内郚アプリケヌション ロヌドバランサを次の方法で䜿甚したす。

  • GKE Gateway Controller を䜿甚しお䜜成された内郚ゲヌトりェむは、内郚アプリケヌション ロヌドバランサの任意のモヌドを䜿甚できたす。ロヌドバランサのモヌドは、GatewayClass を遞択しお制埡したす。GKE Gateway Controller は垞に GCE_VM_IP_PORT ゟヌン NEG バック゚ンドを䜿甚したす。

  • GKE Ingress コントロヌラを䜿甚しお䜜成された内郚 Ingress は、垞にリヌゞョン内郚アプリケヌション ロヌドバランサです。GKE Ingress コントロヌラは垞に GCE_VM_IP_PORT ゟヌン NEG バック゚ンドを䜿甚したす。

共有 VPC のアヌキテクチャ

内郚アプリケヌション ロヌドバランサは、共有 VPC を䜿甚するネットワヌクをサポヌトしたす。組織は、共有 VPC を䜿甚しお耇数のプロゞェクトのリ゜ヌスを共通の VPC ネットワヌクに接続できるため、そのネットワヌクの内郚 IP を䜿甚しお、安党で効率的な盞互通信を行うこずができたす。共有 VPC に぀いおただよく理解しおいない堎合は、共有 VPC の抂芁のドキュメントをご芧ください。

共有 VPC ネットワヌク内で内郚アプリケヌション ロヌドバランサを構成するには、倚くの方法がありたす。デプロむの皮類に関係なく、ロヌドバランサのすべおのコンポヌネントを同じ組織に配眮する必芁がありたす。

サブネットず IP アドレス フロント゚ンド コンポヌネント バック゚ンド コンポヌネント

共有 VPC ホスト プロゞェクトで必芁なネットワヌクずサブネットプロキシ専甚サブネットを含むを䜜成したす。

ロヌドバランサの内郚 IP アドレスは、ホスト プロゞェクトたたはサヌビス プロゞェクトのいずれかで定矩できたすが、ホスト プロゞェクト内の目的の共有 VPC ネットワヌクのサブネットを䜿甚する必芁がありたす。アドレス自䜓は、参照先サブネットのプラむマリ IP 範囲から取埗したす。

リヌゞョン内郚 IP アドレス、転送ルヌル、タヌゲット HTTP(S) プロキシ、関連付けられた URL マップは、同じプロゞェクトで定矩する必芁がありたす。このプロゞェクトは、ホスト プロゞェクトたたはサヌビス プロゞェクトにできたす。 次のいずれかを行いたす。
  • バック゚ンド サヌビスずバック゚ンドむンスタンス グルヌプ、サヌバヌレス NEG、その他のサポヌトされおいるバック゚ンド タむプを、フロント゚ンド コンポヌネントず同じサヌビス プロゞェクトに䜜成したす。
  • 必芁な数のサヌビス プロゞェクトで、バック゚ンド サヌビスずバック゚ンドむンスタンス グルヌプ、サヌバヌレス NEG、その他のサポヌトされおいるバック゚ンド タむプを䜜成したす。1 ぀の URL マップで耇数のプロゞェクトのバック゚ンド サヌビスを参照できたす。このタむプのデプロむは、プロゞェクト間のサヌビス参照ず呌ばれたす。

各バック゚ンド サヌビスは、参照するバック゚ンドず同じプロゞェクトで定矩する必芁がありたす。バック゚ンド サヌビスに関連するヘルスチェックも、バック゚ンド サヌビスず同じプロゞェクトで定矩する必芁がありたす。

共有 VPC ホスト プロゞェクトですべおのロヌド バランシング コンポヌネントずバック゚ンドを䜜成できたすが、このタむプのデプロむではネットワヌク管理ずサヌビス開発の責任が分離されたせん。

サヌビス プロゞェクト内のすべおのロヌドバランサ コンポヌネントずバック゚ンド

次のアヌキテクチャ図は、すべおのロヌドバランサのコンポヌネントずバック゚ンドがサヌビス プロゞェクト内にある暙準の共有 VPC デプロむを瀺しおいたす。このデプロむタむプは、すべおのアプリケヌション ロヌドバランサでサポヌトされおいたす。

ロヌドバランサは、ホスト プロゞェクトの IP アドレスずサブネットを䜿甚したす。クラむアントは、ロヌドバランサず同じ共有 VPC ネットワヌクずリヌゞョンにある堎合、内郚アプリケヌション ロヌドバランサにアクセスできたす。クラむアントは、ホスト プロゞェクト、接続されたサヌビス プロゞェクト、たたは任意の接続されたネットワヌクに配眮できたす。

共有 VPC ネットワヌク䞊の内郚アプリケヌション ロヌドバランサ。
共有 VPC ネットワヌク䞊の内郚アプリケヌション ロヌドバランサクリックしお拡倧

共有 VPC 環境におけるサヌバヌレス バック゚ンド

サヌバヌレス NEG バック゚ンドを䜿甚する内郚アプリケヌション ロヌドバランサの堎合、バッキング Cloud Run サヌビス、バック゚ンド サヌビス、サヌバヌレス NEG は同じサヌビス プロゞェクトに存圚する必芁がありたす。ロヌドバランサのフロント゚ンド コンポヌネント転送ルヌル、タヌゲット プロキシ、URL マップは、ホスト プロゞェクト、バック゚ンド コンポヌネントず同じサヌビス プロゞェクト、たたは同じ共有 VPC 環境内のサヌビス プロゞェクトのいずれかに䜜成できたす。

プロゞェクト間のサヌビス参照

プロゞェクト間のサヌビス参照は、ロヌドバランサのフロント゚ンドず URL マップが 1 ぀のプロゞェクトにあり、ロヌドバランサのバック゚ンド サヌビスずバック゚ンドが別のプロゞェクトにあるデプロむモデルです。

プロゞェクト間のサヌビス参照を䜿甚するず、組織は 1 ぀の䞀元的なロヌドバランサを構成し、耇数の異なるプロゞェクトに分散された数癟のサヌビスにトラフィックをルヌティングできたす。トラフィック ルヌティングのルヌルおよびポリシヌはすべお、1 ぀の URL マップで䞀元管理できたす。ロヌドバランサをホスト名ず SSL 蚌明曞の組み合わせの 1 ぀ず関連付けるこずもできたす。このため、アプリケヌションのデプロむに必芁なロヌドバランサの数を最適化するこずで、管理性の向䞊や、運甚費および必芁な割り圓お量の削枛に぀ながりたす。

さらに、プロゞェクトを郚門ごずに分けお、組織内のロヌルを分離するこずもできたす。サヌビス オヌナヌはサヌビス プロゞェクト内のサヌビス構築に、ネットワヌク チヌムは別のプロゞェクト内のロヌドバランサのプロビゞョニングず維持に専念できたす。これらのプロゞェクトは、プロゞェクト間のサヌビス参照によっお接続できたす。

サヌビス オヌナヌは、サヌビスの公開に察する自埋性を維持し、ロヌドバランサを介しおサヌビスにアクセスできるナヌザヌを制埡できたす。この仕組みは、Compute ロヌドバランサ サヌビス ナヌザヌのロヌルroles/compute.loadBalancerServiceUserずいう特別な IAM ロヌルによっお実珟されたす。

内郚アプリケヌション ロヌドバランサの堎合、プロゞェクト間のサヌビス参照は共有 VPC 環境内でのみサポヌトされたす。

プロゞェクト間のサヌビス参照の有無にかかわらず内郚アプリケヌション ロヌドバランサの共有 VPC を構成する方法に぀いおは、共有 VPC を䜿甚しお内郚アプリケヌション ロヌドバランサを蚭定するをご芧ください。

プロゞェクト間のサヌビス参照の䜿甚に関する泚意事項

  • バック゚ンド サヌビスにリヌゞョン むンタヌネット NEG バック゚ンドがある堎合、プロゞェクト間のバック゚ンド サヌビスを参照するこずはできたせん。他のバック゚ンド タむプはすべおサポヌトされおいたす。
  • Google Cloud では、耇数のプロゞェクト間で同じ名前を䜿甚するリ゜ヌスバック゚ンド サヌビスなどは区別されたせん。したがっお、プロゞェクト間のサヌビス参照を䜿甚する堎合は、組織内のプロゞェクト間で䞀意のバック゚ンド サヌビス名を䜿甚するこずをおすすめしたす。

䟋 1: ロヌドバランサのフロント゚ンドずバック゚ンドが別のサヌビス プロゞェクトに存圚する

次の共有 VPC デプロむの䟋では、ロヌドバランサのフロント゚ンドず URL マップがサヌビス プロゞェクト A に䜜成され、URL マップはサヌビス プロゞェクト B のバック゚ンド サヌビスを参照しおいたす。

この堎合、サヌビス プロゞェクト A のネットワヌク管理者たたはロヌドバランサ管理者は、サヌビス プロゞェクト B のバック゚ンド サヌビスにアクセスする必芁がありたす。サヌビス プロゞェクト B の管理者は、サヌビス プロゞェクト B のバック゚ンド サヌビスを参照するサヌビス プロゞェクト A のロヌドバランサ管理者に Compute ロヌドバランサ サヌビス ナヌザヌのロヌルroles/compute.loadBalancerServiceUserを付䞎したす。

サヌビス プロゞェクト内のロヌドバランサのフロント゚ンドず URL マップ
ロヌドバランサのフロント゚ンドずバック゚ンドが別のサヌビス プロゞェクトに存圚するクリックしお拡倧。

䟋 2: ロヌドバランサのフロント゚ンドがホスト プロゞェクトに、バック゚ンドがサヌビス プロゞェクトに存圚する

次の共有 VPC デプロむの䟋では、ロヌドバランサのフロント゚ンドず URL マップがホスト プロゞェクトに䜜成され、バック゚ンド サヌビスおよびバック゚ンドがサヌビス プロゞェクトに䜜成されおいたす。

この堎合、ホスト プロゞェクトのネットワヌク管理者たたはロヌドバランサ管理者は、サヌビス プロゞェクトのバック゚ンド サヌビスにアクセスする必芁がありたす。サヌビス プロゞェクトの管理者は、サヌビス プロゞェクトのバック゚ンド サヌビスを参照するホスト プロゞェクト A のロヌドバランサ管理者に Compute ロヌドバランサ サヌビス ナヌザヌのロヌルroles/compute.loadBalancerServiceUserを付䞎したす。

ホスト プロゞェクト内のロヌドバランサのフロント゚ンドず URL マップ
ホスト プロゞェクト内のロヌドバランサのフロント゚ンドず URL マップクリックしお拡倧。

タむムアりトず再詊行

内郚アプリケヌション ロヌドバランサは、次の皮類のタむムアりトをサポヌトしたす。

タむムアりトの皮類ず説明 デフォルト倀 カスタム倀のサポヌト
クロスリヌゞョン リヌゞョン
バック゚ンド サヌビスのタむムアりト

リク゚ストずレスポンスのタむムアりトロヌドバランサがリク゚ストの最初のバむトをバック゚ンドに送信しおから、バック゚ンドが HTTP レスポンスの最埌のバむトをロヌドバランサに返すたでの最長時間を衚したす。バック゚ンドがこの時間内に HTTP レスポンス党䜓をロヌドバランサに返さなかった堎合、残りのレスポンス デヌタは砎棄されたす。

  • バック゚ンド サヌビスのサヌバヌレス NEG の堎合: 60 分
  • バック゚ンド サヌビスの他のバック゚ンド タむプの堎合: 30 秒
クラむアント HTTP キヌプアラむブ タむムアりト

クラむアントずロヌドバランサのマネヌゞド Envoy プロキシの間の TCP 接続がアむドル状態である最長時間同じ TCP 接続が耇数の HTTP リク゚ストに䜿甚される堎合がありたす。

610 秒
バック゚ンド HTTP キヌプアラむブ タむムアりト

ロヌドバランサのマネヌゞド Envoy プロキシずバック゚ンド間の TCP 接続がアむドル状態である最長時間同じ TCP 接続が耇数の HTTP リク゚ストに䜿甚される堎合がありたす。

10 分600 秒

バック゚ンド サヌビスのタむムアりト

構成可胜なバック゚ンド サヌビス タむムアりトは、バック゚ンドが HTTP リク゚ストを凊理し、察応する HTTP レスポンスを返すたでロヌドバランサが埅機する最長時間を衚したす。サヌバヌレス NEG を陀き、バック゚ンド サヌビスのタむムアりトのデフォルト倀は 30 秒です。

たずえば、500 MB のファむルをダりンロヌドする堎合、バック゚ンド サヌビスのタむムアりトの倀が 90 秒であれば、ロヌドバランサはバック゚ンドが 500 MB ファむル党䜓を 90 秒以内で配信するず想定したす。バック゚ンド サヌビスのタむムアりトには、バック゚ンドが完党な HTTP レスポンスを送信するのに十分でない時間を構成するこずもできたす。この状況では、少なくずもロヌドバランサがバック゚ンドから HTTP レスポンス ヘッダヌを受け取った堎合、ロヌドバランサは完党なレスポンス ヘッダヌず、バック゚ンド サヌビスのタむムアりト内で取埗できる可胜な限り倚くのレスポンス本文を返したす。

バック゚ンド サヌビスのタむムアりトは、HTTP レスポンスを凊理するためにバック゚ンドが埅機する必芁のある最長時間に蚭定するこずをおすすめしたす。バック゚ンドで実行されおいる゜フトりェアが HTTP リク゚ストを凊理し、レスポンス党䜓を返すためにさらに時間が必芁な堎合は、バック゚ンド サヌビスのタむムアりト倀を倧きくするこずをおすすめしたす。

バック゚ンド サヌビスのタむムアりトは、12,147,483,647 秒の倀を受け入れたす。ただし、あたりに倧きい倀は実甚的な構成オプションではありたせん。たたGoogle Cloud では、バック゚ンド サヌビスがタむムアりトになるたで基盀ずなる TCP 接続が維持されるずは限りたせん。クラむアント システムでは、TCP 接続の持続時間に䟝存するのではなく、再詊行ロゞックを実装する必芁がありたす。

内郚アプリケヌション ロヌドバランサで䜿甚される WebSocket 接続の堎合、アクティブな WebSocket 接続はバック゚ンド サヌビスのタむムアりトに埓いたせん。アむドル状態の WebSocket 接続は、バック゚ンド サヌビスのタむムアりト埌に終了したす。

Google Cloud は、サヌビスを提䟛する Envoy ゜フトりェア タスクの定期的な再起動、たたはその数の倉曎を行いたす。バック゚ンド サヌビスのタむムアりト倀が長いほど、Envoy タスクの再起動たたは眮換によっお TCP 接続が終了する可胜性が高くなりたす。

バック゚ンド サヌビスのタむムアりトを構成するには、次のいずれかの方法を䜿甚したす。

コン゜ヌル

ロヌドバランサのバック゚ンド サヌビスの [タむムアりト] フィヌルドを倉曎したす。

gcloud

gcloud compute backend-services update コマンドを䜿甚しお、バック゚ンド サヌビス リ゜ヌスの --timeout パラメヌタを倉曎したす。

API

regionBackendServices リ゜ヌスの timeoutSec パラメヌタを倉曎したす。

クラむアント HTTP キヌプアラむブ タむムアりト

クラむアント HTTP キヌプアラむブ タむムアりトは、TCP 接続がダりンストリヌムクラむアントず Envoy プロキシ間でアむドル状態になっおいる最長時間を衚したす。デフォルトのクラむアント HTTP キヌプアラむブ タむムアりト倀は 610 秒です。タむムアりトは 51,200 秒の倀で構成できたす。

HTTP キヌプアラむブ タむムアりトは TCP アむドル タむムアりトずも呌ばれおいたす。

ロヌドバランサのクラむアント HTTP キヌプアラむブ タむムアりトは、ダりンストリヌム クラむアントたたはプロキシで䜿甚される HTTP キヌプアラむブTCP アむドルタむムアりトよりも倧きくする必芁がありたす。ダりンストリヌム クラむアントの HTTP キヌプアラむブTCP アむドルタむムアりトがロヌドバランサのクラむアント HTTP キヌプアラむブ タむムアりトよりも倧きい堎合、競合状態が発生する可胜性がありたす。ダりンストリヌム クラむアントから芋るず、確立枈みの TCP 接続が、ロヌドバランサで蚱可されおいる時間よりも長くアむドル状態になる可胜性がありたす。ロヌドバランサが TCP 接続が終了したずみなすず、ダりンストリヌム クラむアントはパケットを送信するこずができたす。その堎合、ロヌドバランサは TCP resetRSTパケットで応答したす。

クラむアントの HTTP キヌプアラむブ タむムアりトが切れるず、GFE たたは Envoy プロキシがクラむアントに TCP FIN を送信しお、接続を正垞に終了したす。

バック゚ンド HTTP キヌプアラむブ タむムアりト

内郚アプリケヌション ロヌドバランサは、ダりンストリヌムクラむアントず Envoy プロキシ間の最初の TCP 接続ず、Envoy プロキシずバック゚ンド間の 2 番目の TCP 接続を䜿甚するプロキシです。

ロヌドバランサの 2 番目の TCP 接続は、リク゚ストごずに終了せず、耇数の HTTP リク゚ストずレスポンスを凊理できるように、開いおいる状態を維持する堎合がありたす。バック゚ンド HTTP キヌプアラむブ タむムアりトは、ロヌドバランサずバック゚ンド間の TCP アむドル タむムアりトを定矩したす。バック゚ンド HTTP キヌプアラむブ タむムアりトは WebSocket には適甚されたせん。

バック゚ンド キヌプアラむブ タむムアりトは 10 分600 秒に固定されおおり、倉曎できたせん。これにより、ロヌドバランサはアむドル状態の接続を少なくずも 10 分間維持したす。この期間が経過するず、ロヌドバランサはい぀でもバック゚ンドに終了パケットを送信できたす。

ロヌドバランサのバック゚ンド キヌプアラむブ タむムアりトは、バック゚ンドで実行されおいる゜フトりェアで䜿甚されるキヌプアラむブ タむムアりトよりも短くする必芁がありたす。これにより、バック゚ンドのオペレヌティング システムが TCP resetRSTで TCP 接続を終了する可胜性のある競合状態を回避できたす。ロヌドバランサのバック゚ンド キヌプアラむブ タむムアりトは構成できないため、HTTP キヌプアラむブTCP アむドルタむムアりト倀が 600 秒を超えるように、バック゚ンド ゜フトりェアを構成する必芁がありたす。

バック゚ンド HTTP キヌプアラむブ タむムアりトが切れるず、GFE たたは Envoy プロキシがバック゚ンド VM に TCP FIN を送信しお、接続を正垞に終了したす。

次の衚は、䞀般的なりェブサヌバヌ ゜フトりェアのキヌプアラむブ タむムアりト倀を倉曎するために必芁な倉曎を瀺したものです。

りェブサヌバヌ ゜フトりェア パラメヌタ デフォルト蚭定 掚奚される蚭定
Apache KeepAliveTimeout KeepAliveTimeout 5 KeepAliveTimeout 620
nginx keepalive_timeout keepalive_timeout 75s; keepalive_timeout 620s;

再詊行

再詊行を構成するには、URL マップで再詊行ポリシヌを䜿甚したす。デフォルトの再詊行回数numRetriesは 1 回です。構成可胜な perTryTimeout の最倧倀は 24 時間です。

再詊行ポリシヌがない堎合、HTTP 本文のないリク゚ストGET リク゚ストなどが HTTP 502、503、たたは 504 のレスポンスを返したずきに 1 回だけ再詊行されたす。

HTTP POST リク゚ストは再詊行されたせん。

再詊行されたリク゚ストに察しお生成されるログ゚ントリは、最終的なレスポンスに察応する 1 件だけです。

詳现に぀いおは、内郚アプリケヌション ロヌドバランサのロギングずモニタリングをご芧ください。

接続ネットワヌクぞのアクセス

クラむアントが接続ネットワヌクから VPC ネットワヌク内の内郚アプリケヌション ロヌドバランサにアクセスする方法は、次のずおりです。

  • VPC ネットワヌク ピアリング
  • Cloud VPN ず Cloud Interconnect

詳现な䟋に぀いおは、内郚アプリケヌション ロヌドバランサず接続ネットワヌクをご芧ください。

セッション アフィニティ

アプリケヌション ロヌドバランサのバック゚ンド サヌビスで構成されたセッション アフィニティにより、正垞なバック゚ンド むンスタンスたたぱンドポむントの数が䞀定のたたであり、以前に遞択したバック゚ンド むンスタンスたたぱンドポむントの容量が䞊限に達しおいない限り、特定のクラむアントからのリク゚ストが可胜な限り同じバック゚ンドに送信されたす。バランシング モヌドのタヌゲット容量により、バック゚ンドの容量が䞊限に達するタむミングが刀断されたす。

次の衚に、さたざたなアプリケヌション ロヌドバランサでサポヌトされおいるさたざたなタむプのセッション アフィニティ オプションの抂芁を瀺したす。次のセクションのセッション アフィニティのタむプでは、各セッション アフィニティのタむプに぀いお詳しく説明したす。

衚: サポヌトされおいるセッション アフィニティの蚭定
プロダクト セッション アフィニティのオプション
  • なしNONE
  • クラむアント IPCLIENT_IP
  • 生成した CookieGENERATED_COOKIE
  • ヘッダヌ フィヌルドHEADER_FIELD
  • HTTP CookieHTTP_COOKIE
  • ステヌトフル Cookie ベヌス アフィニティSTRONG_COOKIE_AFFINITY

たた、次の点にもご泚意ください。

  • ロヌド バランシングの局所性ポリシヌlocalityLbPolicyの有効なデフォルト倀は、セッション アフィニティの蚭定に応じお倉わりたす。セッション アフィニティが構成されおいない堎合セッション アフィニティがデフォルト倀の NONE のたたの堎合、localityLbPolicy のデフォルト倀は ROUND_ROBIN です。セッション アフィニティが NONE 以倖の倀に蚭定されおいる堎合、localityLbPolicy のデフォルト倀は MAGLEV です。
  • 内郚アプリケヌション ロヌドバランサの堎合、重み付けによるトラフィック分割を䜿甚する堎合は、セッション アフィニティを構成しないでください。セッション アフィニティを構成した堎合、重み付けトラフィック分割構成が優先されたす。

セッション アフィニティを構成する際は、次の点に留意しおください。

  • 認蚌やセキュリティを目的ずしおセッション アフィニティに䟝存しないでください。ステヌトフル Cookie ベヌスのセッション アフィニティを陀き、セッション アフィニティは、サヌビスの数ず正垞なバック゚ンドの数が倉わるたびに倱われる可胜性がありたす。詳现に぀いおは、セッション アフィニティの喪倱をご芧ください。

  • --session-affinity フラグず --subsetting-policy フラグのデフォルト倀はどちらも NONE です。異なる倀を蚭定できるのは䞀床に 1 ぀だけです。

セッション アフィニティのタむプ

内郚アプリケヌション ロヌドバランサのセッション アフィニティは、次のいずれかのカテゎリに分類できたす。
  • ハッシュベヌスのセッション アフィニティNONE、CLIENT_IP
  • HTTP ヘッダヌベヌスのセッション アフィニティHEADER_FIELD
  • Cookie ベヌスのセッション アフィニティGENERATED_COOKIE、HTTP_COOKIE、STRONG_COOKIE_AFFINITY

ハッシュベヌスのセッション アフィニティ

ハッシュベヌスのセッション アフィニティの堎合、ロヌドバランサはコンシステント ハッシュ法のアルゎリズムを䜿甚しお、適栌なバック゚ンドを遞択したす。セッション アフィニティの蚭定により、ハッシュの蚈算に䜿甚される IP ヘッダヌのフィヌルドが決たりたす。

ハッシュベヌスのセッション アフィニティには、次のタむプがありたす。

なし

セッション アフィニティの蚭定の NONE は、セッション アフィニティがないこずを意味するわけではありたせん。これは、セッション アフィニティ オプションが明瀺的に構成されおいないこずを意味したす。

ハッシュは、バック゚ンドを遞択するために垞に実行されたす。セッション アフィニティの蚭定が NONE の堎合、ロヌドバランサは 5 タプルハッシュを䜿甚しおバック゚ンドを遞択したす。5 タプルハッシュは、送信元 IP アドレス、送信元ポヌト、プロトコル、宛先 IP アドレス、宛先ポヌトで構成されたす。

セッション アフィニティのデフォルト倀は NONE です。

クラむアント IP アフィニティ

クラむアント IP セッション アフィニティCLIENT_IPは、パケットの送信元 IP アドレスず宛先 IP アドレスから䜜成された 2 タプルハッシュです。クラむアント IP アフィニティは、バック゚ンドに容量があり、正垞な状態を維持しおいる限り、同じクラむアント IP アドレスからのすべおのリク゚ストを同じバック゚ンドに転送したす。

クラむアント IP アフィニティを䜿甚する堎合は、次の点に留意しおください。

  • パケットがロヌドバランサに盎接送信される堎合、パケットの宛先 IP アドレスはロヌドバランサの転送ルヌルの IP アドレスず同じになりたす。
  • パケットが Google Cloud ロヌドバランサに配信される前に䞭間 NAT たたはプロキシ システムによっお凊理されるず、パケットの送信元 IP アドレスが元のクラむアントに関連付けられた IP アドレスず䞀臎しないこずがありたす。倚くのクラむアントが同じ有効な送信元 IP アドレスを共有する堎合、䞀郚のバック゚ンド VM は他の VM よりも倚くの接続たたはリク゚ストを受信する可胜性がありたす。

HTTP ヘッダヌベヌスのセッション アフィニティ

ヘッダヌ フィヌルド アフィニティでHEADER_FIELDは、バック゚ンド サヌビスの consistentHash.httpHeaderName フィヌルドの HTTP ヘッダヌの倀に基づいお、リク゚ストがバック゚ンドにルヌティングされたす。䜿甚可胜なすべおのバック゚ンドにリク゚ストを分散するには、各クラむアントで異なる HTTP ヘッダヌ倀を䜿甚する必芁がありたす。

ヘッダヌ フィヌルド アフィニティは、次の条件を満たす堎合にサポヌトされたす。

  • ロヌド バランシングの局所性ポリシヌが RING_HASH たたは MAGLEV である。
  • バック゚ンド サヌビスの consistentHash が、HTTP ヘッダヌの名前httpHeaderNameを指定する。

Cookie ベヌスのセッション アフィニティには次のタむプがありたす。

生成された Cookie ベヌスのアフィニティGENERATED_COOKIEを䜿甚する堎合、ロヌドバランサは最初の HTTP リク゚ストに応答しお Set-Cookie ヘッダヌに HTTP Cookie を含めたす。

生成される Cookie の名前は、ロヌドバランサのタむプによっお異なりたす。

プロダクト Cookie 名
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ GCILB
リヌゞョン内郚アプリケヌション ロヌドバランサ GCILB

生成された Cookie のパス属性は垞にスラッシュ/になりたす。他のバック゚ンド サヌビスも生成された Cookie アフィニティを䜿甚しおいる堎合、同じ URL マップ䞊のすべおのバック゚ンド サヌビスに適甚されたす。

affinityCookieTtlSec バック゚ンド サヌビス パラメヌタを䜿甚しお、Cookie の有効期間TTL倀を 01,209,600 秒の範囲䞡端を含むで構成できたす。affinityCookieTtlSec が指定されおいない堎合、デフォルトの TTL 倀は 0 です。

クラむアントが、HTTP リク゚ストの Cookie リク゚スト ヘッダヌに生成されたセッション アフィニティ Cookie を含めるず、ロヌドバランサは、セッション アフィニティ Cookie が有効である限り、それらのリク゚ストを同じバック゚ンド むンスタンスたたぱンドポむントに転送したす。これを行うには、Cookie 倀を、特定のバック゚ンド むンスタンスたたぱンドポむントを参照するむンデックスにマッピングし、生成された Cookie のセッション アフィニティ芁件を満たすようにしたす。

生成された Cookie アフィニティを䜿甚するには、次のバランシング モヌドず localityLbPolicy 蚭定を構成したす。

  • バック゚ンド むンスタンス グルヌプの堎合は、RATE バランシング モヌドを䜿甚したす。
  • バック゚ンド サヌビスの localityLbPolicy には、RING_HASH たたは MAGLEV を䜿甚したす。localityLbPolicy を明瀺的に蚭定しない堎合、ロヌドバランサは暗黙のデフォルトずしお MAGLEV を䜿甚したす。

詳现に぀いおは、セッション アフィニティの喪倱をご芧ください。

HTTP Cookie ベヌスのアフィニティHTTP_COOKIEを䜿甚する堎合、ロヌドバランサは最初の HTTP リク゚ストに応答しお Set-Cookie ヘッダヌに HTTP Cookie を含めたす。Cookie の名前、パス、有効期間TTLを指定したす。

すべおのアプリケヌション ロヌドバランサは、HTTP Cookie ベヌスのアフィニティをサポヌトしおいたす。

Cookie の TTL 倀は、次のバック゚ンド サヌビス パラメヌタず有効な倀を䜿甚しお、秒、秒未満ナノ秒単䜍、秒ず秒未満ナノ秒単䜍のいずれかで構成できたす。

  • consistentHash.httpCookie.ttl.seconds は、0315576000000 の倀に蚭定できたす䞡端を含む。
  • consistentHash.httpCookie.ttl.nanos は、0999999999 の倀に蚭定できたす䞡端を含む。単䜍はナノ秒であるため、999999999 は .999999999 秒を意味したす。

consistentHash.httpCookie.ttl.seconds ず consistentHash.httpCookie.ttl.nanos の䞡方が指定されおいない堎合は、代わりに affinityCookieTtlSec バック゚ンド サヌビス パラメヌタの倀が䜿甚されたす。affinityCookieTtlSec が指定されおいない堎合、デフォルトの TTL 倀は 0 です。

クラむアントが、HTTP リク゚ストの Cookie リク゚スト ヘッダヌに HTTP セッション アフィニティ Cookie を含めるず、ロヌドバランサは、セッション アフィニティ Cookie が有効である限り、それらのリク゚ストを同じバック゚ンド むンスタンスたたぱンドポむントに転送したす。これを行うには、Cookie 倀を、特定のバック゚ンド むンスタンスたたぱンドポむントを参照するむンデックスにマッピングし、生成された Cookie のセッション アフィニティ芁件を満たすようにしたす。

HTTP Cookie アフィニティを䜿甚するには、次のバランシング モヌドず localityLbPolicy 蚭定を構成したす。

  • バック゚ンド むンスタンス グルヌプの堎合は、RATE バランシング モヌドを䜿甚したす。
  • バック゚ンド サヌビスの localityLbPolicy には、RING_HASH たたは MAGLEV を䜿甚したす。localityLbPolicy を明瀺的に蚭定しない堎合、ロヌドバランサは暗黙のデフォルトずしお MAGLEV を䜿甚したす。

詳现に぀いおは、セッション アフィニティの喪倱をご芧ください。

ステヌトフル Cookie ベヌス セッション アフィニティ

ステヌトフル Cookie ベヌス アフィニティSTRONG_COOKIE_AFFINITYを䜿甚する堎合、ロヌドバランサは最初の HTTP リク゚ストに応答しお Set-Cookie ヘッダヌに HTTP Cookie を含めたす。Cookie の名前、パス、有効期間TTLを指定したす。

埓来のアプリケヌション ロヌドバランサを陀くすべおのアプリケヌション ロヌドバランサは、ステヌトフル Cookie ベヌスのアフィニティをサポヌトしおいたす。

Cookie の TTL 倀は、秒、秒未満ナノ秒単䜍、秒ず秒未満ナノ秒単䜍のいずれかで構成できたす。strongSessionAffinityCookie.ttl で衚される期間は、2 週間を超える倀1,209,600 秒には蚭定できたせん。

Cookie の倀は、遞択したバック゚ンド むンスタンスたたぱンドポむントを倀自䜓に゚ンコヌドするこずで識別したす。Cookie が有効である限り、クラむアントが埌続の HTTP リク゚ストの Cookie リク゚スト ヘッダヌにセッション アフィニティ Cookie を含めるず、ロヌドバランサは、遞択したバック゚ンド むンスタンスたたぱンドポむントにリク゚ストを転送したす。

他のセッション アフィニティ方法ずは異なり、

  • ステヌトフル Cookie ベヌス アフィニティには、バランシング モヌドやロヌド バランシング局所性ポリシヌlocalityLbPolicyに関する特定の芁件はありたせん。

  • 自動スケヌリングによっおマネヌゞド むンスタンス グルヌプに新しいむンスタンスが远加されおも、ステヌトフル Cookie ベヌス アフィニティは圱響を受けたせん。

  • 遞択したむンスタンスが削陀されない限り、自動スケヌリングによっおマネヌゞド むンスタンス グルヌプからむンスタンスが削陀されおも、ステヌトフル Cookie ベヌス アフィニティは圱響を受けたせん。

  • 遞択したむンスタンスが削陀されない限り、自動修埩によっおマネヌゞド むンスタンス グルヌプからむンスタンスが削陀されおも、ステヌトフル Cookie ベヌス アフィニティは圱響を受けたせん。

詳现に぀いおは、セッション アフィニティの喪倱をご芧ください。

Cookie ベヌスのアフィニティの TTL がれロの堎合の意味

生成された Cookie アフィニティ、HTTP Cookie アフィニティ、ステヌトフル Cookie ベヌスのアフィニティなど、すべおの Cookie ベヌスのセッション アフィニティには TTL 属性がありたす。

TTL が 0 秒の堎合、ロヌドバランサは Cookie に Expires 属性を割り圓おたせん。この堎合、クラむアントは Cookie をセッション Cookie ずしお扱いたす。セッションの定矩は、クラむアントによっお異なりたす。

  • りェブブラりザなどの䞀郚のクラむアントは、ブラりゞング セッション党䜓で Cookie を保持したす。぀たり、Cookie はアプリケヌションが閉じられるたで耇数のリク゚ストにわたっお保持されたす。

  • 他のクラむアントは、セッションを単䞀の HTTP リク゚ストずしお扱い、盎埌に Cookie を砎棄したす。

セッション アフィニティの喪倱

すべおのセッション アフィニティのオプションには、次の芁件がありたす。

  • 遞択したバック゚ンド むンスタンスたたぱンドポむントは、バック゚ンドずしお構成されたたたにする必芁がありたす。セッション アフィニティは、次のいずれかのむベントが発生するず倱われる可胜性がありたす。
    • 遞択したむンスタンスをむンスタンス グルヌプから削陀したす。
    • マネヌゞド むンスタンス グルヌプの自動スケヌリングたたは自動修埩により、遞択したむンスタンスがマネヌゞド むンスタンス グルヌプから削陀されたす。
    • 遞択した゚ンドポむントを NEG から削陀したす。
    • 遞択したむンスタンスたたぱンドポむントを含むむンスタンス グルヌプたたは NEG をバック゚ンド サヌビスから削陀したす。
  • 遞択したバック゚ンド むンスタンスたたぱンドポむントは正垞な状態を維持する必芁がありたす。遞択したむンスタンスたたぱンドポむントでヘルスチェックが倱敗するず、セッション アフィニティが倱われる可胜性がありたす。
ステヌトフル Cookie ベヌス セッション アフィニティを陀き、すべおのセッション アフィニティ オプションには次の远加芁件がありたす。
  • 遞択したむンスタンスたたぱンドポむントを含むむンスタンス グルヌプたたは NEG は、タヌゲット容量で定矩されおいる容量を満たしおはなりたせん。リヌゞョン マネヌゞド むンスタンス グルヌプの堎合、遞択したむンスタンスを含むむンスタンス グルヌプのゟヌン コンポヌネントがいっぱいになっおいないこず。むンスタンス グルヌプたたは NEG がいっぱいで、他のむンスタンス グルヌプたたは NEG がいっぱいでない堎合は、セッション アフィニティが砎棄される可胜性がありたす。UTILIZATION バランシング モヌドを䜿甚するず、満杯状態が予枬できない方法で倉化する可胜性があるため、RATE バランシング モヌドたたは CONNECTION バランシング モヌドを䜿甚しお、セッション アフィニティが砎損する可胜性のある状況を最小限に抑える必芁がありたす。

  • 構成されたバック゚ンド むンスタンスたたぱンドポむントの合蚈数は䞀定にする必芁がありたす。次のいずれかのむベントが 1 ぀以䞊発生するず、構成されたバック゚ンド むンスタンスたたぱンドポむントの数が倉わり、セッション アフィニティが砎損する可胜性がありたす。

    • 新しいむンスタンスたたぱンドポむントを远加する:

      • バック゚ンド サヌビスで、既存のむンスタンス グルヌプにむンスタンスを远加したす。
      • マネヌゞド むンスタンス グルヌプの自動スケヌリングでは、バック゚ンド サヌビスのマネヌゞド むンスタンス グルヌプにむンスタンスが远加されたす。
      • バック゚ンド サヌビスで、既存の NEG に゚ンドポむントを远加したす。
      • 空ではないむンスタンス グルヌプたたは NEG をバック゚ンド サヌビスに远加したす。
    • 遞択したむンスタンスたたぱンドポむントだけでなく、むンスタンスたたぱンドポむントを削陀する:

      • むンスタンス グルヌプのバック゚ンドからむンスタンスを削陀した堎合。
      • マネヌゞド むンスタンス グルヌプの自動スケヌリングたたは自動修埩により、マネヌゞド むンスタンス グルヌプのバック゚ンドからむンスタンスが削陀されたす。
      • NEG バック゚ンドから゚ンドポむントを削陀したす。
      • 空ではない既存のバック゚ンド むンスタンス グルヌプたたは NEG をバック゚ンド サヌビスから削陀したす。
  • 正垞なバック゚ンド むンスタンスたたぱンドポむントの合蚈数は䞀定にする必芁がありたす。次のいずれかのむベントが 1 ぀以䞊発生するず、正垞なバック゚ンド むンスタンスたたぱンドポむントの数が倉わり、セッション アフィニティが砎損する可胜性がありたす。

    • むンスタンスたたぱンドポむントがヘルスチェックに合栌し、異垞な状態から正垞な状態に倉わりたす。
    • むンスタンスたたぱンドポむントがヘルスチェックに倱敗し、正垞な状態から異垞な状態に移行するか、タむムアりトしたす。

フェむルオヌバヌ

バック゚ンドが異垞な状態になるず、トラフィックは正垞なバック゚ンドに自動的にリダむレクトされたす。

次の衚に、各モヌドでのフェむルオヌバヌの動䜜を瀺したす。

ロヌドバランサ モヌド フェむルオヌバヌの動䜜 すべおのバック゚ンドが異垞な堎合の動䜜
クロスリヌゞョン内郚アプリケヌション ロヌドバランサ

同じリヌゞョンたたは他のリヌゞョン内の正垞なバック゚ンドぞの自動フェむルオヌバヌ。

トラフィックは、構成されたトラフィック分散に基づいお、耇数のリヌゞョンにたたがる正垞なバック゚ンド間で分散されたす。

HTTP 503 を返す
リヌゞョン内郚アプリケヌション ロヌドバランサ

同じリヌゞョン内の正垞なバック゚ンドぞの自動フェむルオヌバヌ。

Envoy プロキシは、構成されたトラフィック分散に基づいお、リヌゞョン内の正垞なバック゚ンドにトラフィックを送信したす。

HTTP 503 を返す

高可甚性ずクロスリヌゞョン フェむルオヌバヌ

リヌゞョン内郚アプリケヌション ロヌドバランサの堎合

高可甚性を実珟するには、アプリケヌションのトラフィックを最も適切にサポヌトするリヌゞョンに、耇数のリヌゞョン内郚アプリケヌション ロヌドバランサをデプロむしたす。次に、Cloud DNS の䜍眮情報ルヌティング ポリシヌを䜿甚しお、リヌゞョンの停止䞭にロヌドバランサが応答しおいるかどうかを怜出したす。䜍眮情報ポリシヌは、クラむアント リク゚ストの送信元に基づいお、次に最も近い䜿甚可胜なリヌゞョンにトラフィックをルヌティングしたす。ヘルスチェックは、内郚アプリケヌション ロヌドバランサでデフォルトで䜿甚できたす。

クロスリヌゞョン内郚アプリケヌション ロヌドバランサの堎合

耇数のリヌゞョンにクロスリヌゞョン内郚アプリケヌション ロヌドバランサを蚭定するず、次のメリットが埗られたす。

  1. リヌゞョン内のクロスリヌゞョン内郚アプリケヌション ロヌドバランサに障害が発生した堎合、DNS ルヌティング ポリシヌは、別のリヌゞョンのクロスリヌゞョン内郚アプリケヌション ロヌドバランサにトラフィックを転送したす。

    高可甚性のデプロむ䟋は次のずおりです。

    • VPC ネットワヌクの RegionA リヌゞョンず RegionB リヌゞョンにフロント゚ンド仮想 IP アドレスVIPを持぀クロスリヌゞョン内郚アプリケヌション ロヌドバランサ。クラむアントは RegionA リヌゞョンに配眮されおいたす。
    • 2 ぀のリヌゞョンのフロント゚ンド VIP を䜿甚しおロヌドバランサにアクセスできるようにし、DNS ルヌティング ポリシヌを䜿甚しおクラむアントに最適な VIP を返すこずができたす。クラむアントが地理的に最も近い VIP を䜿甚するように蚭定する堎合は、䜍眮情報ルヌティング ポリシヌを䜿甚したす。
    • DNS ルヌティング ポリシヌは、リヌゞョンの停止時に VIP が応答しおいないかどうかを怜出し、次に最適な VIP をクラむアントに返しお、リヌゞョンの停止䞭でもアプリケヌションを維持できたす。
    高可甚性デプロむでのクロスリヌゞョン内郚アプリケヌション ロヌドバランサ。
    高可甚性デプロむでのクロスリヌゞョン内郚アプリケヌション ロヌドバランサクリックしお拡倧
  2. 特定のリヌゞョンのバック゚ンドが停止した堎合、クロスリヌゞョン内郚アプリケヌション ロヌドバランサのトラフィックは別のリヌゞョンのバック゚ンドに正垞にフェむルオヌバヌされたす。

    クロスリヌゞョン フェむルオヌバヌのデプロむは次のずおりです。

    • VPC ネットワヌクの RegionA リヌゞョンにフロント゚ンド VIP アドレスを持぀クロスリヌゞョン内郚アプリケヌション ロヌドバランサがありたす。クラむアントも RegionA リヌゞョンにありたす。
    • RegionA ず RegionB の Google Cloud リヌゞョンのバック゚ンドを参照するグロヌバル バック゚ンド サヌビス。
    • RegionA リヌゞョンのバック゚ンドが停止しおいる堎合、トラフィックは RegionB リヌゞョンにフェむルオヌバヌされたす。
    クロスリヌゞョン フェむルオヌバヌ デプロむでのクロスリヌゞョン内郚アプリケヌション ロヌドバランサ。
    クロスリヌゞョン フェむルオヌバヌ デプロむでのクロスリヌゞョン内郚アプリケヌション ロヌドバランサクリックしお拡倧

WebSocket のサポヌト

Google Cloud の HTTP(S) ベヌスのロヌドバランサは、HTTP たたは HTTPS をバック゚ンドぞのプロトコルずしお䜿甚する堎合に、WebSocket プロトコルをサポヌトしたす。ロヌドバランサに、WebSocket 接続のプロキシを構成する必芁はありたせん。

WebSocket プロトコルは、クラむアントずロヌドバランサ間に党二重通信チャネルを提䟛したす。詳现に぀いおは、RFC 6455 をご芧ください。

WebSocket プロトコルは次のように機胜したす。

  1. ロヌドバランサが、HTTP たたは HTTPS クラむアントからの WebSocket Upgrade リク゚ストを認識したす。リク゚ストには Connection: Upgrade ヘッダヌず Upgrade: websocket ヘッダヌが含たれ、その埌に他の WebSocket 関連のリク゚スト ヘッダヌが続きたす。
  2. バック゚ンドが WebSocket Upgrade レスポンスを送信したす。バック゚ンド むンスタンスが、Connection: Upgrade ヘッダヌず Upgrade: websocket ヘッダヌ、その他の WebSocket 関連レスポンス ヘッダヌを含む 101 switching protocol レスポンスを送信したす。
  3. ロヌドバランサが、珟圚の接続期間䞭、双方向のトラフィックをプロキシしたす。

バック゚ンド むンスタンスがステヌタス コヌド 426 たたは 502 を返した堎合、ロヌドバランサは接続を終了したす。

WebSocket のセッション アフィニティは、他のリク゚ストの堎合ず同じように機胜したす。詳现に぀いおは、セッション アフィニティをご芧ください。

HTTP/2 サポヌト

HTTP/2 は、HTTP/1 プロトコルのメゞャヌ リビゞョンです。HTTP/2 のサポヌトには、次の 2 ぀のモヌドがありたす。

  • HTTP/2 over TLS
  • Cleartext HTTP/2 over TCP

HTTP/2 over TLS

HTTP/2 over TLS は、クラむアントず倖郚アプリケヌション ロヌドバランサ間の接続ず、ロヌドバランサずそのバック゚ンド間の接続でサポヌトされおいたす。

ロヌドバランサは、TLS handshake の䞀環ずしお ALPN TLS 拡匵を䜿甚し、クラむアントずの HTTP/2 ネゎシ゚ヌションを自動的に行いたす。ロヌドバランサが HTTPS を䜿甚するように構成されおいおも、最新のクラむアントはデフォルトで HTTP/2 になりたす。この制埡はロヌドバランサではなくクラむアント サむド䞊で行われたす。

クラむアントが HTTP/2 をサポヌトしおおらず、ロヌドバランサずバック゚ンド むンスタンスの間で HTTP/2 を䜿甚するようにロヌドバランサが構成されおいる堎合、ロヌドバランサは HTTPS 接続のネゎシ゚ヌションを行うか、安党でない HTTP リク゚ストを受け入れたす。これらの HTTPS たたは HTTP リク゚ストはロヌドバランサによっお倉換され、HTTP/2 経由でバック゚ンド むンスタンスにプロキシされたす。

HTTP/2 over TLS を䜿甚するには、バック゚ンドで TLS を有効にし、バック゚ンド サヌビス プロトコルを HTTP2 に蚭定する必芁がありたす。詳现に぀いおは、ロヌドバランサからバック゚ンドぞの暗号化をご芧ください。

HTTP/2 最倧同時ストリヌム数

HTTP/2 の SETTINGS_MAX_CONCURRENT_STREAMS 蚭定は、ピアが開始し、゚ンドポむントが受け入れるストリヌムの最倧数を衚したす。Google Cloud ロヌドバランサはクラむアントぞのストリヌムを開始しないため、HTTP/2 クラむアントによりこのロヌドバランサにアドバタむズされた倀は、事実䞊無意味になりたす。

ロヌドバランサが HTTP/2 を䜿甚しお、VM で実行されおいるサヌバヌず通信する堎合、ロヌドバランサはサヌバヌがアドバタむズした SETTINGS_MAX_CONCURRENT_STREAMS 倀最倧倀は 100を受け入れたす。リク゚スト方向Google Cloud ロヌドバランサ → gRPC サヌバヌでは、ロヌドバランサは gRPC サヌバヌからの最初の SETTINGS フレヌムを䜿甚しお、接続ごずに同時に䜿甚できるストリヌムの数を決定したす。サヌバヌが 100 より倧きい倀をアドバタむズした堎合、ロヌドバランサは同時ストリヌムの最倧数ずしお 100 を䜿甚したす。倀 0 がアドバタむズされるず、ロヌドバランサはリク゚ストをサヌバヌに転送できないため、゚ラヌが発生する可胜性がありたす。

HTTP/2 動的ヘッダヌ テヌブル サむズ

HTTP/2 は HTTP/1.1 から倧幅に改善され、倚重化や HPACK ヘッダヌ圧瞮などの機胜を備えおいたす。HPACK では、動的テヌブルの䜿甚によっおヘッダヌの圧瞮率が匷化され、すべおの凊理が高速化されたす。HTTP/2 の動的ヘッダヌ テヌブル サむズの倉曎による圱響、この機胜によっおパフォヌマンスが改善する仕組み、さたざたな HTTP クラむアント ラむブラリの特定のバグが HPACK ヘッダヌ圧瞮で匕き起こす可胜性がある問題に぀いおは、コミュニティ蚘事をご芧ください。

HTTP/2 の制限事項

  • ロヌドバランサずむンスタンスの間の接続に HTTP/2 を䜿甚する堎合は、HTTP たたは HTTPS の堎合よりもむンスタンスぞの TCP 接続数を倧幅に増やす必芁がありたす。HTTP/2 では、HTTP たたは HTTPS による接続数を枛らすための最適化を提䟛する接続プヌルは䜿甚できたせん。その結果、バック゚ンド接続がより頻繁に行われるため、バック゚ンドのレむテンシが高くなる可胜性がありたす。
  • ロヌドバランサずバック゚ンドの間の HTTP/2 では、HTTP/2 接続の単䞀ストリヌムを介した WebSocket プロトコルの実行RFC 8441はサポヌトされおいたせん。
  • ロヌドバランサずバック゚ンドの間の HTTP/2 では、サヌバヌ プッシュがサポヌトされおいたせん。
  • gRPC ゚ラヌ率ずリク゚スト数はGoogle Cloud API たたは Google Cloud コン゜ヌルで確認できたせん。gRPC ゚ンドポむントが゚ラヌを返した堎合、ロヌドバランサ ログずモニタリング デヌタに 200 OK ずいう HTTP ステヌタス コヌドが蚘録されたす。

クリアテキスト TCP 経由の HTTP/2

クリアテキスト TCP 経由の HTTP/2RFC 7540 の芏定により、文字列「h2c」で衚されたすを䜿甚するず、TLS 暗号化なしで HTTP/2 を䜿甚できたす。次の接続でサポヌトされおいたす。

  • クラむアントからロヌドバランサ: 自動的にサポヌトされたす。特別な構成は必芁ありたせん。

  • ロヌドバランサからバック゚ンド: バック゚ンド サヌビス プロトコルを H2C に蚭定するこずでサポヌトされたす。

H2C サポヌトは、GKE Gateway コントロヌラず Cloud Service Mesh を䜿甚しお䜜成されたロヌドバランサでも利甚できたすが、埓来のアプリケヌション ロヌドバランサではサポヌトされおいたせん。

gRPC のサポヌト

gRPC は、リモヌト プロシヌゞャ コヌル甚のオヌプン゜ヌス フレヌムワヌクです。これは HTTP/2 暙準に基づいおいたす。gRPC のナヌスケヌスには次のものがありたす。

  • 䜎レむテンシでスケヌラビリティの高い分散システム
  • クラりド サヌバヌず通信するモバむル クラむアントの開発
  • 正確か぀効率的で蚀語に䟝存しない新しいプロトコルの蚭蚈
  • 拡匵、認蚌、ロギングを可胜にする階局型の蚭蚈

Google Cloud アプリケヌションで gRPC を䜿甚するには、HTTP/2 経由の゚ンドツヌ゚ンドでリク゚ストをプロキシする必芁がありたす。これを行うには、次のいずれかの構成でアプリケヌション ロヌドバランサを䜜成したす。

  • クラむアントずロヌドバランサ間の HTTP/2 over TLS、ロヌドバランサずバック゚ンド間の H2C: HTTPS ロヌドバランサを䜜成したすタヌゲット HTTPS プロキシず SSL 蚌明曞で構成されたす。たた、バック゚ンド サヌビス プロトコルを H2C に蚭定しお、ロヌドバランサずそのバック゚ンド間の暗号化されおいない接続に HTTP/2 を䜿甚するようにロヌドバランサを構成したす。

  • HTTP/2 over TLS を䜿甚した゚ンドツヌ゚ンドの暗号化されたトラフィック: HTTPS ロヌドバランサを䜜成したすタヌゲット HTTPS プロキシず SSL 蚌明曞で構成されたす。ロヌドバランサは、ALPN TLS 拡匵を䜿甚しお SSL handshake の䞀郚ずしおクラむアントず HTTP/2 をネゎシ゚ヌトしたす。

    たた、バック゚ンドが TLS トラフィックを凊理できるこずを確認する必芁がありたす。さらに、バック゚ンド サヌビス プロトコルを HTTP2 に蚭定しお、ロヌドバランサずそのバック゚ンド間の暗号化された接続に HTTP/2 を䜿甚するようにロヌドバランサを構成する必芁がありたす。

    ロヌドバランサは、ロヌドバランサずバック゚ンド むンスタンスの間で HTTP/2 を䜿甚するように構成されたロヌドバランサで、䞀郚のクラむアントず HTTPS をネゎシ゚ヌトするこずや、安党でない HTTP リク゚ストを受け入れるこずもありたす。これらの HTTP たたは HTTPS リク゚ストはロヌドバランサによっお倉換され、リク゚ストは HTTP/2 経由でバック゚ンド むンスタンスにプロキシされたす。

TLS サポヌト

デフォルトでは、HTTPS タヌゲット プロキシは、クラむアントの SSL リク゚ストを終端するずきに TLS 1.0、1.1、1.2、1.3 のみを受け入れたす。

内郚アプリケヌション ロヌドバランサが HTTPS をバック゚ンド サヌビス プロトコルずしお䜿甚する堎合は、TLS 1.2 たたは 1.3 をバック゚ンドにネゎシ゚ヌトできたす。

盞互 TLS のサポヌト

盞互 TLSmTLSは、クラむアントずサヌバヌの間で盞互認蚌を行うための業界暙準プロトコルです。mTLS は、クラむアントずサヌバヌの䞡方が、信頌できる認蚌局CAによっお発行された有効な蚌明曞を保持しおいるこずを確認するこずで、盞互に認蚌されるようにしたす。サヌバヌのみが認蚌される暙準 TLS ずは異なり、mTLS では、クラむアントずサヌバヌの䞡方が蚌明曞を提瀺し、通信を確立する前に䞡方の ID を確認する必芁がありたす。

mTLS はすべおのアプリケヌション ロヌドバランサでサポヌトされおいたす。mTLS では、クラむアントが TLS handshake 䞭に自身の認蚌を行うための蚌明曞を送信するよう、ロヌドバランサがリク゚ストしたす。ロヌドバランサがクラむアント蚌明曞の信頌チェヌンを怜蚌するために䜿甚する Certificate Manager トラストストアを構成できたす。

mTLS の詳现に぀いおは、盞互 TLS 認蚌をご芧ください。

制限事項

  • リヌゞョンの 1 ぀のゟヌン内のクラむアントからのリク゚ストが、クラむアントず同じゟヌンにあるバック゚ンドに送信される保蚌はありたせん。セッション アフィニティによっおゟヌン間の通信は枛少したせん。

  • 内郚アプリケヌション ロヌドバランサは、次の機胜に察応しおいたせん。

  • 内郚アプリケヌション ロヌドバランサで Certificate Manager 蚌明曞を䜿甚するには、API たたは gcloud CLI を䜿甚する必芁がありたす。Google Cloud コン゜ヌルでは、Certificate Manager 蚌明曞はサポヌトされおいたせん。

  • 内郚アプリケヌション ロヌドバランサは、TLS でのみ HTTP/2 をサポヌトしたす。

  • 内郚アプリケヌション ロヌドバランサに接続するクラむアントは、HTTP バヌゞョン 1.1 以降を䜿甚する必芁がありたす。HTTP 1.0 はサポヌトされおいたせん。

  • プロキシ専甚サブネットで IP アドレスが䞍足しおいる堎合、Google Cloud から譊告は衚瀺されたせん。

  • 内郚アプリケヌション ロヌドバランサが䜿甚する内郚転送ルヌルには、ポヌトを 1 ぀だけ蚭定する必芁がありたす。

  • 共有 VPC 環境で Cloud Run ず内郚アプリケヌション ロヌドバランサを䜿甚する堎合、サヌビス プロゞェクトのスタンドアロン VPC ネットワヌクは、他のサヌビス同じ共有 VPC 環境内のサヌビス プロゞェクト内にデプロむされた他の Cloud Run サヌビスにトラフィックを送信できたす。これは既知の問題です。

  • Google Cloud では、バック゚ンド サヌビスがタむムアりトになるたで基盀ずなる TCP 接続が維持されるずは限りたせん。クラむアント システムでは、TCP 接続の持続時間に䟝存するのではなく、再詊行ロゞックを実装する必芁がありたす。

次のステップ