I bilanciatori del carico di rete passthrough esterni sono bilanciatori del carico a livello di regione 4 che distribuiscono il traffico esterno tra i backend (gruppi di istanze o gruppi di endpoint di rete (NEG)) nella stessa regione del bilanciatore del carico. Questi backend devono trovarsi nella stessa regione e nello stesso progetto, ma possono trovarsi in reti VPC diverse. Questi bilanciatori del carico sono basati su Maglev e sullo stack di virtualizzazione di rete Andromeda.
I bilanciatori del carico di rete passthrough esterni possono ricevere traffico da:
- Qualsiasi client su internet
- VM Google Cloud con IP esterni
- VM di Google Cloud che hanno accesso a internet tramite Cloud NAT o NAT basato su istanza
I bilanciatori del carico di rete passthrough esterni non sono proxy. Il bilanciatore del carico non termina le connessioni utente. I pacchetti con bilanciamento del carico vengono inviati alle VM di backend con indirizzi IP di origine e di destinazione, protocollo e porte, se applicabili, invariati. Le VM di backend quindi terminano le connessioni utente. Le risposte delle VM di backend passano direttamente ai client, non tramite il bilanciatore del carico. Questa procedura è nota come Direct Server Return (DSR).
I bilanciatori del carico di rete passthrough esterni basati sul servizio di backend supportano le seguenti funzionalità:
- Backend di gruppi di istanze gestite e non gestite. I bilanciatori del carico di rete passthrough esterni basati sul servizio di backend supportano come backend i gruppi di istanze gestite e non gestite. I gruppi di istanze gestite automatizzano alcuni aspetti della gestione del backend e offrono maggiore scalabilità e affidabilità rispetto ai gruppi di istanze non gestite.
- Backend NEG a livello di zona. I bilanciatori del carico di rete passthrough esterni basati sul servizio di backend supportano l'uso di NEG di zona con endpoint
GCE_VM_IP
. Gli endpoint NEGGCE_VM_IP
di zona ti consentono di:- Inoltra i pacchetti a qualsiasi interfaccia di rete, non solo a
nic0
. - Posiziona lo stesso endpoint
GCE_VM_IP
in due o più NEG di zona connessi a servizi di backend diversi.
- Inoltra i pacchetti a qualsiasi interfaccia di rete, non solo a
- Supporto di più protocolli. I bilanciatori del carico di rete passthrough esterni basati sul servizio di backend possono bilanciare il carico del traffico TCP, UDP, ESP, GRE, ICMP e ICMPv6.
- Supporto per la connettività IPv6. I bilanciatori del carico di rete passthrough esterni basati sul servizio di backend possono gestire il traffico sia IPv4 che IPv6.
- Controllo granulare della distribuzione del traffico. Un servizio di backend consente di distribuire il traffico in base a un'affinità sessione, una modalità di monitoraggio della connessione e un bilanciamento del carico ponderato. Il servizio di backend può anche essere configurato in modo da abilitare lo svuotamento della connessione e designare backend di failover per il bilanciatore del carico. La maggior parte di queste impostazioni ha valori predefiniti che consentono di iniziare rapidamente.
- Supporto per controlli di integrità non legacy. I bilanciatori del carico di rete passthrough esterni basati sul servizio di backend consentono di utilizzare controlli di integrità corrispondenti al tipo di traffico (TCP, SSL, HTTP, HTTPS o HTTP/2) che stanno distribuendo.
- Integrazione di Google Cloud Armor. Google Cloud Armor supporta la protezione DDoS di rete avanzata per i bilanciatori del carico di rete passthrough esterni. Per ulteriori informazioni, consulta Configurare la protezione DDoS di rete avanzata.
Integrazione di GKE. Se stai creando applicazioni in GKE, ti consigliamo di utilizzare il controller di servizio GKE integrato, che esegue il deployment dei bilanciatori del carico Google Cloud per conto degli utenti GKE. È la stessa architettura di bilanciamento del carico autonoma descritta in questa pagina, ad eccezione del fatto che il suo ciclo di vita è completamente automatizzato e controllato da GKE.
Documentazione GKE correlata:
Architettura
Il seguente diagramma illustra i componenti di un bilanciatore del carico di rete passthrough esterno:
Il bilanciatore del carico è composto da diversi componenti di configurazione. Un singolo bilanciatore del carico può avere quanto segue:
- Uno o più indirizzi IP esterni a livello di regione
- Una o più regole di forwarding esterno a livello di regione
- Un servizio di backend esterno a livello di regione
- Uno o più backend: tutti i gruppi di istanze o tutti i backend NEG a livello di zona
(
GCE_VM_IP
endpoint) - Controllo di integrità associato al servizio di backend
Inoltre, devi creare regole firewall che consentano ai probe del traffico e del controllo di integrità del bilanciamento del carico di raggiungere le VM di backend.
Indirizzo IP
Un bilanciatore del carico di rete passthrough esterno richiede almeno una regola di forwarding. La regola di forwarding fa riferimento a un indirizzo IP esterno a livello di regione accessibile ovunque su internet.
- Per il traffico IPv4, la regola di forwarding fa riferimento a un singolo indirizzo IPv4 esterno a livello di regione. Gli indirizzi IPv4 esterni regionali provengono da un pool univoco per ogni regione Google Cloud. L'indirizzo IP può essere un indirizzo statico riservato o un indirizzo temporaneo.
Per il traffico IPv6, la regola di forwarding fa riferimento a un intervallo
./96
da una subnet a doppio stack con un intervallo di subnet IPv6 esterne nella rete VPC. Gli indirizzi IPv6 esterni sono disponibili solo nel livello Premium. L'intervallo di indirizzi IPv6 può essere un indirizzo statico riservato o un indirizzo temporaneo.
Utilizza un indirizzo IP riservato per la regola di forwarding se devi conservare l'indirizzo associato al tuo progetto per poterlo riutilizzare dopo aver eliminato una regola di forwarding o se hai bisogno che più regole di forwarding facciano riferimento allo stesso indirizzo IP.
I bilanciatori del carico di rete passthrough esterni supportano sia il livello Standard che il livello Premium per gli indirizzi IPv4 esterni a livello di regione. Sia l'indirizzo IP che la regola di forwarding devono usare lo stesso livello di rete. Gli indirizzi IPv6 esterni regionali sono disponibili solo nel livello Premium.
Regola di forwarding
Una regola di forwarding esterno a livello di regione specifica il protocollo e le porte su cui il bilanciatore del carico accetta il traffico. Poiché i bilanciatori del carico di rete passthrough esterni non sono proxy, passano il traffico ai backend sullo stesso protocollo e sulle stesse porte, se il pacchetto contiene informazioni sulle porte. La regola di forwarding in combinazione con l'indirizzo IP forma il frontend del bilanciatore del carico.
Il bilanciatore del carico conserva gli indirizzi IP di origine dei pacchetti in entrata. L'indirizzo IP di destinazione per i pacchetti in entrata è un indirizzo IP associato alla regola di forwarding del bilanciatore del carico.
Il traffico in entrata viene abbinato a una regola di forwarding, che è una combinazione di un particolare indirizzo IP (un indirizzo IPv4 o un intervallo di indirizzi IPv6), un protocollo e, se il protocollo è basato su porta, una delle porte, un intervallo di porte o tutte le porte. La regola di forwarding indirizza quindi il traffico al servizio di backend del bilanciatore del carico.
Se la regola di forwarding fa riferimento a un indirizzo IPv4, non è associata ad alcuna subnet. Vale a dire che il suo indirizzo IP proviene da qualsiasi intervallo di subnet Google Cloud.
Se la regola di forwarding fa riferimento a un intervallo di indirizzi IPv6
/96
, la regola di forwarding deve essere associata a una subnet e questa subnet deve essere (a) a doppio stack e (b) avere un intervallo di subnet IPv6 esterno (--ipv6-access-type
impostato suEXTERNAL
). La subnet a cui fa riferimento la regola di forwarding può essere la stessa subnet utilizzata dalle istanze di backend; tuttavia, le istanze di backend possono utilizzare una subnet separata, se scelta. Quando le istanze di backend utilizzano una subnet separata, deve essere vero quanto segue:
Un bilanciatore del carico di rete passthrough esterno richiede almeno una regola di forwarding. Le regole di forwarding possono essere configurate in modo da indirizzare il traffico proveniente da un intervallo specifico di indirizzi IP di origine a un servizio di backend (o istanza di destinazione) specifico. Per maggiori dettagli, vedi Indirizzamento del traffico. Puoi definire più regole di forwarding per lo stesso bilanciatore del carico, come descritto in Regole di inoltro multiple.
Se vuoi che il bilanciatore del carico gestisca il traffico sia IPv4 che IPv6, crea due regole di forwarding: una regola per il traffico IPv4 che punti ai backend IPv4 (o a doppio stack) e una regola per il traffico IPv6 che punta solo ai backend a doppio stack. È possibile che una regola di forwarding IPv4 e una regola di forwarding IPv6 facciano riferimento allo stesso servizio di backend, ma il servizio di backend deve fare riferimento a backend a doppio stack.
Protocolli delle regole di forwarding
I bilanciatori del carico di rete passthrough esterni supportano le seguenti opzioni di protocollo per ogni regola di forwarding: TCP
, UDP
e L3_DEFAULT
.
Utilizza le opzioni TCP
e UDP
per configurare il bilanciamento del carico TCP o UDP.
L'opzione del protocollo L3_DEFAULT
consente a un bilanciatore del carico di rete passthrough esterno di bilanciare il carico del traffico TCP, UDP, ESP, GRE, ICMP e ICMPv6.
Oltre a supportare protocolli diversi da TCP e UDP, L3_DEFAULT
consente a una singola regola di forwarding di gestire più protocolli. Ad esempio, i servizi IPsec gestiscono in genere una combinazione di traffico IKE e NAT-T basati su ESP e UDP. L'opzione L3_DEFAULT
consente di configurare un'unica
regola di forwarding per elaborare tutti questi protocolli.
Le regole di forwarding che utilizzano i protocolli TCP
o UDP
possono fare riferimento a un servizio di backend che utilizza lo stesso protocollo della regola di forwarding o un servizio di backend il cui protocollo è UNSPECIFIED
.
L3_DEFAULT
regole di forwarding possono
fare riferimento solo a un servizio di backend con protocollo UNSPECIFIED
.
Se utilizzi il protocollo L3_DEFAULT
, devi configurare la regola di forwarding in modo che accetti il traffico su tutte le porte. Per configurare tutte le porte, imposta --ports=ALL
con Google Cloud CLI oppure allPorts
su True
utilizzando l'API.
La tabella seguente riassume come utilizzare queste impostazioni per diversi protocolli.
Traffico per il bilanciamento del carico | Protocollo della regola di forwarding | Protocollo del servizio di backend |
---|---|---|
TCP | TCP |
TCP o UNSPECIFIED |
L3_DEFAULT |
UNSPECIFIED |
|
UDP | UDP |
UDP o UNSPECIFIED |
L3_DEFAULT |
UNSPECIFIED |
|
ESP, GRE, ICMP/ICMPv6 (solo richiesta echo) | L3_DEFAULT |
UNSPECIFIED |
Più regole di forwarding
Puoi configurare più regole di forwarding esterno a livello di regione per lo stesso bilanciatore del carico di rete passthrough esterno. Ogni regola di forwarding può avere un diverso indirizzo IP esterno a livello di regione oppure più regole di forwarding possono avere lo stesso indirizzo IP esterno a livello di regione.
Configurare più regole di forwarding esterno a livello di regione può essere utile per questi casi d'uso:
- Devi configurare più di un indirizzo IP esterno per lo stesso servizio di backend.
- Devi configurare protocolli diversi oppure porte o intervalli di porte non sovrapposti per lo stesso indirizzo IP esterno.
- Devi indirizzare il traffico da determinati indirizzi IP di origine a backend specifici del bilanciatore del carico.
Google Cloud richiede che i pacchetti in entrata corrispondano a più di una regola di forwarding. Ad eccezione delle regole di forwarding, descritte nella prossima sezione, due o più regole di forwarding che utilizzano lo stesso indirizzo IP esterno a livello di regione devono avere combinazioni univoche di protocollo e porta in base a questi vincoli:
- Una regola di forwarding configurata per tutte le porte di un protocollo impedisce la creazione di altre regole di forwarding utilizzando lo stesso protocollo e lo stesso indirizzo IP.
È possibile configurare le regole di forwarding utilizzando i protocolli
TCP
oUDP
in modo da utilizzare tutte le porte oppure solo per porte specifiche. Ad esempio, se crei una regola di forwarding utilizzando l'indirizzo IP198.51.100.1
, il protocolloTCP
e tutte le porte, non puoi creare altre regole di forwarding utilizzando l'indirizzo IP198.51.100.1
e il protocolloTCP
. Puoi creare due regole di forwarding, sia utilizzando l'indirizzo IP198.51.100.1
che il protocolloTCP
, se ognuna ha porte univoche o intervalli di porte non sovrapposti. Ad esempio, puoi creare due regole di forwarding utilizzando l'indirizzo IP198.51.100.1
e il protocollo TCP, dove le porte di una regola di forwarding sono80,443
e l'altra utilizza l'intervallo di porte81-442
. - È possibile creare una sola regola di forwarding
L3_DEFAULT
per indirizzo IP. Questo perché il protocolloL3_DEFAULT
utilizza tutte le porte per definizione. In questo contesto, il termine "tutte le porte" include i protocolli senza informazioni sulle porte. Una singola regola di forwarding
L3_DEFAULT
può coesistere con altre regole di forwarding che utilizzano protocolli specifici (TCP
oUDP
). La regola di forwardingL3_DEFAULT
può essere utilizzata come ultima risorsa quando vengono utilizzate regole di forwarding che utilizzano lo stesso indirizzo IP, ma esistono protocolli più specifici. Una regola di forwarding diL3_DEFAULT
elabora i pacchetti inviati all'indirizzo IP di destinazione se e solo se l'indirizzo IP, il protocollo e la porta di destinazione del pacchetto non corrispondono a una regola di forwarding specifica del protocollo.Per illustrare questo aspetto, considera questi due scenari. Le regole di forwarding in entrambi gli scenari utilizzano lo stesso indirizzo IP
198.51.100.1
.- Scenario 1. La prima regola di forwarding utilizza il protocollo
L3_DEFAULT
. La seconda regola di forwarding utilizza il protocolloTCP
e tutte le porte. I pacchetti TCP inviati a qualsiasi porta di destinazione di198.51.100.1
vengono elaborati dalla seconda regola di forwarding. I pacchetti che usano diversi protocolli vengono elaborati con la prima regola di forwarding. - Scenario 2. La prima regola di forwarding utilizza il protocollo
L3_DEFAULT
. La seconda regola di forwarding utilizza il protocolloTCP
e la porta 8080. I pacchetti TCP inviati a198.51.100.1:8080
vengono elaborati dalla seconda regola di forwarding. Tutti gli altri pacchetti, compresi quelli TCP inviati a porte di destinazione diverse, vengono elaborati dalla prima regola di forwarding.
- Scenario 1. La prima regola di forwarding utilizza il protocollo
Selezione regola di forwarding
Google Cloud seleziona una o nessuna regola di forwarding per elaborare un pacchetto in entrata utilizzando questo processo di eliminazione, a partire dall'insieme di regole di forwarding candidati che corrispondono all'indirizzo IP di destinazione del pacchetto:
Elimina le regole di forwarding il cui protocollo non corrisponde al protocollo del pacchetto, ad eccezione delle regole di forwarding di
L3_DEFAULT
. Le regole di forwarding che utilizzano il protocolloL3_DEFAULT
non vengono mai eliminate da questo passaggio perchéL3_DEFAULT
corrisponde a tutti i protocolli. Ad esempio, se il protocollo del pacchetto è TCP, vengono eliminate solo le regole di forwarding che utilizzano il protocolloUDP
.Elimina le regole di forwarding la cui porta non corrisponde alla porta del pacchetto. Le regole di forwarding configurate per tutte le porte non vengono mai eliminate da questo passaggio perché una regola di forwarding per tutte le porte corrisponde a qualsiasi porta.
Se le altre regola di forwarding ammesse includono sia
L3_DEFAULT
sia regole di forwarding specifiche per il protocollo, elimina le regole di forwarding diL3_DEFAULT
. Se le altre regola di forwarding candidati sono tutte eL3_DEFAULT
le regole di forwarding, nessuna viene eliminata in questo passaggio.A questo punto, le altre regola di forwarding candidati rientrano in una delle seguenti categorie:
- Rimane un'unica regola di forwarding che corrisponde all'indirizzo IP, al protocollo e alla porta di destinazione del pacchetto e viene utilizzata per instradare il pacchetto.
- Rimangono due o più regola di forwarding che corrispondono all'indirizzo IP, al protocollo e alla porta di destinazione del pacchetto. Ciò significa che le restanti regola di forwarding candidati includono regole di forwarding di indirizzamento (esaminate nella prossima sezione). Seleziona la regola di forwarding di reindirizzamento il cui intervallo di origine include il CIDR più specifico (corrispondenza del prefisso più lungo) contenente l'indirizzo IP di origine del pacchetto. Se nessuna regola di forwarding di reindirizzamento ha un intervallo di origine che include l'indirizzo IP di origine del pacchetto, seleziona la regola di forwarding padre.
- Nessuna regola di forwarding candidato rimanente e il pacchetto viene eliminato.
Se utilizzi più regole di forwarding, assicurati di configurare il software in esecuzione sulle VM di backend in modo che si associa a tutti gli indirizzi IP esterni delle regola di forwarding del bilanciatore del carico.
Direzione del traffico
Le regole di forwarding per i bilanciatori del carico di rete passthrough esterni possono essere configurate in modo da indirizzare il traffico proveniente da un intervallo specifico di indirizzi IP di origine a uno specifico servizio di backend (o istanza di destinazione).
La direzione del traffico è utile per la risoluzione dei problemi e per le configurazioni avanzate. Con l'indirizzamento del traffico, puoi indirizzare determinati client a un insieme diverso di backend, a una diversa configurazione del servizio di backend o a entrambi. Ad esempio:
- L'indirizzamento del traffico consente di creare due regole di forwarding che indirizzano il traffico allo stesso backend (gruppo di istanze o NEG) tramite due servizi di backend. I due servizi di backend possono essere configurati con controlli di integrità diversi, affinità di sessione o criteri di controllo della distribuzione del traffico diversi (monitoraggio della connessione, svuotamento della connessione e failover).
- L'indirizzamento del traffico consente di creare una regola di forwarding per reindirizzare il traffico da un servizio di backend a bassa larghezza di banda a un servizio di backend a larghezza di banda elevata. Entrambi i servizi di backend contengono lo stesso insieme di VM o endpoint di backend, ma bilanciato il carico con pesi diversi mediante il bilanciamento del carico ponderato.
- L'indirizzamento del traffico consente di creare due regole di forwarding che indirizzano il traffico a diversi servizi di backend, con backend diversi (gruppi di istanze o NEG). Ad esempio, un backend potrebbe essere configurato utilizzando diversi tipi di macchine per elaborare meglio il traffico proveniente da un determinato insieme di indirizzi IP di origine.
L'indirizzamento del traffico è configurato con un parametro API della regola di forwarding chiamato
sourceIPRanges
. Le regole di forwarding che hanno almeno un intervallo IP di origine configurato sono chiamate regole di forwarding di reindirizzamento.
Una regola di forwarding di reindirizzamento può avere un elenco di massimo 64 intervalli IP di origine. Puoi aggiornare l'elenco degli intervalli IP di origine configurati per una regola di forwarding di reindirizzamento in qualsiasi momento.
Ogni regola di forwarding di reindirizzamento richiede la creazione di una regola di forwarding padre. Le regole di forwarding padre e di reindirizzamento condividono le stesse informazioni sulle porte, sul protocollo IP e sull'indirizzo IP esterno a livello di regione; tuttavia, la regola di forwarding padre non ha informazioni sull'indirizzo IP di origine. Ad esempio:
- Regola di forwarding padre: indirizzo IP:
198.51.100.1
, protocollo IP:TCP
, porte: 80 - Regola di forwarding di reindirizzamento: indirizzo IP:
198.51.100.1
, protocollo IP:TCP
, porte: 80, sourceIPRanges:203.0.113.0/24
Una regola di forwarding padre che punta a un servizio di backend può essere associata a una regola di forwarding di reindirizzamento che rimanda a un servizio di backend o a un'istanza di destinazione.
Per una determinata regola di forwarding padre, due o più regole di forwarding di reindirizzamento possono avere intervalli IP di origine sovrapposti, ma non identici. Ad esempio, una
regola di forwarding di reindirizzamento può avere l'intervallo IP di origine 203.0.113.0/24
e
un'altra regola di forwarding di reindirizzamento per lo stesso padre può avere l'intervallo IP di origine 203.0.113.0
.
Devi eliminare tutte le regole di forwarding di reindirizzamento prima di poter eliminare la regola di forwarding padre da cui dipendono.
Per informazioni su come i pacchetti in entrata vengono elaborati quando vengono utilizzate le regole di forwarding di reindirizzamento, consulta Selezione delle regole di forwarding.
Comportamento dell'affinità sessione nelle modifiche di orientamento
Questa sezione descrive le condizioni in cui l'affinità sessione potrebbe non funzionare quando vengono aggiornati gli intervalli IP di origine per le regole di forwarding di reindirizzamento:
- Se una connessione esistente continua a corrispondere alla stessa regola di forwarding dopo aver modificato gli intervalli IP di origine per una regola di forwarding di reindirizzamento, l'affinità della sessione non si interrompe. Se la modifica determina che una connessione esistente corrisponde a una regola di forwarding diversa:
- L'affinità sessione si interrompe sempre nelle seguenti circostanze:
- La regola di forwarding con corrispondenza appena trovata indirizza una connessione stabilita a un servizio di backend (o istanza di destinazione) che non fa riferimento alla VM di backend selezionata in precedenza.
- La regola di forwarding con nuova corrispondenza indirizza una connessione stabilita a un servizio di backend che fa riferimento alla VM di backend selezionata in precedenza, ma il servizio di backend non è configurato in modo da connessioni permanenti quando i backend non sono integri e la VM di backend non supera il controllo di integrità del servizio di backend.
- L'affinità sessione potrebbe non funzionare quando la regola di forwarding appena abbinata indirizza una connessione stabilita a un servizio di backend e il servizio di backend fa riferimento alla VM selezionata in precedenza, ma la combinazione di affinità sessione e modalità di monitoraggio delle connessioni del servizio di backend genera un hash di monitoraggio delle connessioni diverso.
Conservare l'affinità sessione tra i cambiamenti di orientamento
Questa sezione descrive come evitare di interrompere l'affinità sessione quando vengono aggiornati gli intervalli IP di origine per le regole di forwarding di reindirizzamento:
- Indirizzamento di regole di forwarding che puntano ai servizi di backend. Se sia la regola principale sia quella di forwarding di reindirizzamento puntano ai servizi di backend, dovrai assicurarti manualmente che le impostazioni di affinità sessione e criterio di monitoraggio delle connessioni siano identico. Google Cloud non rifiuta automaticamente le configurazioni se non identiche.
- Indirizzamento di regole di forwarding che puntano alle istanze di destinazione. Una regola di forwarding padre che punta a un servizio di backend può essere associata a una regola di forwarding di reindirizzamento che punta a un'istanza di destinazione. In questo caso, la regola di forwarding di reindirizzamento eredita le impostazioni di affinità sessione e criterio di monitoraggio della connessione dalla regola di forwarding padre.
Per istruzioni su come configurare l'indirizzamento del traffico, consulta Configurare l'indirizzamento del traffico.
Servizio di backend regionale
Ogni bilanciatore del carico di rete passthrough esterno ha un servizio di backend regionale che definisce il comportamento del bilanciatore del carico e la modalità di distribuzione del traffico ai suoi backend. Il nome del servizio di backend è il nome del bilanciatore del carico di rete passthrough esterno visualizzato nella console Google Cloud.
Ogni servizio di backend definisce i seguenti parametri di backend:
Protocollo. Un servizio di backend accetta il traffico sull'indirizzo IP e sulle porte (se configurate) specificate da una o più regole di forwarding esterno a livello di regione. Il servizio di backend passa i pacchetti alle VM di backend conservando gli indirizzi IP di origine e di destinazione del pacchetto, il protocollo e, se il protocollo è basato su porta, le porte di origine e di destinazione.
I servizi di backend utilizzati con bilanciatori del carico di rete passthrough esterni supportano le seguenti opzioni di protocollo:
TCP
,UDP
oUNSPECIFIED
.I servizi di backend con il protocollo
UNSPECIFIED
possono essere utilizzati con qualsiasi regola di forwarding, indipendentemente dal protocollo. È possibile fare riferimento ai servizi di backend con un protocollo specifico (TCP
oUDP
) solo dalle regole di forwarding con lo stesso protocollo (TCP
oUDP
). Le regole di forwarding con il protocolloL3_DEFAULT
possono fare riferimento solo ai servizi di backend con il protocolloUNSPECIFIED
.Consulta Specifiche del protocollo delle regole di forwarding per una tabella con le possibili combinazioni di regola di forwarding e protocollo del servizio di backend.
Distribuzione del traffico. Un servizio di backend consente di distribuire il traffico in base a un'affinità sessione, una modalità di monitoraggio della connessione e un bilanciamento del carico ponderato. Il servizio di backend può anche essere configurato in modo da abilitare lo svuotamento della connessione e designare backend di failover per il bilanciatore del carico.
Controllo di integrità. A un servizio di backend deve essere associato un controllo di integrità regionale.
Backend: ciascun servizio di backend opera in una singola regione e distribuisce il traffico a gruppi di istanze o NEG a livello di zona nella stessa regione. Puoi utilizzare gruppi di istanze o NEG a livello di zona, ma non una combinazione di entrambi, come backend per un bilanciatore del carico di rete passthrough esterno:
- Se scegli gruppi di istanze, puoi utilizzare gruppi di istanze non gestite, gruppi di istanze gestite a livello di zona, gruppi di istanze gestite a livello di regione o una combinazione di tipi di gruppi di istanze.
- Se scegli NEG a livello di zona, devi utilizzare
GCE_VM_IP
NEG a livello di zona.
A ogni gruppo di istanze o backend NEG è associata una rete VPC, anche se quel gruppo di istanze o NEG non è ancora stato connesso a un servizio di backend. Per ulteriori informazioni su come una rete viene associata a ogni tipo di backend, consulta Backend e interfacce di rete di gruppi di istanze e Backend e interfacce di rete del NEG a livello di zona.
Gruppi di istanze
Un bilanciatore del carico di rete passthrough esterno distribuisce le connessioni tra le VM di backend contenute nei gruppi di istanze gestite o non gestite. I gruppi di istanze possono avere un ambito regionale o di zona.
Un bilanciatore del carico di rete passthrough esterno distribuisce il traffico solo alla prima interfaccia di rete (nic0
)
delle VM di backend. Il bilanciatore del carico supporta i gruppi di istanze le cui istanze membri utilizzano qualsiasi rete VPC nella stessa regione, purché la rete VPC si trovi nello stesso progetto del servizio di backend. Tutte le VM all'interno di un determinato gruppo
di istanze devono usare la stessa rete VPC.
A ogni gruppo di istanze è associata una rete VPC, anche se il gruppo non è stato ancora connesso a un servizio di backend. Per ulteriori informazioni su come una rete viene associata ai gruppi di istanze, consulta Backend dei gruppi di istanze e interfacce di rete.
Gruppi di istanze gestite a livello di regione. Usa i gruppi di istanze gestite a livello di regione se puoi eseguire il deployment del software utilizzando i modelli di istanza. I gruppi di istanze gestite a livello di regione distribuiscono automaticamente il traffico tra più zone, offrendo l'opzione migliore per evitare potenziali problemi in una determinata zona.
Qui viene mostrato un esempio di deployment mediante un gruppo di istanze gestite a livello di regione. Il gruppo di istanze ha un modello di istanza che definisce le modalità di provisioning delle istanze. Ogni gruppo esegue il deployment delle istanze all'interno di tre zone della regione
us-central1
.Gruppi di istanze gestite o non gestite a livello di zona. Utilizza gruppi di istanze a livello di zona in zone diverse (nella stessa regione) per proteggerti da potenziali problemi in una determinata zona.
Qui è mostrato un esempio di deployment che utilizza gruppi di istanze a livello di zona. Questo bilanciatore del carico fornisce disponibilità tra due zone.
NEG a livello di zona
Un bilanciatore del carico di rete passthrough esterno distribuisce le connessioni tra GCE_VM_IP
endpoint contenuti all'interno dei gruppi di endpoint di rete a livello di zona. Questi endpoint devono trovarsi nella stessa regione del bilanciatore del carico. Per alcuni casi d'uso consigliati di NEG a livello di zona, consulta la panoramica sui gruppi di endpoint di rete a livello di zona.
Gli endpoint nel NEG devono essere indirizzi IPv4 interni principali delle interfacce di rete VM che si trovano nella stessa subnet e zona del NEG di zona. L'indirizzo IPv4 interno primario da qualsiasi interfaccia di rete di un'istanza VM con più NIC può essere aggiunto a un NEG, purché si trovi nella subnet del NEG.
I NEG di zona supportano le VM sia IPv4 che a doppio stack (IPv4 e IPv6). Per le VM IPv4 e a doppio stack, è sufficiente specificare solo l'istanza VM quando colleghi un endpoint a un NEG. Non è necessario specificare l'indirizzo IP dell'endpoint. L'istanza VM deve trovarsi sempre nella stessa zona del NEG.
A ogni NEG a livello di zona sono associati una rete VPC e una subnet, anche se il NEG a livello di zona non è ancora stato connesso a un servizio di backend. Per ulteriori informazioni su come una rete viene associata ai NEG a livello di zona, consulta Backend di NEG a livello di zona e interfacce di rete.
Backend di gruppi di istanze e interfacce di rete
La rete VPC associata a un gruppo di istanze è la rete VPC utilizzata dall'interfaccia di rete nic0
di ogni VM membro.
- Per i gruppi di istanze gestite, la rete VPC per il gruppo di istanze è definita nel modello di istanza.
- Per i gruppi di istanze non gestite, la rete VPC per il gruppo di istanze è definita come la rete VPC utilizzata dall'interfaccia di rete
nic0
della prima istanza VM aggiunta al gruppo di istanze non gestite.
All'interno di un determinato gruppo di istanze (gestite o non gestite), tutte le istanze VM devono avere le interfacce di rete nic0
nella stessa rete VPC.
Ogni VM membro può avere facoltativamente interfacce di rete aggiuntive (da nic1
a nic7
), ma ogni interfaccia di rete deve collegarsi a una rete VPC diversa. Queste reti devono anche essere diverse
dalla rete VPC associata al gruppo di istanze.
nic0
. Se vuoi ricevere traffico su un'interfaccia di rete non predefinita (da nic1
a nic7
), devi utilizzare NEG di zona con endpoint GCE_VM_IP
.
Backend NEG a livello di zona e interfacce di rete
Quando crei un nuovo NEG a livello di zona con endpoint GCE_VM_IP
, devi associare esplicitamente il NEG a una subnet di una rete VPC prima di poter aggiungere eventuali endpoint al NEG. Né la subnet né la rete VPC
possono essere modificate dopo la creazione del NEG.
All'interno di un determinato NEG, ogni endpoint GCE_VM_IP
rappresenta effettivamente un'interfaccia di rete. L'interfaccia di rete deve trovarsi nella subnet associata al
NEG. Dal punto di vista di un'istanza di Compute Engine, l'interfaccia di rete può utilizzare qualsiasi identificatore (da nic0
a nic7
). Dal punto di vista di essere un endpoint in un NEG, l'interfaccia di rete viene identificata utilizzando il suo indirizzo IPv4 principale.
Esistono due modi per aggiungere un endpoint GCE_VM_IP
a un NEG:
- Se specifichi solo il nome di una VM (senza indirizzo IP) quando aggiungi un endpoint, Google Cloud richiede che la VM abbia un'interfaccia di rete nella subnet associata al NEG. L'indirizzo IP che Google Cloud sceglie per l'endpoint è l'indirizzo IPv4 interno principale dell'interfaccia di rete della VM nella subnet associata al NEG.
- Se specifichi sia il nome di una VM sia un indirizzo IP quando aggiungi un endpoint, l'indirizzo IP fornito deve essere un indirizzo IPv4 interno principale per una delle interfacce di rete della VM. Questa interfaccia di rete deve trovarsi nella subnet associata al NEG. Tieni presente che specificare un indirizzo IP è ridondante, perché può esistere una sola interfaccia di rete nella subnet associata al NEG.
Servizi di backend e reti VPC
Il servizio di backend non è associato ad alcuna rete VPC; tuttavia, ogni gruppo di istanza di backend o NEG di zona è associato a una rete VPC, come indicato in precedenza. Purché tutti i backend si trovino nella stessa regione e nello stesso progetto e purché tutti i backend siano dello stesso tipo (gruppi di istanze o NEG a livello di zona), puoi aggiungere backend che utilizzano reti VPC uguali o diverse.
Per distribuire i pacchetti a nic1
tramite nic7
, devi utilizzare backend NEG a livello di zona (con GCE_VM_IP
endpoint) perché la rete VPC associata a un gruppo di istanze corrisponde sempre alla rete VPC utilizzata dall'interfaccia nic0
di tutte le istanze membri.
Backend a doppio stack (IPv4 e IPv6)
Se vuoi che il bilanciatore del carico supporti il traffico IPv6, i backend devono soddisfare i seguenti requisiti:
- I backend devono essere configurati in subnet a doppio stack che si trovano nella stessa regione della regola di forwarding IPv6 del bilanciatore del carico. Per i backend, puoi utilizzare una subnet
con
ipv6-access-type
impostato suEXTERNAL
oINTERNAL
. Per utilizzare una subnet conipv6-access-type
impostato suINTERNAL
, devi utilizzare una subnet a doppio stack separata conipv6-access-type
impostata suEXTERNAL
per la regola di forwarding esterno del bilanciatore del carico. Per le istruzioni, vedi Aggiungere una subnet a doppio stack. - I backend devono essere configurati in modo da essere a doppio stack con
--ipv6-network-tier
impostato suPREMIUM
. Per le istruzioni, consulta Creare un modello di istanza con indirizzi IPv6.
Controlli di integrità
I bilanciatori del carico di rete passthrough esterni utilizzano i controlli di integrità a livello di regione per determinare quali istanze possono ricevere nuove connessioni. Ogni servizio di backend del bilanciatore del carico di rete passthrough esterno deve essere associato a un controllo di integrità a livello di regione. I bilanciatori del carico utilizzano lo stato del controllo di integrità per determinare come instradare nuove connessioni alle istanze di backend.
Per ulteriori dettagli sul funzionamento dei controlli di integrità di Google Cloud, vedi Come funzionano i controlli di integrità.
I bilanciatori del carico di rete passthrough esterni supportano i seguenti tipi di controlli di integrità:
- HTTP, HTTPS o HTTP/2. Se le VM di backend gestiscono il traffico utilizzando HTTP, HTTPS o HTTP/2, è preferibile utilizzare un controllo di integrità che corrisponda a quel protocollo. Per maggiori dettagli, vedi Criteri di successo per i controlli di integrità HTTP, HTTPS e HTTP/2.
- SSL o TCP. Se le VM di backend non gestiscono traffico di tipo HTTP, dovresti utilizzare un controllo di integrità SSL o TCP. Per maggiori dettagli, vedi Criteri di successo per i controlli di integrità SSL e TCP.
Controlli di integrità per altro traffico del protocollo
Google Cloud non offre controlli di integrità specifici del protocollo, oltre a quelli elencati nella sezione Controlli di integrità più avanti in questa pagina. Quando utilizzi un bilanciatore del carico di rete passthrough esterno per bilanciare il carico di un protocollo diverso da TCP, devi comunque eseguire un servizio basato su TCP sulle VM di backend per fornire le informazioni richieste sul controllo di integrità.
Ad esempio, se bilancia il carico del traffico UDP, il bilanciamento del carico delle richieste del client viene eseguito utilizzando il protocollo UDP e devi eseguire un servizio TCP per fornire informazioni ai probe del controllo di integrità di Google Cloud. A questo scopo, puoi eseguire un server HTTP su ogni VM di backend che restituisce una risposta HTTP 200 ai probe del controllo di integrità. Devi utilizzare la tua logica in esecuzione sulla VM di backend per assicurarti che il server HTTP restituisca 200 solo se il servizio UDP è configurato e in esecuzione correttamente.
Regole firewall
Poiché i bilanciatori del carico di rete passthrough esterni sono bilanciatori del carico passthrough, puoi controllare l'accesso ai backend del bilanciatore del carico utilizzando le regole firewall di Google Cloud. Devi creare regole firewall di autorizzazione in entrata o un criterio firewall gerarchico di autorizzazione in entrata per consentire i controlli di integrità e il traffico per il bilanciamento del carico.
Le regole di forwarding e le regole firewall di autorizzazione in entrata o i criteri firewall gerarchici funzionano insieme nel seguente modo: una regola di forwarding specifica il protocollo e, se definiti, i requisiti delle porte che un pacchetto deve soddisfare per essere inoltrato a una VM di backend. Le regole firewall di autorizzazione in entrata controllano se i pacchetti inoltrati vengono consegnati alla VM o eliminati. Tutte le reti VPC hanno una regola firewall di negazione del traffico in entrata implicita che blocca i pacchetti in entrata da qualsiasi origine. La rete VPC predefinita di Google Cloud include un insieme limitato di regole firewall di autorizzazione in entrata precompilate.
Per accettare il traffico da qualsiasi indirizzo IP su internet, devi creare una regola firewall di autorizzazione in entrata con l'intervallo di origine
0.0.0.0/0
. Per consentire il traffico solo da determinati intervalli di indirizzi IP, utilizza intervalli di origine più restrittivi.Come best practice di sicurezza, le regole firewall di autorizzazione in entrata dovrebbero consentire solo i protocolli IP e le porte di cui hai bisogno. La limitazione della configurazione del protocollo (e, se possibile, della porta) è particolarmente importante quando si utilizzano regole di forwarding il cui protocollo è impostato su
L3_DEFAULT
. Le regole di forwardingL3_DEFAULT
inoltrano i pacchetti per tutti i protocolli IP supportati (su tutte le porte, se il protocollo e il pacchetto contengono informazioni sulle porte).I bilanciatori del carico di rete passthrough esterni utilizzano i controlli di integrità di Google Cloud. Pertanto, devi sempre consentire il traffico proveniente dagli intervalli di indirizzi IP del controllo di integrità. Queste regole firewall di autorizzazione in entrata possono essere rese specifiche per il protocollo e le porte del controllo di integrità del bilanciatore del carico.
Indirizzi IP per i pacchetti di richiesta e restituzione
Quando una VM di backend riceve un pacchetto con bilanciamento del carico da un client, l'origine e la destinazione del pacchetto sono:
- Origine:l'indirizzo IP esterno associato a una VM Google Cloud o a un indirizzo IP instradabile su internet di un sistema che si connette al bilanciatore del carico.
- Destinazione:l'indirizzo IP della regola di forwarding del bilanciatore del carico.
Poiché il bilanciatore del carico è passthrough (non un proxy), i pacchetti arrivano a destinazione dell'indirizzo IP di destinazione della regola di forwarding del bilanciatore del carico. Il software in esecuzione sulle VM di backend deve essere configurato in modo da:
- Ascolta (collega) l'indirizzo IP della regola di forwarding del bilanciatore del carico o qualsiasi indirizzo IP (
0.0.0.0
o::
) - Se il protocollo della regola di forwarding del bilanciatore del carico supporta le porte: ascolta su una porta inclusa nella regola di forwarding del bilanciatore del carico
I pacchetti restituiti vengono inviati direttamente dalle VM di backend del bilanciatore del carico al client. Gli indirizzi IP di origine e di destinazione del pacchetto restituito dipendono dal protocollo:
- TCP è orientato alla connessione, quindi le VM di backend devono rispondere con pacchetti i cui indirizzi IP di origine corrispondono all'indirizzo IP della regola di forwarding, in modo che il client possa associare i pacchetti di risposta alla connessione TCP appropriata.
- UDP, ESP, GRE e ICMP sono senza connessione. Le VM di backend possono inviare pacchetti di risposta i cui indirizzi IP di origine corrispondono all'indirizzo IP della regola di forwarding o a qualsiasi indirizzo IP esterno assegnato per la VM. In pratica, la maggior parte dei client si aspetta che la risposta provenga dallo stesso indirizzo IP a cui hanno inviato i pacchetti.
La tabella seguente riassume le origini e le destinazioni dei pacchetti di risposta:
Tipo di traffico | Origine | Destinazione |
---|---|---|
TCP | L'indirizzo IP della regola di forwarding del bilanciatore del carico | Origine del pacchetto richiedente |
UDP, ESP, GRE, ICMP | Nella maggior parte dei casi d'uso, l'indirizzo IP della regola di forwarding del bilanciatore del carico † | L'origine del pacchetto richiedente. |
† Quando una VM ha un indirizzo IP esterno o se utilizzi Cloud NAT, è anche possibile impostare l'indirizzo IP di origine del pacchetto di risposta sull'indirizzo IPv4 interno principale del NIC della VM. Google Cloud o Cloud NAT modifica l'indirizzo IP di origine del pacchetto di risposta nell'indirizzo IPv4 esterno del NIC o in un indirizzo IPv4 esterno di Cloud NAT per inviare il pacchetto di risposta all'indirizzo IP esterno del client. Il mancato utilizzo dell'indirizzo IP della regola di forwarding come origine è uno scenario avanzato perché il client riceve un pacchetto di risposta da un indirizzo IP esterno che non corrisponde all'indirizzo IP a cui ha inviato un pacchetto di richiesta.
Percorso di ritorno
I bilanciatori del carico di rete passthrough esterni utilizzano route speciali esterne alla rete VPC per indirizzare le richieste in entrata e i probe del controllo di integrità a ciascuna VM di backend.
Il bilanciatore del carico conserva gli indirizzi IP di origine dei pacchetti. Le risposte delle VM di backend vengono inviate direttamente ai client, non tramite il bilanciatore del carico. Il termine nel settore per questo parametro è direct server Return.
Architettura VPC condiviso
Ad eccezione dell'indirizzo IP, tutti i componenti di un bilanciatore del carico di rete passthrough esterno devono essere presenti nello stesso progetto. La tabella seguente riassume i componenti del VPC condiviso per i bilanciatori del carico di rete passthrough esterni:
Indirizzo IP | Regola di forwarding | Componenti di backend |
---|---|---|
Un indirizzo IP esterno a livello di regione deve essere definito nello stesso progetto del bilanciatore del carico o del progetto host del VPC condiviso. | È necessario definire una regola di forwarding esterno a livello di regione nello stesso progetto delle istanze nel servizio di backend. | Il servizio di backend regionale deve essere definito nello stesso progetto e nella stessa regione in cui esistono i backend (gruppo di istanze o NEG a livello di zona). I controlli di integrità associati al servizio di backend devono essere definiti nello stesso progetto e nella stessa regione del servizio di backend. |
Distribuzione del traffico
Il modo in cui i bilanciatori del carico di rete passthrough esterni distribuiscono nuove connessioni dipende dal fatto che sia stato configurato il failover o meno:
- Se non hai configurato il failover, un bilanciatore del carico di rete passthrough esterno distribuisce nuove connessioni alle sue VM di backend integre se almeno una VM di backend è integro. Se tutte le VM di backend sono in stato non integro, il bilanciatore del carico distribuisce nuove connessioni tra tutti i backend come ultima soluzione. In questa situazione, il bilanciatore del carico instrada ogni nuova connessione a una VM di backend non integro.
- Se hai configurato il failover, un bilanciatore del carico di rete passthrough esterno distribuisce le nuove connessioni tra le VM di backend integre nel rispettivo pool attivo, in base a un criterio di failover configurato da te. Quando tutte le VM di backend sono in stato non integro, puoi
scegliere tra uno dei seguenti comportamenti:
- (Predefinito) Il bilanciatore del carico distribuisce il traffico solo alle VM principali. Questa operazione è l'ultima risorsa. Le VM di backup sono escluse da questa distribuzione delle connessioni dell'ultimo resort.
- Il bilanciatore del carico elimina il traffico.
Per maggiori dettagli su come vengono distribuite le connessioni, consulta la sezione successiva Selezione del backend e monitoraggio delle connessioni.
Per i dettagli sul funzionamento del failover, consulta la sezione Failover.
Selezione del backend e monitoraggio delle connessioni
I bilanciatori del carico di rete passthrough esterni utilizzano algoritmi configurabili per la selezione del backend e il monitoraggio delle connessioni per determinare come il traffico viene distribuito alle VM di backend.
I bilanciatori del carico di rete passthrough esterni utilizzano il seguente algoritmo per distribuire i pacchetti tra le VM di backend (nel pool attivo, se è stato configurato il failover):
- Se nella tabella di monitoraggio delle connessioni del bilanciatore del carico è presente una voce corrispondente alle caratteristiche di un pacchetto in entrata, il pacchetto viene inviato al backend specificato dalla voce della tabella di monitoraggio delle connessioni. Il pacchetto è considerato parte di una connessione stabilita in precedenza, per cui viene inviato alla VM di backend che il bilanciatore del carico ha precedentemente determinato e registrato nella sua tabella di monitoraggio delle connessioni.
Se il bilanciatore del carico riceve un pacchetto per il quale non ha alcuna voce di monitoraggio delle connessioni, il bilanciatore del carico esegue le seguenti operazioni:
Il bilanciatore del carico seleziona un backend. Il bilanciatore del carico calcola un hash in base all'affinità sessione configurata. Utilizza questo hash per selezionare un backend tra quelli in stato integro (a meno che tutti i backend non siano in stato non integro, nel qual caso vengono considerati tutti i backend purché il criterio di failover non sia stato configurato per eliminare il traffico in questa situazione). L'affinità sessione predefinita,
NONE
, utilizza i seguenti algoritmi di hash:- Per i pacchetti TCP e UDP non frammentati, un hash a 5 tuple tra l'indirizzo IP di origine, la porta di origine, l'indirizzo IP di destinazione, la porta di destinazione e il protocollo.
- Per i pacchetti UDP frammentati e tutti gli altri protocolli, un hash a tre tuple dell'indirizzo IP di origine, dell'indirizzo IP di destinazione e del protocollo del pacchetto.
La selezione del backend può essere personalizzata utilizzando un algoritmo hash che utilizza meno informazioni. Per tutte le opzioni supportate, consulta Opzioni di affinità sessione.
Inoltre, tieni presente quanto segue:
Se abiliti il bilanciamento del carico ponderato, la selezione del backend basata su hash viene ponderata in base alle ponderazioni riportate dalle istanze di backend. Ad esempio:
- Prendi in considerazione un servizio di backend configurato con un'affinità sessione impostata su
NONE
e una regola di forwarding con protocolloUDP
. Se sono presenti due istanze di backend in stato integro con pesi 1 e 4, i backend riceveranno rispettivamente il 20% e l'80% dei pacchetti UDP. - Prendi in considerazione un servizio di backend configurato con il monitoraggio
dell'affinità e delle connessioni di sessioni a 3 tuple.
L'affinità sessione è
CLIENT_IP_PROTO
e la modalità di monitoraggio delle connessioni èPER_SESSION
. Se sono presenti tre istanze di backend integre con ponderazioni 0, 2 e 6, i backend riceveranno rispettivamente il traffico per lo 0%, il 25% e il 75% dei nuovi indirizzi IP di origine (gli indirizzi IP di origine per i quali non esistono voci di tabella di monitoraggio delle connessioni esistenti). Il traffico per le connessioni esistenti verrà indirizzato ai backend assegnati in precedenza.
Il bilanciatore del carico aggiunge una voce alla propria tabella di monitoraggio delle connessioni. Questa voce registra il backend selezionato per la connessione del pacchetto in modo che tutti i pacchetti futuri provenienti da questa connessione vengano inviati allo stesso backend. L'utilizzo del monitoraggio delle connessioni dipende dal protocollo:
TCP. Il monitoraggio delle connessioni è sempre attivato e non può essere disattivato. Per impostazione predefinita, il monitoraggio delle connessioni è a 5 tuple, ma può essere configurato in modo che sia inferiore a 5 tuple. Con 5 tuple, i pacchetti SYN TCP vengono trattati in modo diverso. A differenza dei pacchetti non SYN, ignorano le voci di monitoraggio delle connessioni corrispondenti e selezionano sempre un nuovo backend.
Il monitoraggio predefinito della connessione a 5 tuple viene utilizzato quando:- la modalità di monitoraggio è
PER_CONNECTION
(tutte le affinità delle sessioni) oppure, - la modalità di monitoraggio è
PER_SESSION
e l'affinità sessione èNONE
oppure, - la modalità di monitoraggio è
PER_SESSION
e l'affinità sessione èCLIENT_IP_PORT_PROTO
.
- la modalità di monitoraggio è
Pacchetti UDP, ESP e GRE. Il monitoraggio delle connessioni viene attivato solo se l'affinità sessione è impostata su un valore diverso da
NONE
.Pacchetti ICMP e ICMPv6. Impossibile utilizzare il monitoraggio delle connessioni.
Per ulteriori dettagli su quando è attivato il monitoraggio delle connessioni e su quale metodo di monitoraggio viene utilizzato quando viene attivato il monitoraggio delle connessioni, consulta la pagina Modalità di monitoraggio delle connessioni.
Inoltre, tieni presente quanto segue:
- Una voce nella tabella di monitoraggio delle connessioni scade 60 secondi dopo l'elaborazione dell'ultimo pacchetto corrispondente alla voce da parte del bilanciatore del carico. Questo valore di timeout per inattività di 60 secondi non è configurabile.
- A seconda del protocollo, il bilanciatore del carico potrebbe rimuovere le voci della tabella di monitoraggio delle connessioni quando i backend sono in stato non integro. Per maggiori dettagli e per sapere come personalizzare questo comportamento, consulta Persistenza della connessione su backend in stato non integro.
Opzioni di affinità sessione
L'affinità sessione controlla la distribuzione di nuove connessioni dai client alle VM di backend del bilanciatore del carico. L'affinità sessione viene specificata per l'intero servizio di backend esterno a livello di regione, non per il backend.
I bilanciatori del carico di rete passthrough esterni supportano le seguenti opzioni di affinità sessione:
- Nessuno (
NONE
). Hash a 5 tuple di indirizzo IP di origine, porta di origine, protocollo, indirizzo IP di destinazione e porta di destinazione - IP client, IP di destinazione (
CLIENT_IP
). Hash a 2 tuple degli indirizzi IP di origine e degli indirizzi IP di destinazione - IP client, IP di destinazione, protocollo (
CLIENT_IP_PROTO
). Hash a 3 tuple di indirizzo IP di origine, indirizzo IP di destinazione e protocollo - IP client, porta client, IP di destinazione, porta di destinazione, protocollo
(
CLIENT_IP_PORT_PROTO
). Hash a 5 tuple di indirizzo IP di origine, porta di origine, protocollo, indirizzo IP di destinazione e porta di destinazione
Per scoprire in che modo queste opzioni di affinità sessione influiscono sui metodi di selezione del backend e di monitoraggio delle connessioni, consulta questa tabella.
Modalità di monitoraggio delle connessioni
L'abilitazione del monitoraggio delle connessioni dipende solo dal protocollo del traffico con bilanciamento del carico e dalle impostazioni di affinità sessione. La modalità di monitoraggio specifica l'algoritmo di monitoraggio delle connessioni da utilizzare quando il monitoraggio delle connessioni è attivato. Esistono due modalità di monitoraggio: PER_CONNECTION
(predefinita) e
PER_SESSION
.
PER_CONNECTION
(valore predefinito). Questa è la modalità di rilevamento predefinita. Con questa modalità di monitoraggio delle connessioni, il traffico TCP viene sempre monitorato per 5 tuple, indipendentemente dall'impostazione dell'affinità sessione. Per il traffico UDP, ESP e GRE, il monitoraggio della connessione è abilitato quando l'affinità sessione selezionata non èNONE
. I pacchetti UDP, ESP e GRE vengono monitorati utilizzando i metodi di monitoraggio descritti in questa tabella.PER_SESSION
. Se l'affinità sessione èCLIENT_IP
oCLIENT_IP_PROTO
, la configurazione di questa modalità comporta il monitoraggio della connessione a 2 e 3 tuple, rispettivamente, per tutti i protocolli (tranne ICMP e ICMPv6, che non sono tracciabili della connessione). Per altre impostazioni di affinità sessione, la modalitàPER_SESSION
si comporta in modo identico alla modalitàPER_CONNECTION
.
Per informazioni su come queste modalità di monitoraggio funzionano con le diverse impostazioni di affinità sessione per ciascun protocollo, consulta la tabella seguente.
Selezione del backend | Modalità di monitoraggio delle connessioni | ||
---|---|---|---|
Impostazione di affinità sessione | Metodo di hash per la selezione del backend | PER_CONNECTION (valore predefinito) |
PER_SESSION |
Predefinito:nessuna affinità sessione
( |
TCP e UDP non frammentato: hash a 5 tuple UDP frammentato e tutti gli altri protocolli: hash a 3 tuple |
|
|
IP client, IP di destinazione
( |
Tutti i protocolli:hash a 2 tuple |
|
|
IP client, IP di destinazione, protocollo
( |
Tutti i protocolli:hash a 3 tuple |
|
|
IP client, porta client, IP di destinazione, porta di destinazione, protocollo
( |
TCP e UDP non frammentato: hash a 5 tuple UDP frammentato e tutti gli altri protocolli: hash a 3 tuple |
|
|
Per scoprire come modificare la modalità di monitoraggio delle connessioni, consulta Configurare un criterio di monitoraggio delle connessioni.
Persistenza della connessione su backend in stato non integro
Le impostazioni di persistenza della connessione controllano se una connessione esistente rimane in una VM di backend o un endpoint selezionati dopo che il backend non è integro, purché il backend rimanga nel gruppo di backend configurato nel bilanciatore del carico (in un gruppo di istanze o in un NEG).
Il comportamento descritto in questa sezione non si applica ai casi in cui rimuovi un'istanza di backend da un gruppo di istanze o un endpoint di backend dal relativo NEG oppure rimuovi il gruppo di istanze o il NEG dal servizio di backend. In questi casi, le connessioni stabilite rimangono valide solo come descritto nello svuotamento delle connessioni.
Sono disponibili le seguenti opzioni di persistenza della connessione:
DEFAULT_FOR_PROTOCOL
(valore predefinito)NEVER_PERSIST
ALWAYS_PERSIST
La tabella seguente riassume le opzioni di persistenza della connessione e il modo in cui le connessioni vengono mantenute per i diversi protocolli, le opzioni di affinità sessione e le modalità di monitoraggio.
Opzione Persistenza della connessione su backend in stato non integro | Modalità di monitoraggio delle connessioni | |
---|---|---|
PER_CONNECTION |
PER_SESSION |
|
DEFAULT_FOR_PROTOCOL |
TCP: le connessioni vengono mantenute su backend in stato non integro (tutte le affinità delle sessioni) Tutti gli altri protocolli:le connessioni non vengono mai mantenute su backend in stato non integro. |
TCP: le connessioni vengono mantenute sui backend in stato non integro se l'affinità sessione è Tutti gli altri protocolli:le connessioni non vengono mai mantenute su backend in stato non integro. |
NEVER_PERSIST |
Tutti i protocolli: le connessioni non vengono mai mantenute su backend in stato non integro | |
ALWAYS_PERSIST |
TCP: le connessioni vengono mantenute su backend in stato non integro (tutte le affinità delle sessioni) ESP, GRE, UDP: le connessioni vengono mantenute sui backend in stato non integro se l'affinità sessione non è ICMP, ICMPv6:non applicabile perché non è tracciabile delle connessioni Questa opzione deve essere utilizzata solo per casi d'uso avanzati. |
Configurazione non possibile |
Comportamento di persistenza della connessione TCP su backend in stato non integro
Ogni volta che una connessione TCP con monitoraggio a 5 tuple persiste su un backend non integro:
- Se il backend non integro continua a rispondere ai pacchetti, la connessione continua finché non viene reimpostata o chiusa (dal backend o dal client).
- Se il backend in stato non integro invia un pacchetto di reimpostazione TCP (RST) o non risponde ai pacchetti, il client potrebbe riprovare con una nuova connessione, lasciando che il bilanciatore del carico selezioni un backend diverso e integro. I pacchetti SYN TCP selezionano sempre un backend nuovo e integro.
Per scoprire come modificare il comportamento di persistenza della connessione, consulta Configurare un criterio di monitoraggio della connessione.
Bilanciamento del carico ponderato
Puoi configurare un bilanciatore del carico di rete per distribuire il traffico tra le istanze di backend del bilanciatore del carico in base ai pesi riportati da un controllo di integrità HTTP utilizzando il bilanciamento del carico ponderato.
Il bilanciamento del carico ponderato richiede la configurazione di entrambi i seguenti elementi:
- Devi impostare il criterio del bilanciatore del carico per le località (
localityLbPolicy
) del servizio di backend suWEIGHTED_MAGLEV
. - Devi configurare il servizio di backend con un controllo di integrità HTTP. Le risposte del controllo di integrità HTTP devono contenere un campo di intestazione della risposta HTTP personalizzato
X-Load-Balancing-Endpoint-Weight
per specificare i pesi con valori compresi tra0
e1000
per ogni istanza di backend.
Se utilizzi lo stesso backend (gruppo di istanze o NEG) per più bilanciatori del carico di rete passthrough esterni basati sul servizio di backend utilizzando il bilanciamento del carico ponderato, ti consigliamo di utilizzare un request-path
univoco per ogni controllo di integrità del servizio di backend. Ciò consente all'istanza dell'endpoint di assegnare pesi diversi a diversi servizi di backend. Per ulteriori informazioni, consulta Criteri di successo per i controlli di integrità HTTP, HTTPS e HTTP/2.
Per selezionare un backend per una nuova connessione, ai backend viene assegnato un ordine di priorità rigoroso in base al peso e allo stato di integrità, come illustrato nella tabella seguente:
Peso | Sano | Priorità selezione backend |
---|---|---|
Peso maggiore di zero | Sì | 4 |
Peso maggiore di zero | No | 3 |
Il peso è uguale a zero | Sì | 2 |
Il peso è uguale a zero | No | 1 |
Solo i backend con priorità più elevata sono idonei alla selezione. Se tutti i backend idonei hanno un peso pari a zero, il bilanciatore del carico distribuisce le nuove connessioni tra tutti i backend idonei, trattandole con lo stesso peso. Per esempi di bilanciamento del carico ponderato, consulta Selezione del backend e monitoraggio delle connessioni.
Il bilanciamento del carico ponderato può essere utilizzato nei seguenti scenari:
Se alcune connessioni elaborano più dati di altre o se alcune durano più a lungo di altre, la distribuzione del carico backend potrebbe diventare non uniforme. Indicando un peso per istanza inferiore, un'istanza con un carico elevato può ridurre la quota di nuove connessioni, pur continuando a gestire le connessioni esistenti.
Se un backend è sovraccarico e l'assegnazione di più connessioni potrebbe interrompere le connessioni esistenti, questi backend non assegnano alcun peso a se stessi. Segnalando un peso pari a zero, un'istanza di backend smette di gestire le nuove connessioni, ma continua a gestire quelle esistenti.
Se un backend svuota le connessioni esistenti prima della manutenzione, assegna un peso a se stesso. Segnalando un peso pari a zero, l'istanza di backend smette di gestire le nuove connessioni, ma continua a gestire quelle esistenti.
Per maggiori informazioni, consulta Configurare il bilanciamento del carico ponderato.
Svuotamento della connessione
Lo svuotamento della connessione è un processo applicato alle connessioni stabilite nei seguenti casi:
- Una VM o un endpoint viene rimosso da un backend (gruppo di istanze o NEG).
- Un backend rimuove una VM o un endpoint (per sostituzione, interruzione, durante il rollback degli upgrade o lo scale down).
- Un backend viene rimosso da un servizio di backend.
Per impostazione predefinita, lo svuotamento della connessione è disattivato. Se disabilitata, le connessioni stabilite vengono terminate il più rapidamente possibile. Quando lo svuotamento della connessione è abilitato, le connessioni stabilite possono restare invariate per un timeout configurabile, dopodiché l'istanza VM di backend viene terminata.
Per maggiori dettagli su come viene attivato lo svuotamento della connessione e su come attivarlo, consulta Attivare lo svuotamento della connessione.
Frammentazione UDP
I bilanciatori del carico di rete passthrough esterni basati sul servizio di backend possono elaborare pacchetti UDP frammentati e non frammentati. Se l'applicazione utilizza pacchetti UDP frammentati, tieni presente quanto segue:
- I pacchetti UDP potrebbero frammentarsi prima di raggiungere una rete VPC Google Cloud.
- Le reti VPC di Google Cloud inoltrano i frammenti UDP non appena arrivano (senza attendere l'arrivo di tutti i frammenti).
- Le reti non Google Cloud e le apparecchiature di rete on-premise potrebbero inoltrare i frammenti UDP all'arrivo, ritardare i pacchetti UDP frammentati fino all'arrivo di tutti i frammenti oppure ignorare i pacchetti UDP frammentati. Per maggiori dettagli, consulta la documentazione del provider di rete o dell'apparecchiatura di rete.
Se prevedi pacchetti UDP frammentati e devi instradarli agli stessi backend, utilizza la regola di forwarding e i parametri di configurazione del servizio di backend seguenti:
Configurazione delle regole di forwarding: utilizza una sola regola di forwarding
UDP
oL3_DEFAULT
per ogni indirizzo IP con bilanciamento del carico e configura la regola di forwarding in modo che accetti il traffico su tutte le porte. Ciò garantisce che tutti i frammenti arrivino alla stessa regola di forwarding. Anche se i pacchetti frammentati (diversi dal primo frammento) non hanno una porta di destinazione, la configurazione della regola di forwarding per l'elaborazione del traffico per tutte le porte consente anche la ricezione di frammenti UDP senza informazioni sulle porte. Per configurare tutte le porte, utilizza Google Cloud CLI per impostare--ports=ALL
o utilizza l'API per impostareallPorts
suTrue
.Configurazione del servizio di backend: imposta l'affinità della sessione del servizio di backend su
CLIENT_IP
(hash a 2 tuple) oCLIENT_IP_PROTO
(hash a 3 tuple) in modo che venga selezionato lo stesso backend per i pacchetti UDP che includono informazioni sulle porte e frammenti UDP (diversi dal primo frammento) privi di informazioni sulle porte. Imposta la modalità di monitoraggio delle connessioni del servizio di backend suPER_SESSION
, in modo che le voci della tabella di monitoraggio delle connessioni vengano create utilizzando gli stessi hash a 2 o 3 tuple.
Utilizzo di istanze di destinazione come backend
Se utilizzi istanze di destinazione come backend per il bilanciatore del carico di rete passthrough esterno e prevedi pacchetti UDP frammentati, utilizza una sola regola di forwarding UDP
o L3_DEFAULT
per indirizzo IP e configura la regola di forwarding in modo che accetti il traffico su tutte le porte. Ciò garantisce che tutti i frammenti arrivino alla stessa regola di forwarding anche se non hanno la stessa porta di destinazione. Per configurare tutte le porte, imposta --ports=ALL
con gcloud
oppure allPorts
su True
utilizzando l'API.
Failover
Puoi configurare un bilanciatore del carico di rete passthrough esterno per distribuire le connessioni tra istanze VM o endpoint nei backend primari (gruppi di istanze o NEG) e poi passare, se necessario, all'utilizzo di backend di failover. Il failover fornisce un altro metodo per aumentare la disponibilità e, al contempo, offre un maggiore controllo su come gestire il carico di lavoro quando i backend principali non sono integri.
Per impostazione predefinita, quando aggiungi un backend a un servizio di backend del bilanciatore del carico di rete passthrough esterno, questo è un backend principale. Puoi designare un backend come backend di failover quando lo aggiungi al servizio di backend del bilanciatore del carico o modificando il servizio in un secondo momento.
Per ulteriori dettagli sul funzionamento del failover, vedi Panoramica del failover per bilanciatori del carico di rete passthrough esterni.
Limitazioni
Non puoi utilizzare la console Google Cloud per eseguire le attività seguenti:
- Creare o modificare un bilanciatore del carico di rete passthrough esterno la cui regola di forwarding utilizza il protocollo
L3_DEFAULT
. - Crea o modifica un bilanciatore del carico di rete passthrough esterno il cui protocollo del servizio di backend è impostato su
UNSPECIFIED
. - Crea o modifica un bilanciatore del carico di rete passthrough esterno che configura un criterio di monitoraggio delle connessioni.
- Crea o modifica il reindirizzamento del traffico basato su IP di origine per una regola di forwarding.
Utilizza Google Cloud CLI o l'API REST.
- Creare o modificare un bilanciatore del carico di rete passthrough esterno la cui regola di forwarding utilizza il protocollo
I bilanciatori del carico di rete passthrough esterni non supportano il peering di rete VPC.
Passaggi successivi
- Per configurare un bilanciatore del carico di rete passthrough esterno con un servizio di backend solo per il traffico TCP o UDP (che supporta il traffico IPv4 e IPv6), consulta Configurare un bilanciatore del carico di rete passthrough esterno con un servizio di backend.
- Per configurare un bilanciatore del carico di rete passthrough esterno per più protocolli IP (che supporta il traffico IPv4 e IPv6), consulta Configurare un bilanciatore del carico di rete passthrough esterno per più protocolli IP.
- Per configurare un bilanciatore del carico di rete passthrough esterno con un backend NEG a livello di zona, consulta Configurare un bilanciatore del carico di rete passthrough esterno con NEG a livello di zona
- Per configurare un bilanciatore del carico di rete passthrough esterno con un pool di destinazione, consulta Configurare un bilanciatore del carico di rete passthrough esterno con un pool di destinazione.
- Per informazioni su come eseguire la transizione di un bilanciatore del carico di rete passthrough esterno dal backend di un pool di destinazione a un servizio di backend regionale, consulta Transizione di un bilanciatore del carico di rete passthrough esterno da un pool di destinazione a un servizio di backend.