Panoramica del bilanciatore del carico delle applicazioni esterno

Questo documento illustra i concetti che devi conoscere per configurare un bilanciatore del carico delle applicazioni esterno.

Un bilanciatore del carico delle applicazioni esterno è un bilanciatore del carico di livello 7 basato su proxy che ti consente di eseguire e scalare i servizi dietro un singolo indirizzo IP esterno. Il bilanciatore del carico delle applicazioni esterno distribuisce il traffico HTTP e HTTPS ai backend ospitati su diverse alle piattaforme Google Cloud (come Compute Engine, Google Kubernetes Engine (GKE), Cloud Storage e così via), nonché le risorse esterne di backend connessi tramite internet o tramite connettività ibrida. Per maggiori dettagli, consulta la Panoramica di Application Load Balancer: casi d'uso.

Modalità di funzionamento

Puoi configurare un bilanciatore del carico delle applicazioni esterno nelle seguenti modalità:

  • Bilanciatore del carico delle applicazioni esterno globale. Si tratta di un bilanciatore del carico globale, implementato come servizio gestito sui Google Front End (GFE). it utilizza il proxy Envoy open source per supportare il traffico avanzato come mirroring del traffico, suddivisione del traffico in base al peso trasformazioni di intestazione basate su richiesta/risposta e altro ancora.
  • Bilanciatore del carico delle applicazioni classico. Si tratta del bilanciatore del carico delle applicazioni esterno classico, che è globale nel livello Premium, ma può essere configurato come regionale nel livello Standard. Questo bilanciatore del carico è implementato su Google Front End (GFE). I GFE vengono distribuiti a livello globale e operano insieme utilizzando la rete globale e il piano di controllo di Google.
  • Bilanciatore del carico delle applicazioni esterno regionale: Si tratta di un bilanciatore del carico a livello di regione, implementato come servizio gestito sull'open source di Envoy proxy. Comprende traffico avanzato gestione dei dispositivi come mirroring del traffico, suddivisione del traffico in base al peso trasformazioni di intestazione basate su richiesta/risposta e altro ancora.
Modalità del bilanciatore del carico Casi d'uso consigliati Funzionalità
Bilanciatore del carico delle applicazioni esterno globale Utilizza questo bilanciatore del carico per i carichi di lavoro HTTP(S) esterni con di utenti o servizi di backend dislocati a livello globale in più regioni.
Bilanciatore del carico delle applicazioni classico

Questo bilanciatore del carico è globale nel livello Premium. Nella Servizio di rete premium Tier, questo bilanciatore del carico offre bilanciamento del carico multiregionale, tenta di indirizzare il traffico al backend integro più vicino con capacità e termina il traffico HTTP(S) il più vicino possibili per i tuoi utenti. Per informazioni dettagliate sulla procedura di distribuzione delle richieste, consulta Distribuzione del traffico.

Nell'interfaccia Standard Network Livello di servizio, questo bilanciatore del carico può distribuire il traffico su in un'unica regione.

  • Compatibile con GKE utilizzando Gateway (orchestrazione completa), Ingress (orchestrazione completa) o NEG autonomi (orchestrazione manuale)
  • Supporta Google Cloud Armor
  • Meno funzionalità di routing del traffico
Consulta la sezione Bilanciamento del carico funzionalità per l'elenco completo delle funzionalità.
Bilanciatore del carico delle applicazioni esterno regionale

Questo bilanciatore del carico contiene molte delle funzionalità dell'Application Load Balancer classico esistente, oltre a funzionalità di gestione avanzata del traffico.

Utilizza questo bilanciatore del carico se vuoi pubblicare contenuti da una sola geolocalizzazione (ad esempio per soddisfare le normative di conformità).

Questo bilanciatore del carico può essere configurato in Premium o Standard Livello.

Per l'elenco completo, consulta la sezione Caricamento di bilanciamento del carico.

Identifica la modalità

console Cloud

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

    Vai a Bilanciamento del carico

  2. Nella scheda Bilanciatori del carico, vengono indicati il tipo di bilanciatore del carico, il protocollo regione. Se la regione è vuota, il bilanciatore del carico è globale. La tabella seguente riassume come identificare la modalità di con il bilanciatore del carico di rete passthrough esterno regionale.

Modalità bilanciatore del carico >Tipo di bilanciatore del carico Tipo di accesso Regione
Bilanciatore del carico delle applicazioni esterno globale Applicazione Esterno
Bilanciatore del carico delle applicazioni classico Applicazione(versione classica) Esterno
Bilanciatore del carico delle applicazioni esterno regionale Applicazione Esterno Specifica una regione

gcloud

  1. Per determinare la modalità di un bilanciatore del carico, esegui il seguente comando:
   gcloud compute forwarding-rules describe FORWARDING_RULE_NAME
   

Nell'output del comando, controlla lo schema di bilanciamento del carico, la regione e il livello di rete. La tabella seguente riassume come identificare la modalità di caricamento con il bilanciatore del carico di rete passthrough esterno regionale.

Modalità del bilanciatore del carico Schema di bilanciamento del carico Regola di forwarding Livello di rete
Bilanciatore del carico delle applicazioni esterno globale EXTERNAL_MANAGED Globale Premium
Bilanciatore del carico delle applicazioni classico EXTERNAL Globale Standard o Premium
Bilanciatore del carico delle applicazioni esterno regionale EXTERNAL_MANAGED Specifica una regione Standard o Premium

Architettura

Per il deployment di un bilanciatore del carico delle applicazioni esterno sono necessarie le seguenti risorse:

  • Solo per i bilanciatori del carico delle applicazioni esterni regionali, viene utilizzata una subnet solo proxy per inviare le connessioni dal bilanciatore del carico ai backend.

  • Una regola di inoltro esterno specifica un indirizzo IP, una porta e un proxy HTTP(S) di destinazione esterni. I client utilizzano l'indirizzo IP e la porta per la connessione al bilanciatore del carico.

  • Un proxy HTTP(S) di destinazione riceve una richiesta dal di alto profilo. Il proxy HTTP(S) valuta la richiesta utilizzando la mappa URL per decisioni sull'instradamento del traffico. Il proxy può anche autenticare le comunicazioni utilizzando i certificati SSL.

    • Per il bilanciamento del carico HTTPS, il proxy HTTPS di destinazione utilizza i certificati SSL per dimostrare la propria identità ai client. R il proxy HTTPS di destinazione supporta fino allo numero di Certificati SSL.
  • Il proxy HTTP(S) utilizza una mappa URL per creare un routing di determinazione in base ad attributi HTTP (come il percorso della richiesta, i cookie, o intestazioni). In base alla decisione di routing, il proxy inoltra il client a servizi di backend o bucket di backend specifici. La mappa URL può specificare azioni aggiuntive, come l'invio di reindirizzamenti ai client.

  • Un servizio di backend distribuisce le richieste ai backend integri. I bilanciatori del carico delle applicazioni esterni globali supportano anche i bucket di backend.

    • Uno o più backend devono essere connessi al servizio di backend oppure di backend.
  • Un controllo di integrità monitora periodicamente il recupero delle dai tuoi backend. In questo modo si riduce il rischio che le richieste vengano inviate a backend che non possono gestirle.

  • Regole firewall per consentire ai backend di accettare i probe del controllo di integrità. I bilanciatori del carico delle applicazioni esterni regionali richiedono un'ulteriore regola firewall per consentire al traffico dalla subnet solo proxy di raggiungere i backend.

Globale

Questo diagramma mostra i componenti di un deployment del bilanciatore del carico delle applicazioni esterno globale. Questa architettura si applica sia al bilanciatore del carico delle applicazioni esterno globale sia al bilanciatore del carico delle applicazioni classico nel livello Premium.

Componenti del bilanciatore del carico delle applicazioni esterno globale.
Componenti del bilanciatore del carico delle applicazioni esterno globale (fai clic per ingrandire).

Regionale

Questo diagramma mostra i componenti di un deployment di un bilanciatore del carico delle applicazioni esterno regionale.

Componenti del bilanciatore del carico delle applicazioni esterno regionale.
Componenti del bilanciatore del carico delle applicazioni esterno regionale (fai clic per ingrandire).

Subnet solo proxy

Le subnet solo proxy sono necessarie solo per i bilanciatori del carico delle applicazioni esterni regionali.

La subnet solo proxy fornisce un insieme di indirizzi IP che Google utilizza per eseguire proxy Envoy per tuo conto. Devi creare una subnet solo proxy in ogni regione di una rete VPC in cui utilizzi Application Load Balancer esterni regionali. Il flag --purpose per questa subnet solo proxy è impostato su REGIONAL_MANAGED_PROXY. Tutto il carico basato su Envoy a livello di regione bilanciatori del carico nella stessa regione e la rete VPC condividono un pool di proxy Envoy una subnet solo proxy. Inoltre:

  • Le subnet solo proxy vengono utilizzate solo per i proxy Envoy, non per i backend.
  • VM o endpoint di backend di tutti gli Application Load Balancer esterni regionali in una regione e La rete VPC riceve connessioni dalla subnet solo proxy.
  • L'indirizzo IP del bilanciatore del carico delle applicazioni esterno regionale non si trova nella subnet solo proxy. L'indirizzo IP del bilanciatore del carico è definito dalla regola di forwarding gestita esterna, descritta di seguito.

Se in precedenza hai creato una subnet solo proxy con --purpose=INTERNAL_HTTPS_LOAD_BALANCER, devi eseguire la migrazione della subnet allo scopo di REGIONAL_MANAGED_PROXY prima di poter creare altri bilanciatori del carico basati su Envoy nella stessa regione del VPC in ogni rete.

Regole di forwarding e indirizzi IP

Le regole di forwarding instradano il traffico in base a indirizzo IP, porta e protocollo a una configurazione di bilanciamento del carico composta da un proxy di destinazione, una mappa URL e uno o più servizi di backend.

Specifica dell'indirizzo IP. Ogni regola di forwarding fornisce un singolo indirizzo IP che possono essere utilizzate nei record DNS per la tua applicazione. Nessun carico basato su DNS e il bilanciamento del carico è obbligatorio. Puoi specificare l'indirizzo IP da utilizzare oppure lasciare Cloud Load Balancing ne assegna uno automaticamente.

Specifica della porta. Ogni regola di forwarding per un bilanciatore del carico delle applicazioni può fare riferimento a una singola porta 1-65535. A supportano più porte, devi configurare più regole di forwarding. Puoi configurare più regole di forwarding per utilizzare lo stesso indirizzo IP esterno (VIP) e fare riferimento allo stesso proxy HTTP(S) di destinazione, purché la configurazione combinazione di indirizzo IP, porta e protocollo è univoca per ogni forwarding personalizzata. In questo modo, puoi utilizzare un singolo bilanciatore del carico con una mappa URL condivisa come proxy per più applicazioni.

Il tipo di regola di inoltro, l'indirizzo IP e lo schema di bilanciamento del carico utilizzati dai bilanciatori del carico delle applicazioni esterni dipendono dalla modalità del bilanciatore del carico e dal livello di servizio di rete in cui si trova.

Modalità del bilanciatore del carico Livello di servizio di rete Regola di inoltro, indirizzo IP e schema di bilanciamento del carico Instradamento da internet al frontend del bilanciatore del carico
Bilanciatore del carico delle applicazioni esterno globale Livello Premium

Regola di forwarding esterno globale

Indirizzo IP esterno globale

Schema di bilanciamento del carico:
EXTERNAL_MANAGED

Richieste instradate al servizio GFE più vicino al cliente su internet.
Bilanciatore del carico delle applicazioni classico Livello Premium

Regola di forwarding esterno globale

Indirizzo IP esterno globale

Schema di bilanciamento del carico:
EXTERNAL

Richieste instradate al GFE più vicino al cliente su internet.
Livello Standard

Regola di inoltro esterno regionale

Indirizzo IP esterno a livello di regione

Schema di bilanciamento del carico:
EXTERNAL

Richieste instradate a un GFE nella regione del bilanciatore del carico.
Bilanciatore del carico delle applicazioni esterno regionale Livello Premium o Standard *

Regola di inoltro esterno regionale

Indirizzo IP esterno a livello di regione

Schema di bilanciamento del carico:
EXTERNAL_MANAGED

Richieste inoltrate ai proxy Envoy nella stessa regione del bilanciatore del carico.
* Non puoi utilizzare la console Google Cloud per creare un bilanciatore del carico delle applicazioni esterno regionale nel livello Premium. Inoltre, nella console Google Cloud sono disponibili solo le regioni supportanti il livello Standard per questi bilanciatori del carico. Utilizza gcloud o l'API.

Per l'elenco completo dei protocolli supportati dalle regole di inoltro del bilanciatore del carico delle applicazioni esterno in ogni modalità, consulta Funzionalità del bilanciatore del carico.

Regole di inoltro e reti VPC

Questa sezione descrive come vengono le regole di forwarding utilizzate dai bilanciatori del carico delle applicazioni esterni associate alle reti VPC.

Modalità del bilanciatore del carico Associazione della rete VPC
Bilanciatore del carico delle applicazioni esterno globale

Bilanciatore del carico delle applicazioni classico

Nessuna rete VPC associata.

La regola di forwarding utilizza sempre indirizzo IP, ovvero all'esterno della rete VPC. Pertanto, alla regola di forwarding non è associata una rete VPC.

Bilanciatore del carico delle applicazioni esterno regionale

La rete VPC della regola di forwarding è in cui è stata creata la subnet solo proxy. Tu specificare la rete quando crei la regola di forwarding.

Proxy di destinazione

I proxy di destinazione terminano HTTP(S) e connessioni dai client. Una o più regole di inoltro indirizzano il traffico al proxy di destinazione, che consulta la mappa URL per determinare come indirizzare il traffico ai backend.

Non fare affidamento sul proxy per preservare il caso dell'intestazione della richiesta o della risposta i nomi degli utenti. Ad esempio, potrebbe essere visualizzata un'intestazione di risposta Server: Apache/1.0 cliente come server: Apache/1.0.

La tabella seguente specifica il tipo di proxy di destinazione richiesto di bilanciatori del carico delle applicazioni esterni in ogni modalità.

Modalità bilanciatore del carico Tipi di proxy di destinazione Intestazioni aggiunte dal proxy Intestazioni personalizzate supportate Supporto di Cloud Trace
Bilanciatore del carico delle applicazioni esterno globale HTTP globale,
HTTPS globale
I proxy impostano le intestazioni di richiesta/risposta HTTP come segue:
  • Via: 1.1 google (richieste e risposte)
  • X-Forwarded-Proto: [http | https] (solo richieste)
  • X-Forwarded-For: [<fornito-valore>,]<ip-client>,<ip-bilanciamento-carico> (vedi intestazione X-Forwarded-For) (solo richieste)

Anche i proxy possono impostare l'intestazione X-Cloud-Trace-Context.

Configurato sul servizio di backend o sul bucket di backend

Non supportata con Cloud CDN

Bilanciatore del carico delle applicazioni classico HTTP globale,
HTTPS globale
I proxy impostano le intestazioni di richiesta/risposta HTTP come segue:
  • Via: 1.1 google (richieste e risposte)
  • X-Forwarded-Proto: [http | https] (solo richieste)
  • X-Forwarded-For: [<fornito-valore>,]<ip-client>,<ip-bilanciamento-carico> (vedi intestazione X-Forwarded-For) (solo richieste)

Anche i proxy possono impostare l'intestazione X-Cloud-Trace-Context.

Configurato sul servizio di backend o sul bucket di backend
Bilanciatore del carico delle applicazioni esterno regionale HTTP regionale,
HTTPS regionale
  • X-Forwarded-Proto: [http | https] (solo richieste)
  • Via: 1.1 google (richieste e risposte)
  • X-Forwarded-For: [<supplied-value>,]<client-ip>,<load-balancer-ip> (vedi intestazione X-Forwarded-For) (solo richieste)

Oltre alle intestazioni aggiunte dal proxy di destinazione, il bilanciatore del carico regola altre intestazioni HTTP nei seguenti modi:

  • Per il bilanciatore del carico delle applicazioni esterno globale, le intestazioni della richiesta e della risposta sono vengono sempre convertiti in minuscolo. Ad esempio, Host diventa host e Keep-ALIVE diventa keep-alive.

    L'unica eccezione è quando utilizzi backend NEG internet globali con HTTP/1.1. Per dettagli su come le intestazioni HTTP/1.1 vengono elaborate con NEG internet, consulta NEG internet Panoramica.

  • Per il bilanciatore del carico delle applicazioni classico, le intestazioni di richiesta e risposta vengono convertite in lettere minuscole, tranne quando utilizzi HTTP/1.1. Con HTTP/1.1, invece, le intestazioni sono in maiuscolo. La prima lettera della chiave dell'intestazione e ogni lettera che segue un trattino (-) sono in maiuscolo per mantenere la compatibilità con i client HTTP/1.1. Ad esempio, user-agent viene modificato in User-Agent, e content-encoding è stato modificato in Content-Encoding.

  • Alcune intestazioni sono unite. Quando sono presenti più istanze della stessa chiave di intestazione (ad esempio Via), il bilanciatore del carico combina i relativi valori in un unico elenco separato da virgole per una singola chiave di intestazione. Solo le intestazioni i cui valori possono essere rappresentati come elenco separato da virgole vengono uniti. Altre intestazioni, come Set-Cookie, non vengono mai unite.

Intestazione host

Quando il bilanciatore del carico effettua la richiesta HTTP, conserva Intestazione host della richiesta originale.

Intestazione X-Forwarded-For

Il bilanciatore del carico aggiunge due indirizzi IP separati da una virgola all'X-Forwarded-For intestazione nel seguente ordine:

  • L'indirizzo IP del client che si connette al bilanciatore del carico
  • L'indirizzo IP della regola di inoltro del bilanciatore del carico

Se non è presente un'intestazione X-Forwarded-For nella richiesta in arrivo, questi due indirizzi IP costituisce l'intero valore dell'intestazione:

X-Forwarded-For: <client-ip>,<load-balancer-ip>

Se la richiesta include un'intestazione X-Forwarded-For, il bilanciatore del carico conserva il valore fornito prima di <client-ip>,<load-balancer-ip>:

X-Forwarded-For: <supplied-value>,<client-ip>,<load-balancer-ip>

Quando esegui il software del proxy inverso HTTP sui backend del bilanciatore del carico, il software potrebbe aggiungere uno o entrambi i seguenti indirizzi IP alla fine dell'intestazione X-Forwarded-For:

  • L'indirizzo IP del Google Front End (GFE) connesso al backend. Questi indirizzi IP sono compresi negli intervalli 130.211.0.0/22 e 35.191.0.0/16.

  • L'indirizzo IP del sistema di backend stesso.

Pertanto, un processo upstream dopo il backend del bilanciatore del carico potrebbe ricevere X-Forwarded-For intestazione del modulo:

<existing-values>,<client-ip>,<load-balancer-ip><GFE-IP><backend-IP>

Mappe URL

Le mappe URL definiscono pattern di corrispondenza per l'instradamento delle richieste in base all'URL ai servizi di backend appropriati. Un valore predefinito un servizio è definito per gestire le richieste che non corrispondono a un host specificato a una regola di corrispondenza o a una regola di corrispondenza del percorso. In alcune situazioni, ad esempio il carico multiregionale di bilanciamento, potresti non definiscono le regole per gli URL e fare affidamento solo sul servizio predefinito. Per il routing delle richieste, la mappa URL ti consente di dividere il traffico esaminando i componenti dell'URL e inviare richieste a diversi set di backend.

Le mappe URL utilizzate con i bilanciatori del carico delle applicazioni esterni globali e i bilanciatori del carico delle applicazioni esterni regionali supportano diverse funzionalità avanzate di gestione del traffico, come lo steering del traffico basato su intestazioni, la suddivisione del traffico in base al peso e il mirroring delle richieste. Per per ulteriori informazioni, consulta le seguenti risorse:

La tabella seguente specifica il tipo di mappa URL richiesta dagli Application Load Balancer esterni in ciascuna modalità.

Modalità del bilanciatore del carico Tipo di mappa URL
Bilanciatore del carico delle applicazioni esterno globale Global
Bilanciatore del carico delle applicazioni classico Globale (con solo un sottoinsieme delle funzionalità supportate)
Bilanciatore del carico delle applicazioni esterno regionale A livello di regione

Certificati SSL

I bilanciatori del carico delle applicazioni esterni che utilizzano i proxy HTTPS di destinazione richiedono chiavi private e Certificati SSL che fanno parte della configurazione del bilanciatore del carico:

  • Google Cloud fornisce due metodi di configurazione per l'assegnazione chiavi e certificati SSL per scegliere come target i proxy HTTPS: SSL di Compute Engine certificati e Gestore certificati. Per una descrizione di ogni vedi Configurazione dei certificati del linguaggio naturale Panoramica dei certificati.

  • Google Cloud offre due tipi di certificati: autogestito e Gestita da Google. Per una descrizione di ciascun tipo, consulta Tipi di certificati nella panoramica dei certificati SSL.

  • Il tipo di bilanciatore del carico delle applicazioni esterno (globale, regionale o classico) determina quale e i tipi di certificati sono supportati. Per maggiori dettagli, consulta Certificati e bilanciatori di carico Google Cloud nella panoramica dei certificati SSL.

Mutual TLS

Generalmente, con la comunicazione HTTPS, l'autenticazione funziona solo in un modo: verifica l'identità del server. Per le applicazioni che richiedono al bilanciatore del carico di autenticare l'identità dei client che si connettono, sia un bilanciatore del carico delle applicazioni esterno globale sia un bilanciatore del carico delle applicazioni classico supportano TLS reciproco (mTLS).

Con mTLS, il bilanciatore del carico richiede al client di inviare un certificato per autenticharsi durante l'handshake TLS con il bilanciatore del carico. Puoi configurare un archivio di attendibilità utilizzato dal bilanciatore del carico per convalidare il client la catena di attendibilità dei certificati.

Google Cloud utilizza la risorsa TrustConfig in Certificate Manager per archiviare i certificati utilizzati dal server per verificare il certificato presentato dal client. Se utilizzi un bilanciatore del carico delle applicazioni classico nel livello di servizio di rete Premium o un bilanciatore del carico delle applicazioni esterno globale, puoi utilizzare Gestore certificati per eseguire il provisioning e gestire i certificati SSL o TrustConfig su più istanze del bilanciatore del carico su larga scala. Per saperne di più, consulta la panoramica di Certificate Manager.

Per ulteriori informazioni su mTLS, vedi Autenticazione TLS reciproca.

Criteri SSL

I criteri SSL specificano l'insieme di funzionalità SSL utilizzate dai bilanciatori del carico Google Cloud durante la negoziazione SSL con i client.

Per impostazione predefinita, il bilanciamento del carico HTTPS utilizza un insieme di funzionalità SSL che forniscono una buona sicurezza e un'ampia compatibilità. Alcune applicazioni richiedono un maggiore controllo sulle versioni e sulle crittografie SSL utilizzate per le connessioni HTTPS o SSL. Puoi definire un criterio SSL per specificare l'insieme di funzionalità SSL utilizzate dal bilanciatore del carico durante la negoziazione SSL con i client. Inoltre, puoi applicare questo criterio SSL al proxy HTTPS di destinazione.

La tabella seguente specifica il supporto dei criteri SSL per i bilanciatori del carico in ogni modalità.

Modalità del bilanciatore del carico Criteri SSL supportati
Bilanciatore del carico delle applicazioni esterno globale
Bilanciatore del carico delle applicazioni classico
Bilanciatore del carico delle applicazioni esterno regionale

Servizi e bucket di backend

I servizi di backend forniscono informazioni di configurazione al bilanciatore del carico. I bilanciatori di carico utilizzano le informazioni di un servizio di backend per indirizzare il traffico in entrata a uno o più backend collegati. Per un esempio che mostra come configurare un bilanciatore del carico con un servizio di backend e un backend di Compute Engine, consulta Configurazione di un bilanciatore del carico delle applicazioni esterno con un backend di Compute Engine.

I bucket di backend indirizzano il traffico in entrata ai bucket Cloud Storage. Per un esempio che mostra come aggiungere di un bucket a un bilanciatore del carico delle applicazioni esterno, consulta Configurazione di un bilanciatore del carico con di backend.

La tabella seguente specifica le funzionalità di backend supportate dagli Application Load Balancer esterni in ogni modalità.


Modalità bilanciatore del carico
Backend supportati in un servizio di backend Supporta i bucket di backend Supporta Google Cloud Armor Supporta Cloud CDN# Supporta gli acquisti in-app# Supporta Service Extensions
Gruppi di istanze NEG a livello di zona NEG internet NEG serverless NEG ibridi NEG Private Service Connect
Bilanciatore del carico delle applicazioni esterno globale †,‡
Bilanciatore del carico delle applicazioni classico *
Livello Premium

Bilanciatore del carico delle applicazioni esterno regionale *

* Utilizza endpoint di tipo GCE_VM_IP_PORT con GKE: utilizza NEG di zona autonomi o utilizza Ingress

Utilizza endpoint di tipo GCE_VM_IP_PORT con GKE: Utilizza NEG di zona autonomi

Supportato solo con GKE Gateway Controller

# IAP e Cloud CDN non sono compatibili con tra loro. Non possono essere abilitate sullo stesso servizio di backend.

Per ulteriori informazioni, consulta le seguenti risorse:

Backend e reti VPC

Le limitazioni relative alla posizione dei backend dipendono dal tipo di bilanciatore del carico.

Le restrizioni sulla posizione dei backend dipendono dal tipo con il bilanciatore del carico di rete passthrough esterno regionale.

Per il bilanciatore del carico delle applicazioni esterno globale e il bilanciatore del carico delle applicazioni classico, tutte le istanze di backend dei backend del gruppo di istanze e tutti gli endpoint di backend dei backend NEG devono trovarsi nello stesso progetto. Tuttavia, un backend del gruppo di istanze o un gruppo di esclusioni di rete può utilizzare una rete VPC diversa nel progetto. Non è necessario che le diverse reti VPC connesse tramite peering di rete VPC perché i GFE comunicano direttamente con backend nelle rispettive reti VPC.

Per il bilanciatore del carico delle applicazioni esterno regionale, dipende dal tipo di backend.

  • Per i gruppi di istanze, i NEG a livello di zona e i NEG connettività ibrida, tutti i backend devono trovarsi nello stesso progetto e nella stessa regione del servizio di backend. Tuttavia, un bilanciatore del carico può fare riferimento a un backend che utilizza una rete VPC diversa nello stesso progetto del servizio di backend (questa funzionalità è in anteprima). Connettività tra i carichi di lavoro rete VPC e rete VPC di backend può essere configurato utilizzando il peering di rete VPC, tunnel, collegamenti VLAN di Cloud Interconnect o un Network Connectivity Center il modello di machine learning.

    Definizione della rete di backend

    • Per i NEG a livello di zona e i NEG ibridi, devi specificare esplicitamente il rete VPC quando crei il NEG.
    • Per i gruppi di istanze gestite, la rete VPC è definita nel modello di istanza.
    • Per i gruppi di istanze non gestite, La rete VPC è impostata in modo da corrispondere alla rete VPC dell'interfaccia nic0 per la prima VM aggiunta al gruppo di istanze.

    Requisiti di rete di backend

    La rete del backend deve soddisfare una delle seguenti reti requisiti:

    • La rete VPC del backend deve corrispondere esattamente alla rete rete VPC della regola di forwarding.

    • La rete VPC del backend deve essere connessa alla rete VPC della regola di forwarding peering di rete VPC. Devi configurare gli scambi di route di subnet per consentire la comunicazione tra la subnet solo proxy nella rete VPC della regola di inoltro e le subnet utilizzate dalle istanze o dagli endpoint di backend.

    • Sia la rete VPC del backend che la rete VPC della regola di forwarding, La rete VPC deve essere VPC spoke sullo stesso Network Connectivity Center . I filtri di importazione ed esportazione devono consentire la comunicazione tra la subnet solo proxy nella rete VPC della regola di inoltro e le subnet utilizzate dagli endpoint o dalle istanze di backend.
    • Per tutti gli altri tipi di backend, tutti i backend devono trovarsi nella stessa rete e nella stessa regione VPC.

Backend e interfacce di rete

Se utilizzi backend di gruppi di istanze, i pacchetti vengono sempre consegnati a nic0. Se Se vuoi inviare pacchetti a NIC diverse, usa i backend NEG.

Se utilizzi backend NEG a livello di zona, i pacchetti vengono inviati a qualsiasi interfaccia di rete rappresentato dall'endpoint nel NEG. Gli endpoint NEG devono trovarsi nella stessa rete VPC della rete VPC definita esplicitamente del NEG.

Protocollo per i backend

Quando configuri un servizio di backend per il bilanciatore del carico, imposti il protocollo utilizzato dal servizio di backend per comunicare con i backend. Puoi scegliere HTTP, HTTPS o HTTP/2. Il bilanciatore del carico utilizza solo il protocollo specificato. Il bilanciatore del carico non esegue il fallback a uno degli altri protocolli se non è in grado di negoziare una connessione al backend con il protocollo specificato.

Se usi HTTP/2, devi utilizzare TLS. HTTP/2 senza crittografia non è supportato.

Per l'elenco completo dei protocolli supportati, consulta Funzionalità di bilanciamento del carico: protocolli dal bilanciatore del carico ai backend.

Supporto di WebSocket

I bilanciatori del carico Google Cloud basati su HTTP(S) supportano il protocollo websocket quando utilizzi HTTP o HTTPS come protocollo per il backend. Il bilanciatore del carico non richiede alcuna configurazione per il proxy di WebSocket e connessioni a Internet.

Il protocollo websocket fornisce un canale di comunicazione full-duplex tra e il bilanciatore del carico. Per Per ulteriori informazioni, consulta RFC 6455.

Il protocollo WebSocket funziona nel seguente modo:

  1. Il bilanciatore del carico riconosce una richiesta Upgrade websocket da un client HTTP(S). La richiesta contiene Connection: Upgrade, Upgrade: websocket, seguite da altre intestazioni WebSocket pertinenti intestazioni delle richieste.
  2. Il backend invia una risposta Upgrade websocket. L'istanza di backend invia una risposta 101 switching protocol con intestazioni Connection: Upgrade, Upgrade: websocket e altre intestazioni di risposta relative a websocket.
  3. Il bilanciatore del carico esegue il proxy del traffico bidirezionale per la durata della connessione corrente.

Se l'istanza di backend restituisce una risposta di errore con il codice 426 o 502, il bilanciatore del carico chiude la connessione.

I timeout di connessione Websocket dipendono dal tipo di bilanciatore del carico (globale, regionale o classico). Per maggiori dettagli, vedi Servizio di backend timeout.

L'affinità sessione per WebSocket funziona come per qualsiasi altra richiesta. Per ulteriori informazioni, consulta Affinità della sessione.

Utilizzo di gRPC con le applicazioni Google Cloud

gRPC è un framework open source per le chiamate di procedura remota. Si basa sullo standard HTTP/2. Casi d'uso di: gRPC include quanto segue:

  • Sistemi distribuiti a bassa latenza e altamente scalabili
  • Sviluppo di client mobile che comunicano con un server cloud
  • Progettazione di nuovi protocolli che devono essere accurati, efficienti e indipendenti dal linguaggio
  • Progettazione a più livelli per consentire l'estensione, l'autenticazione e la registrazione

Per utilizzare gRPC con le tue applicazioni Google Cloud, devi eseguire il proxy richieste end-to-end su HTTP/2. Per farlo:

  1. Configura un bilanciatore del carico HTTPS.
  2. Attiva HTTP/2 come protocollo dal bilanciatore del carico ai backend.

Il bilanciatore del carico negozia HTTP/2 con i client nell'ambito dell'handshake SSL utilizzando l'estensione TLS ALPN.

Il bilanciatore del carico potrebbe comunque negoziare HTTPS con alcuni client o accettare contenuti non sicuri Richieste HTTP su un bilanciatore del carico configurato per utilizzare HTTP/2 tra il bilanciatore del carico e le istanze di backend. Queste richieste HTTP o HTTPS vengono trasformate dal bilanciatore del carico per eseguire il proxy delle richieste tramite HTTP/2 alle istanze di backend.

Devi attivare TLS sui tuoi backend. Per ulteriori informazioni, vedi Crittografia dal bilanciatore del carico ai backend.

Se vuoi configurare un bilanciatore del carico delle applicazioni esterno utilizzando HTTP/2 Google Kubernetes Engine Ingress o mediante gRPC e HTTP/2 con Ingress, consulta HTTP/2 per il bilanciamento del carico con Ingress.

Per informazioni sulla risoluzione dei problemi con HTTP/2, consulta la sezione Risoluzione dei problemi. problemi con HTTP/2 ai backend.

Per informazioni sulle limitazioni di HTTP/2, vedi Limitazioni di HTTP/2.

Controlli di integrità

Ogni servizio di backend specifica un controllo di integrità che monitora periodicamente la disponibilità dei backend a ricevere una connessione dal bilanciatore del carico. In questo modo si riduce il rischio che le richieste vengano inviate a backend che non possono gestirle. I controlli di integrità non controllano se l'applicazione stessa funziona.

Per i probe del controllo di integrità, devi creare una regola firewall di autorizzazione in entrata che consenta ai probe del controllo di integrità di raggiungere le istanze di backend. In genere, i probe del controllo di integrità provengono dal sistema meccanismo di controllo di integrità.

I bilanciatori del carico delle applicazioni esterni regionali che utilizzano backend NEG ibridi sono un'eccezione a questa regola perché i relativi controlli di integrità provengono dalla subnet solo proxy. Per maggiori dettagli, consulta la panoramica dei contratti di NEG ibridi.

Protocollo di controllo di integrità

Sebbene non sia obbligatorio e non sempre possibile, è buona norma utilizza un controllo di integrità il cui protocollo corrisponda a quello del protocollo del backend Google Cloud. Ad esempio, un controllo di integrità HTTP/2 verifica in modo più accurato la connettività HTTP/2 per di backend. Al contrario, i bilanciatori del carico delle applicazioni esterni regionali che utilizzano backend NEG ibridi non supporta i controlli di integrità gRPC. Per l'elenco dei protocolli di controllo di integrità supportati, consulta Funzionalità di bilanciamento del carico.

La tabella seguente specifica l'ambito dei controlli di integrità supportati di bilanciatori del carico delle applicazioni esterni in ogni modalità.

Modalità del bilanciatore del carico Tipo di controllo di integrità
Bilanciatore del carico delle applicazioni esterno globale Global
Bilanciatore del carico delle applicazioni classico Global
Bilanciatore del carico delle applicazioni esterno regionale A livello di regione

Per ulteriori informazioni sui controlli di integrità, consulta le seguenti risorse:

Regole firewall

Il bilanciatore del carico richiede le seguenti regole firewall:

  • Per i bilanciatori del carico delle applicazioni esterni globali, un bilanciatore del carico in entrata regola per consentire il traffico proveniente da Google Front End (GFE) per raggiungere i tuoi backend.
    Per il bilanciatore del carico delle applicazioni esterno regionale, una regola di autorizzazione in entrata per consentire al traffico proveniente dalla subnet solo proxy di raggiungere i tuoi backend.
  • Una regola di autorizzazione in entrata per consentire il traffico dagli intervalli dei probe del controllo di integrità. Per saperne di più sui probe di controllo di integrità e sul motivo per cui è necessario per consentire il traffico proveniente da questi domini. Consulta l'articolo Esaminare gli intervalli IP e il firewall .

Le regole firewall vengono implementate a livello di istanza VM, non sui proxy GFE. Non puoi utilizzare le regole firewall di Google Cloud per impedire per impedire che il traffico raggiunga il bilanciatore del carico. Per il bilanciatore del carico delle applicazioni esterno globale e per il bilanciatore del carico delle applicazioni classico, puoi utilizzare Google Cloud Armor per ottenere questo risultato.

Le porte per queste regole firewall devono essere configurate come segue:

  • Consenti il traffico alla porta di destinazione per il controllo di integrità di ciascun servizio di backend.

  • Per i backend del gruppo di istanze: determina le porte da configurare in base al mappatura tra la porta denominata del servizio di backend e i numeri di porta associati a quella porta denominata in ogni gruppo di istanze. I numeri di porta possono variare tra i gruppi di istanze assegnati allo stesso servizio di backend.

  • Per i backend NEG GCE_VM_IP_PORT: consenti il traffico ai numeri di porta degli endpoint.

La tabella seguente riassume gli intervalli di indirizzi IP di origine richiesti per regole firewall:

Modalità bilanciatore del carico Intervalli di fonti dei controlli di integrità Intervalli di origine della richiesta
Bilanciatore del carico delle applicazioni esterno globale
  • 35.191.0.0/16
  • 130.211.0.0/22

Per il traffico IPv6 verso i backend:

  • 2600:2d00:1:b029::/64
L'origine del traffico GFE dipende dal tipo di backend:
  • Gruppi di istanze e NEG a livello di zona (GCE_VM_IP_PORT):
    • 130.211.0.0/22
    • 35.191.0.0/16

    Per il traffico IPv6 verso i backend:

    • 2600:2d00:1:1::/64
  • NEG di connettività ibrida (NON_GCP_PRIVATE_IP_PORT):
    • 130.211.0.0/22
    • 35.191.0.0/16
  • NEG internet (INTERNET_FQDN_PORT e INTERNET_IP_PORT):
    • 34.96.0.0/20
    • 34.127.192.0/18
  • SERVERLESS NEG e bucket di backend: la rete di produzione di Google gestisce il routing dei pacchetti
Bilanciatore del carico delle applicazioni classico
  • 35.191.0.0/16
  • 130.211.0.0/22
L'origine del traffico GFE dipende dal tipo di backend:
  • Gruppi di istanze, NEG a livello di zona (GCE_VM_IP_PORT) e NEG connettività ibrida (NON_GCP_PRIVATE_IP_PORT):
    • 35.191.0.0/16
    • 130.211.0.0/22
  • NEG internet (INTERNET_FQDN_PORT e INTERNET_IP_PORT):
    • 34.96.0.0/20
    • 34.127.192.0/18
  • SERVERLESS NEG e bucket di backend: la rete di produzione di Google gestisce il routing dei pacchetti.
Bilanciatore del carico delle applicazioni esterno regionale
  • 35.191.0.0/16
  • 130.211.0.0/22

Per il traffico IPv6 verso i backend:

  • 2600:2d00:1:b029::/64
Non è necessario inserire nella lista consentita gli intervalli di probe del controllo di integrità di Google per il modello ibrido NEG. Tuttavia, se utilizzi una combinazione di NEG ibridi e zonali in un singolo servizio di backend, devi inserire nella lista consentita gli intervalli di sonde di controllo di integrità di Google per i NEG zonali.
Lo una subnet solo proxy configurata da te.

Architettura VPC condiviso

I bilanciatori del carico delle applicazioni esterni supportano le reti che utilizzano il VPC condiviso. La VPC condivisa consente alle organizzazioni di connettere risorse di più progetti a una rete VPC comune in modo che possano comunicare tra loro in modo sicuro ed efficiente utilizzando indirizzi IP interni di quella rete. Se non hai già familiarità con il VPC condiviso, leggi VPC condiviso condivisa.

Esistono molti modi per configurare un bilanciatore del carico delle applicazioni esterno all'interno di una rete VPC condiviso. Indipendentemente dal tipo di deployment, tutti i componenti deve trovarsi nella stessa organizzazione.

Bilanciatore del carico Componenti del frontend Componenti di backend
Bilanciatore del carico delle applicazioni esterno globale

Se utilizzi un VPC condiviso condivisa per i tuoi backend, crea la rete richiesta nel Progetto host VPC condiviso.

L'indirizzo IP esterno globale, la regola di inoltro, il proxy HTTP(S) di destinazione e la mappa URL associata devono essere definiti nello stesso progetto. Questo progetto può essere un progetto host o un progetto di servizio.

Puoi eseguire una delle seguenti operazioni:
  • Crea servizi di backend e backend (gruppi di istanze, NEG serverless o qualsiasi altro tipo di backend supportato) nello stesso progetto di servizio dei componenti frontend.
  • Crea servizi e backend (istanza gruppi, NEG serverless o qualsiasi altro tipo di backend supportato) in dei progetti di servizio. Una singola mappa URL può fare riferimento a servizi di backend in progetti diversi. Questo tipo di è noto come servizio tra progetti fare riferimento.

Ogni servizio di backend deve essere definito nello stesso progetto dei backend a cui fa riferimento. Anche i controlli di integrità associati ai servizi di backend devono essere definiti nello stesso progetto del servizio di backend.

I backend possono essere parte di un Rete VPC condiviso dal progetto host o da una rete rete VPC, ovvero una rete VPC non condivisa progetto di servizio.

Bilanciatore del carico delle applicazioni classico L'indirizzo IP esterno globale, la regola di inoltro, il proxy HTTP(S) di destinazione e la mappa URL associata devono essere definiti nello stesso progetto di host o servizio dei backend. Un servizio di backend globale deve essere definito nello stesso host o nello stesso servizio progetto come backend (gruppi di istanze o NEG). Controlli di integrità associati ai servizi di backend deve essere definito anche nello stesso progetto del servizio di backend.
Bilanciatore del carico delle applicazioni esterno regionale

Crea la rete e la subnet solo proxy obbligatorie nel progetto host VPC condiviso.

La regione indirizzo IP esterno, la regola di forwarding, il proxy HTTP(S) di destinazione la mappa URL associata deve essere definita nello stesso progetto. Questo progetto può essere il progetto host o un progetto di servizio.

Puoi procedere in uno dei seguenti modi:
  • Creare servizi e backend di backend (istanza gruppi, NEG serverless o qualsiasi altro tipo di backend supportato) nel stesso progetto di servizio come componenti frontend.
  • Crea servizi di backend e backend (gruppi di istanze, NEG serverless o qualsiasi altro tipo di backend supportato) in quanti progetti di servizio necessari. Una singola mappa URL può fare riferimento a servizi di backend tra progetti diversi. Questo tipo di deployment è noto come riferimento ai servizi tra progetti.

Ogni servizio di backend deve essere definito nello stesso progetto dei backend a cui fa riferimento. Salute i controlli associati ai servizi di backend devono essere definiti nello stesso anche come servizio di backend.

Sebbene sia possibile creare tutti i componenti e i backend di bilanciamento del carico nel progetto host VPC condiviso, questo tipo di deployment non separa le responsabilità di amministrazione della rete e di sviluppo del servizio.

Tutti i componenti e i backend del bilanciatore del carico in un progetto di servizio

Il seguente diagramma di architettura mostra un deployment standard di VPC condiviso in cui tutti i componenti e i backend del bilanciatore del carico si trovano in un progetto di servizio. Questo tipo di implementazione è supportato da tutti i bilanciatori del carico delle applicazioni.

I componenti e i backend del bilanciatore del carico devono utilizzare lo stesso VPC in ogni rete.

Bilanciatore del carico delle applicazioni esterno regionale sulla rete VPC condiviso
Bilanciatore del carico delle applicazioni esterno regionale sulla rete VPC condivisa

Backend serverless in un ambiente VPC condiviso

Per un bilanciatore del carico che utilizza un backend NEG serverless, il servizio di backend Cloud Run o Cloud Functions deve trovarsi nello stesso progetto del NEG serverless.

Inoltre, per il bilanciatore del carico delle applicazioni esterno regionale che supporta il riferimento ai servizi tra progetti, il servizio di backend, il NEG serverless e il servizio Cloud Run devono sempre trovarsi nello stesso progetto di servizio.

Riferimento ai servizi tra progetti

In questo modello, il frontend e la mappa di URL del bilanciatore del carico si trovano in un progetto di servizio o host. I servizi e i backend del bilanciatore del carico possono essere distribuiti tra progetti nell'ambiente VPC condiviso. È possibile fare riferimento ai servizi di backend tra progetti in una singola mappa URL. Questo è noto come riferimento ai servizi tra progetti.

Il riferimento ai servizi tra progetti consente alle organizzazioni di configurare un bilanciatore del carico centralizzato e instradare il traffico verso centinaia di servizi distribuiti su più progetti diversi. Puoi gestire centralmente tutte le regole e i criteri di routing del traffico in una mappa URL. Puoi anche associare il bilanciatore del carico a un singolo insieme di nomi host e certificati SSL. Di conseguenza, puoi ottimizzare il numero di bilanciatori del carico necessari per implementare l'applicazione e ridurre la gestibilità, i costi operativi e i requisiti di quota.

Avendo progetti diversi per ciascuno dei tuoi team funzionali, puoi anche ottenere una separazione dei ruoli all'interno della tua organizzazione. I proprietari di servizi possono concentrarsi sulla creazione di servizi nei progetti di servizio, mentre i team di rete possono eseguire il provisioning e la manutenzione dei bilanciatori del carico in un altro progetto. Entrambi possono essere collegati utilizzando il riferimento ai servizi tra progetti.

I proprietari di servizi possono mantenere l'autonomia sull'esposizione dei propri servizi e controllare quali utenti possono accedere ai loro servizi utilizzando il bilanciatore del carico. Questo è da un ruolo IAM speciale chiamato Ruolo Utente servizi bilanciatore del carico Compute (roles/compute.loadBalancerServiceUser).

Per scoprire come configurare VPC condiviso per un bilanciatore del carico delle applicazioni esterno regionale, con o senza riferimenti ai servizi tra progetti, consulta Configurare un bilanciatore del carico delle applicazioni esterno regionale con VPC condiviso.

Limitazioni note con i riferimenti ai servizi tra progetti

  • I riferimenti ai servizi tra progetti possono essere utilizzati con gruppi di istanze, NEG serverless e la maggior parte degli altri tipi di backend supportati. Tuttavia, si applicano le seguenti limitazioni:

    • Con i bilanciatori del carico delle applicazioni esterni globali, non puoi fare riferimento a un servizio di backend se il servizio ha i seguenti backend:

      • Bucket di backend
      • NEG serverless con App Engine
    • Con i bilanciatori del carico delle applicazioni esterni regionali, non puoi fare riferimento a un servizio di backend tra progetti se il servizio di backend ha backend NEG internet regionali.
  • I riferimenti ai servizi tra progetti non sono supportati per il il bilanciatore del carico delle applicazioni classico.
  • Google Cloud non distingue le risorse (ad esempio i servizi di backend) che utilizzano lo stesso nome in più progetti. Pertanto, quando utilizzi i riferimenti ai servizi multiprogetto, ti consigliamo utilizza nomi univoci per servizio di backend nei vari progetti dell'organizzazione.

Esempio 1: frontend e backend del bilanciatore del carico in progetti di servizi diversi

Di seguito è riportato un esempio di deployment in cui la mappa URL e il frontend del bilanciatore del carico vengono creati nel progetto di servizio A e la mappa URL fa riferimento a un servizio di backend nel progetto di servizio B.

In questo caso, gli amministratori di rete o del bilanciatore del carico nel progetto di servizio A richiederanno l'accesso ai servizi di backend nel progetto di servizio B. Progetto di servizio B gli amministratori concedono il ruolo IAM compute.loadBalancerServiceUser agli amministratori del bilanciatore del carico nel progetto di servizio A che vogliono fare riferimento al backend nel progetto di servizio B.

Frontend del bilanciatore del carico e mappa URL nel progetto di servizio
Frontend e backend del bilanciatore del carico in progetti di servizio diversi

Esempio 2: frontend del bilanciatore del carico nel progetto host e backend nei progetti di servizio

In questo tipo di deployment, il frontend e la mappa URL del bilanciatore del carico vengono creati nel progetto host e i servizi di backend (e i backend) vengono create nei progetti di servizio.

In questo caso, gli amministratori di rete o gli amministratori del bilanciatore del carico nel progetto host richiedono l'accesso ai servizi di backend nel progetto di servizio. Progetto di servizio concedono il ruolo IAM compute.loadBalancerServiceUser a agli amministratori del bilanciatore del carico nel progetto host A che vogliono fare riferimento al backend nel progetto di servizio.

Frontend del bilanciatore del carico e mappa URL nel progetto host
Frontend del bilanciatore del carico e mappa URL nel progetto host

Come funzionano le connessioni

Connessioni del bilanciatore del carico delle applicazioni esterno globale

I bilanciatori del carico delle applicazioni esterni globali sono implementati da molti proxy chiamati Google Front End (GFEs). Non esiste un solo proxy. Nel livello Premium, lo stesso indirizzo IP esterno globale viene pubblicizzato da vari punti di presenza e le richieste dei client vengono indirizzate al GFE più vicino al client.

A seconda della posizione dei client, più GFE possono avviare connessioni HTTP(S) ai tuoi backend. I pacchetti inviati dai GFE hanno indirizzi IP di origine dello stesso intervallo utilizzato dai probe del controllo di integrità: 35.191.0.0/16 e 130.211.0.0/22.

A seconda della configurazione del servizio di backend, il protocollo utilizzato da ogni GFE per connettersi ai tuoi backend può essere HTTP, HTTPS o HTTP/2. Per le connessioni HTTP o HTTPS, la versione HTTP utilizzata è HTTP 1.1.

Il keepalive HTTP è abilitato per impostazione predefinita, come specificato nella specifica HTTP 1.1. I keepalive HTTP tentano di utilizzare in modo efficiente la stessa sessione TCP, ma non c'è alcuna garanzia. La GFE utilizza un timeout keepalive HTTP client di 610 secondi e un valore predefinito del timeout keepalive del backend di 600 secondi. Puoi aggiornare il timeout keepalive HTTP del client, ma il valore del timeout keepalive del backend è fisso. Puoi configurare il timeout della richiesta/risposta impostando il timeout del servizio di backend. Sebbene strettamente correlato, un keepalive HTTP e un TCP il timeout per inattività non sono la stessa cosa. Per ulteriori informazioni, consulta Timeout e tentativi di nuovo invio.

Per garantire che il carico venga bilanciato in modo uniforme, il bilanciatore del carico potrebbe chiudere correttamente una connessione TCP inviando un pacchetto FIN ACK dopo aver completato una risposta che includeva un'intestazione Connection: close oppure potrebbe emettere un frame HTTP/2GOAWAY dopo aver completato una risposta. Questo comportamento non interferisce con richieste o risposte attive.

Il numero di connessioni HTTP e sessioni TCP varia a seconda del numero di GFE che si connettono, del numero di client che si connettono ai GFE, del protocollo per i backend e della posizione in cui vengono eseguiti i deployment dei backend.

Per saperne di più, consulta Come i bilanciatori del carico delle applicazioni esterni lavoro Nella guida alle soluzioni: ottimizzazioni della capacità delle applicazioni con il carico globale Bilanciamento.

Connessioni del bilanciatore del carico delle applicazioni esterno regionale

L'Application Load Balancer esterno regionale è un servizio gestito implementato sul proxy Envoy. Il bilanciatore del carico delle applicazioni esterno regionale utilizza una subnet condivisa denominata subnet solo proxy per eseguire il provisioning di un insieme di indirizzi IP che Google utilizza per eseguire i proxy Envoy per conto tuo. Il flag --purpose per questa subnet solo proxy è impostato su REGIONAL_MANAGED_PROXY. Tutti i bilanciatori del carico basati su Envoy a livello di regione in una determinata rete e regione condividono questa subnet.

I client utilizzano l'indirizzo IP e la porta del bilanciatore del carico per connettersi al carico con il bilanciatore del carico di rete passthrough esterno regionale. Le richieste del client vengono indirizzate alla subnet solo proxy nella stessa regione del client. Il bilanciatore del carico termina le richieste dei client apre nuove connessioni dalla subnet solo proxy ai tuoi backend. Pertanto, i pacchetti inviati dal bilanciatore del carico hanno indirizzi IP di origine della sottorete solo proxy.

A seconda della configurazione del servizio di backend, il protocollo utilizzato dai proxy Envoy per connettersi ai tuoi backend può essere HTTP, HTTPS o HTTP/2. Se HTTP o HTTPS, la versione HTTP è HTTP 1.1. Il keepalive HTTP è abilitato per impostazione predefinita, come specificato nella specifica HTTP 1.1. Il proxy Envoy imposta sia il timeout keepalive HTTP del client sia il timeout keepalive del backend su un valore predefinito di 600 secondi ciascuno. Puoi aggiornare il timeout keepalive HTTP del client, ma il valore del timeout keepalive del backend è fisso. Puoi configurare il timeout della richiesta/risposta impostando il timeout del servizio di backend. Per ulteriori informazioni, consulta Timeout e ripetizioni.

Comunicazioni client con il bilanciatore del carico

  • I client possono comunicare con il bilanciatore del carico utilizzando HTTP 1.1 HTTP/2.
  • Quando viene utilizzato HTTPS, i client moderni utilizzano per impostazione predefinita HTTP/2. Questo viene controllato sul client, non sul bilanciatore del carico HTTPS.
  • Non puoi disattivare HTTP/2 apportando una modifica alla configurazione del bilanciatore del carico. Tuttavia, è possibile configurare alcuni client in modo che utilizzino HTTP 1.1 anziché HTTP/2. Ad esempio, con curl, utilizza il parametro --http1.1.
  • I bilanciatori del carico delle applicazioni esterni supportano la risposta HTTP/1.1 100 Continue.

Per l'elenco completo dei protocolli supportati dalle regole di inoltro del bilanciatore del carico delle applicazioni esterno in ogni modalità, consulta Funzionalità del bilanciatore del carico.

Indirizzi IP di origine per i pacchetti client

L'indirizzo IP di origine dei pacchetti, come visto dai backend, non è l'indirizzo IP esterno di Google Cloud del bilanciatore del carico. In altre parole, esistono due connessioni TCP.

Per i bilanciatori del carico delle applicazioni esterni globali:
  • Connessione 1, dal client originale al bilanciatore del carico (GFE):

    • Indirizzo IP di origine: il client originale (o indirizzo IP esterno se il client si trova dietro NAT o un proxy in avanti).
    • Indirizzo IP di destinazione: l'indirizzo IP del bilanciatore del carico.
  • Connessione 2, dal bilanciatore del carico (GFE) all'endpoint o alla VM di backend:

    • Indirizzo IP di origine:un indirizzo IP in uno degli intervalli specificati in Regole firewall.

    • Indirizzo IP di destinazione: l'indirizzo IP interno della VM o del contenitore di backend nella rete VPC.

Per i bilanciatori del carico delle applicazioni esterni regionali:
  • Connessione 1, dal client originale al bilanciatore del carico (subnet solo proxy):

    • Indirizzo IP di origine: il client originale (o l'indirizzo IP esterno se è protetto da NAT o un proxy di inoltro).
    • Indirizzo IP di destinazione: l'indirizzo IP del bilanciatore del carico.
  • Connessione 2, dal bilanciatore del carico (subnet solo proxy) alla VM backend oppure endpoint:

    • Indirizzo IP di origine: un indirizzo IP nel server solo proxy una subnet condivisa tra tutti i carichi basati su Envoy bilanciatori del carico di cui è stato eseguito il deployment nella stessa regione e nella stessa rete del bilanciatore del carico.

    • Indirizzo IP di destinazione:l'indirizzo IP interno della VM di backend o container nella rete VPC.

Percorsi di routing speciali

Google Cloud utilizza route speciali non definite nella rete VPC per instradare i pacchetti per i seguenti tipi di traffico:

Google Cloud utilizza route di subnet per solo proxy subnet di routing dei pacchetti per i seguenti tipi di traffico:

  • Quando utilizzi i controlli di integrità di Envoy distribuiti.

Per i bilanciatori del carico delle applicazioni esterni regionali, Google Cloud utilizza Envoy open source proxy per terminare le richieste client al bilanciatore del carico. Il bilanciatore del carico termina la sessione TCP e apre una nuova sessione TCP dalla subnet solo proxy della regione al tuo backend. Route definite all'interno del VPC per facilitare la comunicazione dai proxy Envoy ai tuoi backend e i tuoi backend ai proxy Envoy.

Porte aperte

I GFE hanno diverse porte aperte per supportare altri servizi Google che funzionano sulla stessa architettura. Quando esegui una scansione delle porte, potresti vedere altre porte aperte per altri servizi Google in esecuzione su GFEs.

Entrambi i bilanciatori del carico basati su GFE, ovvero i bilanciatori del carico delle applicazioni esterni globali e i bilanciatori del carico delle applicazioni classici, mostrano sempre le porte 80 e 443 come aperte (insieme a qualsiasi altra porta configurata nelle regole di inoltro del bilanciatore del carico). Tuttavia, se non hai configurato una regola di forwarding per la porta 80 o per la porta 443, le connessioni inviate a quelle porte vengono rifiutate. Al contrario, I bilanciatori del carico delle applicazioni esterni regionali vengono implementati utilizzando proxy Envoy e non vengono visualizzati porte extra aperte durante una scansione.

Eseguire una scansione delle porte sull'indirizzo IP di un bilanciatore del carico basato su GFE non è utile dal punto di vista del controllo per i seguenti motivi:

  • Una scansione delle porte (ad esempio con nmap) in genere non prevede alcun pacchetto di risposta o un pacchetto TCP RST durante l'esecuzione del probing SYN TCP. I GFE invieranno SYN-ACK pacchetti in risposta ai probe SYN solo per le porte su cui hai configurato una regola di forwarding. I GFE inviano pacchetti ai tuoi backend solo in risposta a pacchetti inviati all'indirizzo IP del bilanciatore del carico e alla porta di destinazione configurato nella rispettiva regola di forwarding. I pacchetti inviati a un indirizzo IP o a una porta diversa non vengono inviati ai tuoi backend.

    I GFE implementano funzionalità di sicurezza come Google Cloud Armor. Con Google Cloud Armor Standard, gli GFEs offrono protezione continua dagli attacchi DDoS volumetrici e basati su protocollo e dai flood SYN. Questa protezione è disponibile anche se non hai configurato esplicitamente Google Cloud Armor. Ti verrà addebitato solo se configuri i criteri di sicurezza o se ti registri a Managed Protection Plus.

  • I pacchetti inviati all'indirizzo IP del bilanciatore del carico possono ricevere risposta da qualsiasi GFE nel parco risorse Google ma l'analisi dell'indirizzo IP di un bilanciatore del carico combinazione di porte di destinazione interroga solo un singolo GFE connessione TCP. L'indirizzo IP del bilanciatore del carico non è assegnato a un singolo dispositivo o sistema. Pertanto, l'analisi dell'indirizzo IP di un bilanciatore del carico basato su GFE non esegue la scansione di tutti i GFE nel parco risorse di Google.

Tenendo presente questo, di seguito sono riportati alcuni modi più efficaci per eseguire la verifica della sicurezza delle istanze di backend:

  • Un revisore di sicurezza deve controllare la configurazione delle regole di forwarding del bilanciatore del carico tramite la configurazione del bilanciatore del carico. Le regole di inoltro definiscono la porta di destinazione per la quale il bilanciatore del carico accetta i pacchetti e li inoltra ai backend. Per i bilanciatori del carico basati su GFE, ogni regola di inoltro esterno può fare riferimento a una sola porta TCP di destinazione. Per un bilanciatore del carico che utilizza la porta TCP 443, viene utilizzata la porta UDP 443 quando viene eseguito l'upgrade della connessione a QUIC (HTTP/3).

  • Un revisore della sicurezza deve ispezionare la configurazione delle regole del firewall applicabile alle VM di backend. Le regole firewall che imposti bloccano il traffico proveniente dai GFE alle VM di backend, ma non bloccare il traffico in entrata verso i GFE. Per il meglio consulta la sezione sulle regole firewall.

terminazione TLS

La tabella seguente riassume come viene gestita la terminazione TLS dai bilanciatori del carico delle applicazioni esterni in ciascuna modalità.

Modalità del bilanciatore del carico terminazione TLS
Bilanciatore del carico delle applicazioni esterno globale TLS viene terminato su una GFE, che può trovarsi in qualsiasi parte del mondo.
Bilanciatore del carico delle applicazioni classico Il protocollo TLS viene terminato su un GFE, che potrebbe trovarsi ovunque nel mondo.
Bilanciatore del carico delle applicazioni esterno regionale Il protocollo TLS viene interrotto sui proxy Envoy che si trovano in una rete una subnet in una regione scelta dall'utente. Utilizza questa modalità del bilanciatore del carico se hai bisogno di un controllo geografico sulla regione in cui viene terminato TLS.

Timeout e nuovi tentativi

I bilanciatori del carico delle applicazioni esterni supportano i seguenti tipi di timeout per il traffico HTTP/HTTPS:

Tipo di timeout e descrizione Valori predefiniti Supporta valori personalizzati
Global Classica A livello di regione
Timeout del servizio di backend1

Un timeout per le richieste e le risposte. Rappresenta il tempo massimo che può trascorrere dal momento in cui il bilanciatore del carico invia il primo byte della richiesta HTTP al backend fino al momento in cui il backend restituisce l'ultimo byte della risposta HTTP. Se l'intera risposta HTTP non è stata restituita al bilanciatore del carico entro il timeout della richiesta o della risposta, i dati di risposta rimanenti vengono eliminati.

  • Per i NEG serverless su un servizio di backend: 60 minuti
  • Per tutti gli altri tipi di backend in un servizio di backend: 30 secondi
  • Per i bucket di backend: 24 ore (86.400 secondi)
Timeout keepalive HTTP del client
La quantità di tempo massima che la connessione TCP tra un client e il proxy del bilanciatore del carico può essere inattivo. La stessa connessione TCP potrebbe essere utilizzata per più richieste HTTP.
  • Per i bilanciatori del carico delle applicazioni esterni globali e gli Application Load Balancer classici, il carico il proxy del bilanciatore è un GFE di primo livello.
  • Per i bilanciatori del carico delle applicazioni esterni regionali, il proxy del bilanciatore del carico è il software Envoy.
  • Per un bilanciatore del carico delle applicazioni esterno globale e Bilanciatore del carico delle applicazioni classico: 610 secondi
  • Per un bilanciatore del carico delle applicazioni esterno regionale: 600 secondi
Timeout keepalive HTTP di backend
La quantità di tempo massima che la connessione TCP tra il carico il proxy del bilanciatore e un backend possono essere inattivi. La stessa connessione TCP potrebbe essere utilizzata per più richieste HTTP.
  • Per i bilanciatori del carico delle applicazioni esterni globali e gli Application Load Balancer classici, il carico il proxy del bilanciatore è un GFE di secondo livello.
  • Per i bilanciatori del carico delle applicazioni esterni regionali, il proxy del bilanciatore del carico è il software Envoy.
  • Per i servizi di backend: 10 minuti (600 secondi)
  • Per i bucket di backend: 6 minuti (360 secondi)
Timeout di inattività della sessione QUIC
Il periodo di tempo massimo durante il quale una sessione QUIC può rimanere inattiva tra (downstream) e il GFE di un bilanciatore del carico delle applicazioni esterno globale o il bilanciatore del carico delle applicazioni classico.

Per i bilanciatori del carico delle applicazioni esterni globali e gli Application Load Balancer classici:

Il timeout di inattività della sessione QUIC è il minimo tra il client inattivo o il timeout di inattività del GFE (300 secondi).

Il timeout di inattività di GFE è fisso su 300 secondi. Il timeout di inattività del client che è possibile configurare.

1 Non configurabile per i backend NEG serverless. No e configurabili per i bucket di backend.

Timeout del servizio di backend

Il timeout del servizio di backend configurabile rappresenta il tempo massimo che il bilanciatore del carico attende che il backend elabori una richiesta HTTP e restituisca la risposta HTTP corrispondente. Ad eccezione dei NEG serverless, il valore predefinito per il timeout del servizio di backend è 30 secondi.

Ad esempio, se vuoi scaricare un file da 500 MB e il valore del timeout del servizio di backend è 90 secondi, il bilanciatore del carico si aspetta che il backend invii l'intero file da 500 MB entro 90 secondi. È possibile configurare il timeout del servizio di backend non è sufficiente per consentire al backend di inviare il messaggio completo Risposta HTTP. In questa situazione, se il bilanciatore del carico ha ricevuto almeno le intestazioni di risposta HTTP dal backend, restituisce le intestazioni di risposta complete e la maggior parte del corpo della risposta che è riuscito a ottenere entro il timeout del servizio di backend.

Devi impostare il timeout del servizio di backend sul periodo di tempo più lungo che prevedi sia necessario al backend per elaborare una risposta HTTP. Dovresti aumenta il timeout del servizio di backend se il software in esecuzione sul tuo backend richiede più tempo per elaborare una richiesta HTTP e restituire l'intera risposta. Ad esempio, devi aumentare il timeout se visualizzi risposte HTTP 408 con jsonPayload.statusDetail client_timed_out.

Il timeout del servizio di backend accetta valori compresi tra 1 e 2,147,483,647 secondi; tuttavia, i valori più elevati non sono opzioni di configurazione pratiche. Inoltre, Google Cloud non garantisce che una connessione TCP sottostante possa rimanere aperta per l'intero valore del timeout del servizio di backend. Nel caso dei bilanciatori del carico delle applicazioni classici e globali, i GFE impongono un timeout massimo effettivo del servizio di backend di 86,400 secondi (1 giorno). I sistemi client devono implementare una logica per i nuovi tentativi invece di affidarsi a un TCP la connessione rimanga aperta per lunghi periodi di tempo.

Per configurare il timeout del servizio di backend, utilizza uno dei seguenti metodi:

  • Console Google Cloud: modifica il campo Timeout del servizio di backend del bilanciatore del carico.
  • Google Cloud CLI: utilizzare il comando gcloud compute backend-services update per modificare il parametro --timeout del servizio di backend risorsa.
  • API: per un bilanciatore del carico delle applicazioni esterno globale o un bilanciatore del carico delle applicazioni classico, modifica il parametro timeoutSec per globale backendServices risorsa.
  • API: per un bilanciatore del carico delle applicazioni esterno regionale, modifica il parametro timeoutSec per la risorsa regionBackendServices.
I timeout delle connessioni WebSocket non corrispondono sempre ai timeout dei servizi di backend. I timeout di connessione Websocket dipendono dal tipo di bilanciatore del carico:

Modalità bilanciatore del carico Valori predefiniti Descrizione del timeout per i websocket
Bilanciatore del carico delle applicazioni esterno globale Timeout del servizio di backend: 30 secondi

Le connessioni WebSocket attive non utilizzano il timeout del servizio di backend configurato del bilanciatore del carico. Le connessioni vengono chiuse automaticamente dopo 24 ore (86.400 secondi). Questo limite di 24 ore è fisso e sostituisce il timeout del servizio di backend se è superiore a 24 ore.

Le connessioni WebSocket inattive vengono chiuse dopo il timeout del servizio di backend.

Non consigliamo valori di timeout del servizio di backend superiori a 24 ore (86.400 secondi) perché Google Cloud riavvia periodicamente i GFEs per gli aggiornamenti software e altre operazioni di manutenzione di routine. Il valore del timeout del servizio di backend non ritarda le attività di manutenzione. Più a lungo valore di timeout del servizio di backend, più è probabile che Google Cloud termina le connessioni TCP per la manutenzione.

Bilanciatore del carico delle applicazioni classico backend service timeout: 30 seconds

Le connessioni WebSocket, inattive o attive, si chiudono automaticamente dopo il timeout del servizio di backend.

Sconsigliamo di utilizzare valori di timeout del servizio di backend maggiori di 24 ore (86.400 secondi) perché Google Cloud riavvia periodicamente i GFE per aggiornamenti software e altre attività di manutenzione ordinaria. Il tuo servizio di backend di timeout non ritarda le attività di manutenzione. Maggiore è il valore del timeout del servizio di backend, maggiore è la probabilità che Google Cloud interrompa le connessioni TCP per la manutenzione.

Bilanciatore del carico delle applicazioni esterno regionale backend service timeout: 30 seconds

Le connessioni WebSocket attive non utilizzano il timeout del servizio di backend di tramite il bilanciatore del carico.

Le connessioni WebSocket inattive vengono chiuse dopo il timeout del servizio di backend.

Google Cloud riavvia o modifica periodicamente il numero di attività software di Envoy per il servizio. Più lungo è il valore di timeout del servizio di backend, è più probabile che le attività Envoy riavviino o terminino le connessioni TCP.

I bilanciatori del carico delle applicazioni esterni regionali utilizzano routeActions.timeout dell'URL mappa e ignora il timeout del servizio di backend. Quando routeActions.timeout non è configurato. Il valore del backend è il timeout del servizio. Quando viene fornito routeActions.timeout, il timeout del servizio di backend viene ignorato e viene utilizzato il valore di routeActions.timeout come timeout per le richieste e le risposte.

Timeout keepalive HTTP del client

Il timeout keepalive HTTP del client rappresenta il tempo massimo che una connessione TCP può rimanere inattiva tra il client (a valle) e uno dei seguenti tipi di proxy:

  • Per un bilanciatore del carico delle applicazioni esterno globale o un bilanciatore del carico delle applicazioni classico: un front-end Google di primo livello
  • Per un bilanciatore del carico delle applicazioni esterno regionale: un proxy Envoy

Un timeout keepalive HTTP rappresenta il timeout di inattività TCP per l'oggetto e connessioni TCP. Il timeout keepalive HTTP del client non si applica ai websocket.

  • Per un bilanciatore del carico delle applicazioni esterno globale, il valore predefinito è 610 secondi. Puoi configurare il timeout keepalive HTTP del client con un valore tra 5 e 1200 secondi.
  • Per un bilanciatore del carico delle applicazioni classico, il timeout keepalive HTTP del client è fissato a 610 secondi.
  • Per un bilanciatore del carico delle applicazioni esterno regionale, il timeout keepalive HTTP del client è fissato a 600 secondi.

Per configurare il parametro di timeout keepalive, utilizza uno dei seguenti metodi:

Il timeout keepalive HTTP del client del bilanciatore del carico deve essere maggiore del timeout keepalive HTTP (inattività TCP) utilizzato dai client o dai proxy a valle. Se un client a valle ha un timeout keepalive HTTP (inattività TCP) maggiore rispetto al timeout keepalive HTTP del client del bilanciatore del carico, è possibile che si verifichi una condizione di gara. Dal punto di vista di un cliente downstream, un'azienda La connessione TCP può rimanere inattiva per un periodo superiore a quanto consentito dal caricamento con il bilanciatore del carico di rete passthrough esterno regionale. Ciò significa che il client downstream può inviare pacchetti dopo che il bilanciatore del carico ritiene che la connessione TCP sia chiusa. In questo caso, il bilanciatore del carico risponde con un pacchetto di reset TCP (RST).

Timeout keepalive HTTP di backend

I bilanciatori del carico delle applicazioni esterni sono proxy che utilizzano almeno due connessioni TCP:

  • Per un bilanciatore del carico delle applicazioni esterno globale o un bilanciatore del carico delle applicazioni classico, esiste una prima connessione TCP tra il client (a valle) e un GFE di primo livello. I GFE del primo strato si connettono ai GFE del secondo strato e poi ai GFE del secondo strato e una seconda connessione TCP con i tuoi backend.

  • Per un bilanciatore del carico delle applicazioni esterno regionale, esiste una prima connessione TCP tra il client (a valle) e un proxy Envoy. Il proxy Envoy apre quindi una seconda connessione TCP ai tuoi backend.

Le connessioni TCP secondarie del bilanciatore del carico potrebbero non essere chiuse dopo ogni richiesta; possono rimanere aperte e gestire più richieste e risposte HTTP. La il timeout keepalive HTTP di backend definisce il timeout di inattività TCP tra il il bilanciatore del carico e i backend. Il timeout keepalive HTTP del backend non si applica ai websocket.

Il timeout keepalive del backend è fissato a 10 minuti (600 secondi) e non può essere modificato. Il backend del bilanciatore del carico Il timeout keepalive deve essere inferiore al timeout keepalive utilizzato dal software in esecuzione sui tuoi backend. In questo modo si evita una condizione di gara in cui il sistema operativo dei tuoi backend potrebbe chiudere le connessioni TCP con un reset TCP (RST). Poiché il timeout keepalive del backend per il bilanciatore del carico non è configurabile, devi configurare il software di backend in modo che il valore del timeout keepalive HTTP (inattività TCP) sia superiore a 600 secondi.

Nella tabella seguente sono elencate le modifiche necessarie per modificare il timeout keepalive per i comuni software dei server web.

Software server web Parametro Impostazione predefinita Impostazione consigliata
Apache KeepAliveTimeout KeepAliveTimeout 5 KeepAliveTimeout 620
nginx keepalive_timeout keepalive_timeout 75s; keepalive_timeout 620s;

Timeout di inattività della sessione QUIC

Il timeout di inattività della sessione QUIC rappresenta il tempo massimo che una sessione QUIC può rimanere inattiva tra il client e il GFE di un bilanciatore del carico delle applicazioni esterno globale o di un bilanciatore del carico delle applicazioni classico.

Il valore del timeout di inattività della sessione QUIC è definito come il valore minimo del timeout di inattività del client o del timeout di inattività GFE (300 secondi). Il timeout di inattività di GFE è fisso su 300 secondi. Il timeout di inattività del client può essere configurato.

Nuovi tentativi

Il supporto della logica dei nuovi tentativi dipende dalla modalità del bilanciatore del carico delle applicazioni esterno.

Modalità bilanciatore del carico Logica dei nuovi tentativi
Bilanciatore del carico delle applicazioni esterno globale

Configurabile utilizzando un criterio di ripetizione nella mappa URL. Il numero predefinito di nuovi tentativi (numRetries) è 1. Il numero massimo di tentativi che possono essere configurati utilizzando il criterio di ripetizione è 25. Il valore massimo il valore di perTryTimeout configurabile è di 24 ore.

Senza un criterio di ripetizione, le richieste non andate a buon fine che non hanno Corpo HTTP (ad esempio, richieste GET) che generano HTTP Risposte 502, 503 o 504 (retryConditions=["gateway-error"]) sono stati riprovati una volta.

Le richieste HTTP POST non vengono tentate di nuovo.

Le richieste di cui è stato eseguito il riavvio generano una sola voce di log per la risposta finale.

Bilanciatore del carico delle applicazioni classico

Il criterio di ripetizione non può essere modificato per le ripetizioni della connessione.

Le richieste HTTP POST non vengono tentate di nuovo.

Le richieste HTTP GET vengono sempre riprovate una volta, purché almeno l'80% dei backend sia integro. Se è presente un solo dell'istanza di backend di un gruppo e la connessione al backend di un'istanza di backend, la percentuale di istanze di backend in stato non integro è 100%, quindi il GFE non proverà di nuovo a eseguire la richiesta.

Il bilanciatore del carico ritenta una richiesta GET non riuscita se la prima richiesta non è riuscito prima di ricevere le intestazioni delle risposte dall'istanza di backend.

Le richieste ricalcolate generano solo una voce di log per l'ultima la risposta corretta. Per ulteriori informazioni, consulta Logging e monitoraggio del bilanciatore del carico delle applicazioni esterno.

Le richieste non andate a buon fine fanno sì che il bilanciatore del carico sintetizzi una risposta HTTP 502.

Bilanciatore del carico delle applicazioni esterno regionale

Configurabile utilizzando un criterio per i tentativi ripetuti nella mappa URL. Il numero predefinito di tentativi (numRetries) è 1. Il numero massimo di nuovi tentativi possibili tramite il criterio per i nuovi tentativi è 25. Il valore perTryTimeout configurabile massimo è 24 ore.

Senza un criterio di ripetizione, le richieste non andate a buon fine che non hanno Corpo HTTP (ad esempio, richieste GET) che generano HTTP Risposte 502, 503 o 504 nuovi tentativi una volta.

Le richieste HTTP POST non vengono ripetute.

Le richieste ricalcolate generano solo una voce di log per l'ultima la risposta corretta.

Il protocollo WebSocket è supportato con GKE In entrata.

Gestione di richieste e risposte non consentite

Il bilanciatore del carico blocca sia le richieste client sia le risposte del backend che raggiungono rispettivamente il backend o il client per vari motivi. Alcuni motivi sono strettamente per la conformità a HTTP/1.1 e altri per evitare che i dati inaspettati vengano trasmessi ai o dai backend. Nessuno dei controlli può essere disabilitato.

Il bilanciatore del carico blocca le seguenti richieste per la conformità a HTTP/1.1:

  • Non può analizzare la prima riga della richiesta.
  • In un'intestazione manca i due punti (:).
  • Le intestazioni o la prima riga contengono caratteri non validi.
  • La lunghezza dei contenuti non è un numero valido o sono presenti più contenuti intestazioni di lunghezza.
  • Esistono più chiavi di codifica di trasferimento o valori di codifica di trasferimento non riconosciuti.
  • È presente un corpo non in blocchi e nessuna lunghezza del contenuto specificata.
  • I blocchi del corpo non sono analizzabili. Questo è l'unico caso in cui alcuni dati raggiungono il backend. Il bilanciatore del carico chiude le connessioni al client quando riceve un blocco non analizzabile.

Gestione delle richieste

Il bilanciatore del carico blocca la richiesta se una delle seguenti condizioni è vera:

  • La dimensione totale delle intestazioni delle richieste e l'URL della richiesta superano il limite di la dimensione massima dell'intestazione della richiesta bilanciatori del carico delle applicazioni esterni.
  • Il metodo di richiesta non consente un corpo, ma la richiesta ne ha uno.
  • La richiesta contiene un'intestazione Upgrade, al contrario dell'intestazione Upgrade utilizzata per abilitare le connessioni WebSocket.
  • La versione HTTP è sconosciuta.

Gestione della risposta

Il bilanciatore del carico blocca la risposta del backend se una delle seguenti condizioni è vera:

  • Le dimensioni totali delle intestazioni di risposta superano il limite di dimensione massima delle intestazioni di risposta per i bilanciatori del carico delle applicazioni esterni.
  • La versione HTTP è sconosciuta.

Quando gestisce sia la richiesta che la risposta, il bilanciatore del carico potrebbe rimuovere o sovrascrivere hop-by-hop intestazioni in HTTP/1.1 prima di inoltrarli alla destinazione prevista.

Distribuzione del traffico

Quando aggiungi un gruppo di istanza di backend o un NEG a un servizio di backend, specifichi un modalità di bilanciamento, che definisce un metodo di misurazione del carico del backend e un target e la capacità di archiviazione. I bilanciatori del carico delle applicazioni esterni supportano due modalità di bilanciamento:

  • RATE, per i gruppi di istanze o NEG, è il numero massimo target di richieste (query) al secondo (RPS, QPS). Il numero massimo di RPS/QPS target può essere superato se tutti i backend hanno raggiunto o superato la capacità.

  • UTILIZATION è l'utilizzo del backend delle VM in un gruppo di istanze.

La modalità di distribuzione del traffico tra i backend dipende dalla modalità del bilanciatore del carico.

Bilanciatore del carico delle applicazioni esterno globale

Prima che un Google Front End (GFE) invii richieste alle istanze di backend, stima quali istanze di backend hanno la capacità di ricevere richieste. Questa stima della capacità viene effettuata in modo proattivo, non contemporaneamente all'arrivo delle richieste. I GFE ricevono informazioni periodiche sulla capacità disponibile e di distribuire le richieste in arrivo di conseguenza.

Il significato di capacità dipende in parte dalla modalità di bilanciamento. Per la modalità RATE è relativamente semplice: un GFE determina esattamente quante richieste può assegnare al secondo. Il bilanciamento del carico basato su UTILIZATION è più complesso: il bilanciatore del carico controlla l'utilizzo corrente delle istanze e poi stima un carico di query che ciascuna istanza può gestire. Questa stima cambia nel tempo con l'utilizzo delle istanze e la variazione dei pattern di traffico.

Entrambi i fattori, la stima della capacità e l'assegnazione proattiva, influenzano distribuzione tra le istanze. Pertanto, Cloud Load Balancing si comporta in modo diverso rispetto a un semplice bilanciatore del carico round-robin che distribuisce le richieste esattamente a 50:50 tra due istanze. Il bilanciamento del carico di Google Cloud tenta di ottimizzare la selezione dell'istanza di backend per ogni richiesta.

Per il bilanciatore del carico delle applicazioni esterno globale, il bilanciamento del carico è a due livelli. La valutazione determina la ponderazione o la frazione di traffico che deve essere inviata (gruppo di istanze o NEG). Il criterio di bilanciamento del carico (LocalityLbPolicy) determina come il traffico viene distribuito alle istanze più endpoint all'interno del gruppo. Per ulteriori informazioni, consulta la sezione Bilanciamento del carico criteri relativi alle località (API del servizio di backend documentazione).

Per il bilanciatore del carico delle applicazioni classico, la modalità di bilanciamento viene utilizzata per selezionare il backend più favorevole (gruppo di istanze o NEG). Il traffico viene quindi distribuito tra istanze o endpoint all'interno del backend.

Modalità di distribuzione delle richieste

I bilanciatori del carico delle applicazioni esterni basati su GFE utilizzano la seguente procedura per distribuire le richieste in arrivo:

  1. Dal client al GFE di primo livello. I router di confine pubblicizzano l'indirizzo IP esterno della regola di inoltro ai confini della rete di Google. Ogni annuncio elenca un hop successivo in un sistema di bilanciamento del carico di livello 3/4 (Maglev). I sistemi Maglev indirizzano il traffico a un primo livello di Google Front End (GFE).
    • Quando utilizzi il livello Premium, Google pubblicizza il tuo carico l'indirizzo IP del bilanciatore da tutti i punti di presenza, a livello mondiale. Ogni indirizzo IP del bilanciatore del carico è anycast globale.
    • Quando utilizzi il livello Standard, Google pubblicizza l'indirizzo IP del tuo bilanciatore del carico dai punti di presenza associati alla regione della regola di inoltro. Il bilanciatore del carico utilizza un indirizzo IP esterno regionale. L'utilizzo di una regola di inoltro di livello standard ti limita ai backend NEG di gruppi di istanze e zonali nella stessa regione della regola di inoltro del bilanciatore del carico.
  2. Dal GFE di primo livello a quello di secondo livello. GFE di primo livello termina TLS se necessario, quindi instrada il traffico ai GFE di secondo livello in base alla seguente procedura:
    • I GFE di primo livello analizzano la mappa URL e selezionano un servizio o un bucket di backend.
    • Per i servizi di backend con NEG internet, i GFE di primo livello selezionano un gateway di forwarding esterno di secondo livello posizionato con il primo livello GFE. Il gateway di forwarding invia richieste all'endpoint NEG internet. Questo conclude il processo di distribuzione delle richieste per i NEG internet.
    • Per i servizi di backend con serverless NEG, Private Service Connect I NEG (PSC) e i bucket di backend, i GFE di primo livello selezionano un GFE di secondo livello nella regione corrispondente a quella del NEG o del bucket. Per i bucket Cloud Storage con più regioni, i GFE di primo livello selezionano i GFE di secondo livello in una regione il più vicino possibile ai GFE di primo livello (definito dal tempo di percorrenza della rete).
    • Per i servizi di backend con gruppi di istanze, NEG di zona con GCE_VM_IP_PORT endpoint e NEG ibridi, Il sistema di gestione della capacità di Google informa i GFE di primo livello circa e la capacità configurata per ogni backend. La capacità configurata per un di backend è definito modalità di bilanciamento, la capacità target della modalità di bilanciamento scaler di capacità.
      • Livello standard: i GFE di primo livello selezionano un GFE di secondo livello nella regione contenente i backend.
      • Livello Premium: i GFE di primo livello selezionano i GFE di secondo livello da un insieme di regioni applicabili. Le regioni applicabili sono tutte le regioni in cui i backend configurate, escluse le regioni in cui sono configurati backend con capacità pari a zero. I GFE di primo livello selezionano il GFE di secondo livello più vicino in una regione applicabile (definita dal tempo di percorrenza della rete). Se sono configurati in due o più regioni, i GFE di primo livello possono inoltrare le richieste ad altre regioni applicabili se una regione di prima scelta è pieno. Lo spillover in altre regioni è possibile quando tutti i backend della regione di prima scelta sono al limite della capacità.
  3. I GFE di secondo livello selezionano i backend. I GFE di secondo livello si trovano zone di una regione. Per selezionare un backend, utilizza la seguente procedura:
    • Per i servizi di backend con NEG serverless, Private Service Connect I NEG, i bucket di backend e i GFE di secondo livello inoltrano le richieste sistemi di produzione IA. Questo conclude la procedura di distribuzione delle richieste per questi backend.
    • Per i servizi di backend con gruppi di istanze, NEG zonali con endpoint GCE_VM_IP_PORT e NEG ibride, i sistemi di sonde di controllo di Google informano i GFE di secondo livello sullo stato del controllo di integrità delle istanze o degli endpoint di backend.

      Solo livello Premium: se il GFE di secondo livello non ha uno stato integro di backend o endpoint nella propria regione, potrebbe inviare richieste un altro GFE di secondo livello in una regione applicabile diversa con di backend. Lo spillover tra GFEs di secondo livello in regioni diverse non esaurisce tutte le possibili combinazioni da regione a regione. Per distoglie il traffico dai backend in una determinata regione, di backend in modo che non superino i controlli di integrità, imposta il dello scaler della capacità del backend a zero, quindi il GFE del primo livello esclude regione durante il passaggio precedente.

    Il GFE di secondo livello indirizza quindi le richieste alle istanze di backend degli endpoint in zone all'interno della loro regione, come discusso nel prossimo passaggio.

  4. Il secondo livello GFE seleziona una zona. Per impostazione predefinita, le GFE di secondo livello utilizzano l'algoritmo WATERFALL_BY_REGION in cui ogni GFE di secondo livello predilige selezionare istanze o endpoint di backend nella stessa zona della zona che contiene la GFE di secondo livello. Poiché WATERFALL_BY_REGION riduce al minimo il traffico tra le zone, senza percentuali di richieste, ogni GFE di secondo livello può inviare richieste in modo esclusivo nella stessa zona del GFE di secondo livello.

    Solo per i bilanciatori del carico delle applicazioni esterni globali, i GFE di secondo livello possono essere configurati per utilizzare uno dei seguenti algoritmi alternativi utilizzando un serviceLbPolicy:

    • SPRAY_TO_REGION: le istanze GFE di secondo livello non preferiscono selezionare endpoint o istanze di backend nella stessa zona dell'istanza GFE di secondo livello. I GFEs di secondo livello tentano di distribuire il traffico a tutte le istanze o gli endpoint di backend in tutte le zone della regione. Questo può portare a una distribuzione più uniforme del carico, a scapito dell'aumento il traffico tra le zone.
    • WATERFALL_BY_ZONE: per i GFE di secondo livello è vivamente consigliato selezionare istanze o endpoint di backend nella stessa zona del GFE di secondo livello. I GFE di secondo livello indirizzano le richieste solo ai backend in zone diverse dopo che tutti i backend nella zona attuale hanno raggiunto le loro capacità configurate.
  5. Il secondo livello GFE seleziona le istanze o gli endpoint all'interno della zona. Per impostazione predefinita, un GFE di secondo livello distribuisce le richieste tra i backend in modo round robin. Solo per i bilanciatori del carico delle applicazioni esterni globali, puoi modificare questo valore utilizzando un criterio di località per il bilanciamento del carico (localityLbPolicy). Il criterio di località per il bilanciamento del carico si applica solo ai backend all'interno della zona selezionata discussa nel passaggio precedente.

Bilanciatore del carico delle applicazioni esterno regionale

Per i bilanciatori del carico delle applicazioni esterni regionali, la distribuzione del traffico si basa sulla modalità di bilanciamento del carico e sul criterio di bilanciamento del carico per le località.

La modalità di bilanciamento determina la ponderazione e la frazione di traffico che devono essere inviati a ciascun gruppo (gruppo di istanze o NEG). Criterio per le località di bilanciamento del carico (LocalityLbPolicy) determina il bilanciamento del carico dei backend all'interno del gruppo.

Quando un servizio di backend riceve traffico, lo indirizza innanzitutto a un backend (gruppo di istanze o NEG) in base alla modalità di bilanciamento del backend. Dopo aver selezionato un backend, il traffico viene distribuito tra le istanze o gli endpoint del gruppo di backend in base al criterio di località del bilanciamento del carico.

Per ulteriori informazioni, consulta le seguenti risorse:

Affinità sessione

Affinità sessione tenta il criterio del "best effort" per inviare le richieste da un determinato client alla purché sia integro e abbia la capacità, in base alla modalità di bilanciamento configurata.

Quando utilizzi l'affinità sessione, ti consigliamo la modalità di bilanciamento RATE anziché di UTILIZATION. L'affinità sessione funziona meglio se imposti la modalità di bilanciamento su al secondo (RPS).

I bilanciatori del carico delle applicazioni esterni offrono i seguenti tipi di affinità di sessione:

La tabella seguente riassume le opzioni di affinità sessione supportate supportate da bilanciatori del carico delle applicazioni esterni in ciascuna modalità:

Modalità bilanciatore del carico Opzioni di affinità sessione
  Nessuna IP client Cookie generato Campo intestazione Cookie HTTP Cookie di sessione stateful
Bilanciatore del carico delle applicazioni esterno globale
Bilanciatore del carico delle applicazioni classico
Bilanciatore del carico delle applicazioni esterno regionale

Alta disponibilità e failover

L'alta disponibilità e il failover nei bilanciatori del carico delle applicazioni esterni possono essere configurati a livello di bilanciatore del carico. Questo viene gestito creando bilanciatori del carico delle applicazioni esterni regionali di backup in qualsiasi regione in cui è necessario il backup.

La tabella seguente descrive il comportamento del failover in ogni modalità:

Modalità del bilanciatore del carico Metodi di failover
Bilanciatore del carico delle applicazioni esterno globale

Bilanciatore del carico delle applicazioni classico

Puoi configurare un modello attivo-passivo configurazione di failover in cui viene eseguito il failover del traffico verso un backup un bilanciatore del carico delle applicazioni esterno regionale. Utilizzi i controlli di integrità per rilevare le interruzioni e i criteri di routing di Cloud DNS per instradare il traffico quando viene attivato il failover.

Bilanciatore del carico delle applicazioni esterno regionale

Utilizza uno dei seguenti metodi per garantire un'alta disponibilità deployment:

  • Puoi configurare una configurazione di failover attivo-passivo in cui il traffico viene eseguito in un bilanciatore del carico delle applicazioni esterno regionale di riserva. Utilizzerai i controlli di integrità per rilevare interruzioni e Routing di failover di Cloud DNS criterio per instradare il traffico quando il failover è attivato da problemi di integrità controlli. Per maggiori dettagli, consulta Failover per bilanciatori del carico delle applicazioni esterni.
  • Puoi configurare una configurazione di failover attivo-attivo in cui esegui il deployment di più bilanciatori del carico delle applicazioni esterni regionali individuali nelle regioni che ritieni supportino al meglio il traffico per la tua applicazione. Utilizza un criterio di routing per la geolocalizzazione di Cloud DNS per instradare il traffico alla regione appropriata in base all'origine della richiesta del client. Puoi anche utilizzare i controlli di integrità rilevare le interruzioni del servizio e instradare il traffico solo ai bilanciatori del carico in stato integro. Per per i dettagli, consulta Alta per gli Application Load Balancer esterni regionali.

Supporto HTTP/2

HTTP/2 è una revisione importante del protocollo HTTP/1. HTTP/2 è supportato per le connessioni tra i client e il bilanciatore del carico delle applicazioni esterno e per le connessioni tra il bilanciatore del carico e i relativi backend.

Il bilanciatore del carico negozia automaticamente HTTP/2 con i client nell'ambito dell'handshake TLS utilizzando l'estensione TLS ALPN. Anche se un bilanciatore del carico è configurato per utilizzare HTTPS, i client moderni utilizzano per impostazione predefinita HTTP/2. Questo viene controllato sul lato client, non sul bilanciatore del carico.

Se un client non supporta HTTP/2 e il bilanciatore del carico è configurato per utilizzare HTTP/2 tra il bilanciatore del carico e le istanze di backend, il bilanciatore del carico potrebbe comunque negoziare una connessione HTTPS o accettare richieste HTTP non sicure. Queste richieste HTTPS o HTTP vengono poi trasformate dal bilanciatore del carico in modo da eseguire il proxy delle richieste tramite HTTP/2 alle istanze di backend.

Per utilizzare HTTP/2, devi attivare TLS sui tuoi backend. Per ulteriori informazioni, vedi Crittografia dal bilanciatore del carico di backend.

Stream simultanei HTTP/2 massimi

L'impostazione HTTP/2 SETTINGS_MAX_CONCURRENT_STREAMS descrive il numero massimo di stream accettati da un endpoint, iniziati dal peer. Il valore pubblicizzato da un client HTTP/2 a un Il bilanciatore del carico Google Cloud è effettivamente privo di significato perché il carico non avvia flussi di dati al client.

Nei casi in cui il bilanciatore del carico utilizza HTTP/2 per comunicare con un server sia in esecuzione su una VM, il bilanciatore del carico rispetta SETTINGS_MAX_CONCURRENT_STREAMS valore pubblicizzato dal server. Se il valore se viene pubblicizzato il valore zero, il bilanciatore del carico non può inoltrare le richieste al server e ciò potrebbe causare errori.

Limitazioni HTTP/2

  • HTTP/2 tra il bilanciatore del carico e l'istanza può richiedere molto più connessioni TCP all'istanza rispetto a HTTP(S). Il pool di connessioni, un'ottimizzazione che riduce il numero di queste connessioni con HTTP(S), non è attualmente disponibile con HTTP/2. Di conseguenza, potresti notare latenze elevate del backend perché le connessioni al backend vengono effettuate più di frequente.
  • HTTP/2 tra il bilanciatore del carico e il backend non supporta l'esecuzione tramite il protocollo WebSocket su un singolo flusso di una connessione HTTP/2 (RFC 8441).
  • HTTP/2 tra il bilanciatore del carico e il backend non supporta il push del server.
  • La percentuale di errori gRPC e il volume di richieste non sono visibili nella l'API Google Cloud o la console Google Cloud. Se l'endpoint gRPC restituisce un errore, i log del bilanciatore del carico e i dati di monitoraggio segnalano il codice di risposta HTTP OK 200.

Supporto di HTTP/3

HTTP/3 è un protocollo internet di nuova generazione. È basato su IETF QUIC, un protocollo sviluppato dal protocollo Google QUIC originale. HTTP/3 corrente supportato tra il bilanciatore del carico delle applicazioni esterno, Cloud CDN e i client.

In particolare:

  • QUIC di IETF è un protocollo del livello di trasporto che fornisce il controllo della congestione e simile a TCP, utilizza TLS 1.3 per la sicurezza e ha migliorato le prestazioni dei dispositivi.
  • HTTP/3 è un livello di applicazione basato su QUIC IETF e si basa su QUIC per gestire il multiplexing, il controllo della congestione, il rilevamento delle perdite e la ritrasmissione.
  • HTTP/3 consente un avvio più rapido della connessione client, elimina i blocchi head-of-line nei flussi multiplex e supporta la migrazione di connessioni quando un indirizzo IP client viene modificato.
  • HTTP/3 è supportato per le connessioni tra i client e il bilanciatore del carico. e non connessioni tra il bilanciatore del carico e i backend.
  • Le connessioni HTTP/3 utilizzano l'algoritmo per il controllo della congestione BBR.

HTTP/3 sul bilanciatore del carico consente di migliorare i tempi di caricamento della pagina web e di ridurre il rebuffering e migliorare la velocità effettiva nelle connessioni a latenza più elevata.

La tabella seguente specifica il supporto HTTP/3 per i bilanciatori del carico delle applicazioni esterni in ogni .

Modalità del bilanciatore del carico Supporto di HTTP/3
Bilanciatore del carico delle applicazioni esterno globale (sempre di livello Premium)
Bilanciatore del carico delle applicazioni classico nel livello Premium
Bilanciatore del carico delle applicazioni classico nel livello Standard
Bilanciatore del carico delle applicazioni esterno regionale (livello Premium o Standard)

Come viene negoziato HTTP/3

Quando HTTP/3 è abilitato, il bilanciatore del carico pubblicizza questo supporto ai client, consentendo ai client che supportano HTTP/3 di tentare di stabilire connessioni HTTP/3 con il bilanciatore del carico HTTPS.

  • I client implementati correttamente ricorrono sempre a HTTPS o HTTP/2 quando non è in grado di stabilire una connessione HTTP/3.
  • I client che supportano HTTP/3 utilizzano le proprie conoscenze memorizzate nella cache di HTTP/3 per evitare viaggi di andata e ritorno non necessari in futuro.
  • Grazie a questo fallback, l'attivazione o la disattivazione di HTTP/3 nel bilanciatore del carico non interrompe la capacità del bilanciatore del carico di connettersi ai client.

Il supporto è pubblicizzato nell'Alt-Svc intestazione della risposta HTTP. Quando HTTP/3 è abilitato, le risposte del bilanciatore del carico includono il seguente valore dell'intestazione alt-svc:

alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000"

Se HTTP/3 è stato impostato esplicitamente su DISABLE, le risposte non includono un'intestazione di risposta alt-svc.

Quando HTTP/3 è abilitato sul bilanciatore del carico HTTPS, in alcuni casi possono il client dovrà ricorrere a HTTPS o HTTP/2 anziché negoziare HTTP/3. Di seguito sono elencati alcuni esempi:

  • Quando un client supporta versioni di HTTP/3 non compatibili con il protocollo Versioni HTTP/3 supportate dal bilanciatore del carico HTTPS.
  • Quando il bilanciatore del carico rileva che il traffico UDP è bloccato o ha una frequenza limitata in modo tale da impedire il funzionamento di HTTP/3.
  • Il client non supporta affatto HTTP/3 e, di conseguenza, non tenta di negoziare una connessione HTTP/3.

Quando una connessione passa a HTTPS o HTTP/2, non lo conteggiamo come un guasto del bilanciatore del carico.

Prima di attivare HTTP/3, assicurati che i comportamenti descritti in precedenza siano accettabile per i tuoi carichi di lavoro.

Configurare HTTP/3

Sia NONE (il valore predefinito) sia ENABLE attivano il supporto HTTP/3 per il bilanciatore del carico.

Quando HTTP/3 è abilitato, il bilanciatore del carico lo pubblicizza ai client, il che consente ai client che lo supportano di negoziare una versione HTTP/3 con il bilanciatore del carico. I client che non supportano HTTP/3 non negoziano una connessione HTTP/3. Tu sì non è necessario disattivare esplicitamente HTTP/3, a meno che tu non abbia identificato il client guasto implementazioni.

I bilanciatori del carico delle applicazioni esterni offrono tre modi per configurare HTTP/3, come mostrato nella tabella seguente.

Valore quicOverride Comportamento
NONE

Il supporto di HTTP/3 viene pubblicizzato ai client.

ENABLE

Il supporto di HTTP/3 viene pubblicizzato ai client.

Nota: TLS 0-RTT (noto anche come TLS Early Data) non è ancora supportato per HTTP/3.

DISABLE Disattiva in modo esplicito la pubblicità di HTTP/3 e Google QUIC ai client.

Per attivare (o disattivare) HTTP/3 in modo esplicito, segui questi passaggi.

Console: HTTPS

  1. Nella console Google Cloud, vai alla pagina Bilanciamento del carico.

Vai a Bilanciamento del carico

  1. Seleziona il bilanciatore del carico che vuoi modificare.
  2. Fai clic su Configurazione frontend.
  3. Seleziona l'indirizzo IP frontend e la porta che vuoi modificare. Per modificare una configurazione HTTP/3, il protocollo deve essere HTTPS.

Attivare HTTP/3

  1. Seleziona il menu Negoziazione QUIC.
  2. Per abilitare esplicitamente HTTP/3 per questo frontend, seleziona Abilitato.
  3. Se hai più regole frontend che rappresentano IPv4 e IPv6, assicurati di attivare HTTP/3 su ogni regola.

Disabilita HTTP/3

  1. Seleziona il menu Negoziazione QUIC.
  2. Per disabilitare esplicitamente HTTP/3 per questo frontend, seleziona Disabilitato.
  3. Se hai più regole frontend che rappresentano IPv4 e IPv6, assicurati di disattivare HTTP/3 per ogni regola.

gcloud: HTTPS

Prima di eseguire questo comando, devi creare una risorsa del certificato SSL per ogni certificato.

gcloud compute target-https-proxies create HTTPS_PROXY_NAME \
    --global \
    --quic-override=QUIC_SETTING

Sostituisci QUIC_SETTING con una delle seguenti opzioni:

  • NONE (valore predefinito): consente a Google di controllare quando viene pubblicizzato HTTP/3.

    Quando selezioni NONE, HTTP/3 viene pubblicizzato ai clienti, ma Google QUIC non è pubblicizzato. Nella console Google Cloud, questa opzione è chiamata Automatico (predefinito).

  • ENABLE: pubblicizza HTTP/3 ai client.

  • DISABLE: non pubblicizza HTTP/3 ai client.

API: HTTPS

POST https://www.googleapis.com/v1/compute/projects/PROJECT_ID/global/targetHttpsProxies/TARGET_PROXY_NAME/setQuicOverride

{
  "quicOverride": QUIC_SETTING
}

Sostituisci QUIC_SETTING con una delle seguenti opzioni:

  • NONE (valore predefinito): consente a Google di controllare quando viene pubblicizzato HTTP/3.

    Quando selezioni NONE, HTTP/3 viene pubblicizzato ai clienti, ma Google QUIC non è pubblicizzato. Nella console Google Cloud, questa opzione è chiamata Automatico (predefinito).

  • ENABLE: pubblicizza HTTP/3 e Google QUIC ai client.

  • DISABLE: non pubblicizza HTTP/3 o Google QUIC ai client.

Limitazioni

  • I bilanciatori del carico HTTPS non inviano una chiusura close_notify avviso all'arresto Connessioni SSL. In altre parole, il bilanciatore del carico chiude la connessione TCP instead of performing an SSL shutdown.
  • I bilanciatori del carico HTTPS supportano solo caratteri minuscoli nei domini in un attributo nome comune (CN) o in un attributo nome alternativo dell'oggetto (SAN) del certificato. I certificati con caratteri maiuscoli nei domini sono restituito solo se impostato come principale certificato nel proxy di destinazione.
  • I bilanciatori del carico HTTPS non utilizzano l'estensione SNI (Server Name Indication) quando si connettono al backend, ad eccezione dei bilanciatori del carico con backend di NEG internet. Per maggiori dettagli, consulta Crittografia dal bilanciatore del carico di backend.
  • Quando utilizzi bilanciatori del carico delle applicazioni esterni regionali con Cloud Run in un ambiente VPC condiviso, le reti VPC autonome nei progetti di servizio possono inviare traffico a qualsiasi altro servizio Cloud Run di cui è stato eseguito il deployment in qualsiasi altro progetto di servizio nello stesso ambiente VPC condiviso. Si tratta di un modello problema e questa forma di accesso verrà bloccata in futuro.
  • Google Cloud non garantisce che una connessione TCP di base possa rimanere aperta per l'intero valore del timeout del servizio di backend. I sistemi client devono implementare la logica di ripetizione anziché fare affidamento su una connessione TCP aperta per lunghi periodi di tempo.
  • Non puoi creare un bilanciatore del carico delle applicazioni esterno regionale nel livello Premium utilizzando la console Google Cloud. Inoltre, solo le regioni supporto del livello Standard sono disponibili per questi bilanciatori del carico nella console Google Cloud. Utilizza le funzionalità di tramite gcloud CLI o l'API. Utilizza il gcloud CLI o l'API.
  • Cloud CDN ti consente di forzare un oggetto o un insieme di oggetti da ignorare dalla cache richiedendo un annullamento della convalida della cache. Se utilizzi un Bilanciatore del carico delle applicazioni esterno globale con servizio VPC condiviso tra progetti che fa riferimento: per impostazione predefinita, gli amministratori dei progetti di servizio non avranno autorizzazioni necessarie per richiedere l'annullamento della convalida della cache. Questo perché la cache l'annullamento della convalida sia configurato nel progetto frontend (ovvero il progetto che include regola di forwarding, proxy di destinazione e mappa URL del carico ). Pertanto, l'invalidazione della cache può essere emessa solo dalle entità che dispongono dei ruoli IAM per la configurazione delle risorse correlate al bilanciatore del carico nei progetti frontend (ad esempio, il ruolo Amministratore della rete Compute). Gli amministratori dei servizi, che controllano il provisioning dei servizi di backend in un progetto distinto, dovranno collaborare con l'amministratore del bilanciatore del carico del progetto frontend per emettere l'invalidazione della cache per i propri servizi tra progetti.

Passaggi successivi