IPv6 per bilanciatori del carico delle applicazioni e bilanciatori del carico di rete proxy

Questo documento illustra come il traffico IPv6 viene gestito dai bilanciatori del carico delle applicazioni e dai bilanciatori del carico di rete proxy. Questi bilanciatori del carico sono bilanciatori del carico proxy, il che significa che le connessioni client in entrata vengono interrotte al bilanciatore del carico. Il bilanciatore del carico avvia quindi una nuova connessione per inoltrare la richiesta del client al backend. A seconda del tipo di bilanciatore del carico, puoi attivare IPv6 per una o entrambe queste connessioni.

L'attivazione di IPv6 per il bilanciatore del carico presenta i seguenti vantaggi:

  • Utilizza un singolo indirizzo IPv6 anycast per i deployment multiregione. Ti occorre solo un indirizzo IPv6 del bilanciatore del carico per le istanze dell'applicazione in esecuzione in più regioni. Ciò significa che il tuo server DNS ha un singolo record AAAA e che non devi eseguire il bilanciamento del carico tra più indirizzi IPv6. La memorizzazione nella cache dei record AAAA da parte dei client non è un problema perché esiste un solo indirizzo da memorizzare nella cache. Le richieste degli utenti all'indirizzo IPv6 vengono bilanciate automaticamente in base al carico sul backend integro più vicino con capacità disponibile.
  • Esegui deployment dual-stack. Per servire i client IPv6 e IPv4, crea due indirizzi IP del bilanciatore del carico, uno per IPv6 e l'altro per IPv4. I client IPv4 si connettono all'indirizzo IPv4, mentre i client IPv6 si connettono all'indirizzo IPv6. Questi client vengono poi bilanciati automaticamente in base al carico con i backend IPv4 o IPv6 dual-stack integri più vicini con capacità disponibile. Per sapere quali bilanciatori del carico supportano i backend dual-stack, consulta la Tabella: servizi di backend e tipi di backend supportati. Forniamo le regole di inoltro IPv6 senza costi, quindi paghi solo quelle IPv4.

  • Bilancia il carico del traffico client IPv6 HTTP, HTTPS, HTTP/2, TCP e SSL/TLS. Il supporto del protocollo dipende dal tipo di bilanciatore del carico in uso e dal protocollo della regola di inoltro.

  • Overflow tra regioni con un singolo indirizzo del bilanciatore del carico IPv6. Se i backend di una regione non dispongono di risorse o non sono in stato integro, il bilanciatore del carico globale indirizza automaticamente le richieste degli utenti alla regione più vicina con risorse disponibili. Quando la regione più vicina ha risorse disponibili, il bilanciamento del carico globale torna a servire da questa regione. Il bilanciamento del carico globale richiede l'utilizzo del livello Premium dei livelli di servizio di rete.

Supporto del bilanciatore del carico

Per i bilanciatori del carico basati su proxy, come i bilanciatori del carico delle applicazioni e i bilanciatori del carico di rete proxy, la connessione dal client al bilanciatore del carico e la seconda connessione dal bilanciatore del carico al backend possono essere configurate indipendentemente l'una dall'altra. Ad esempio, il bilanciatore del carico può accettare il traffico IPv4 da un client, terminare la connessione e inoltrare la richiesta dal bilanciatore del carico al backend tramite una nuova connessione IPv6, a condizione che il backend sia un backend dual-stack in grado di gestire le connessioni IPv6.

Per consentire a un bilanciatore del carico di ricevere connessioni IPv6 dai client, devi utilizzare un indirizzo IPv6 per la regola di forwarding del bilanciatore del carico. La connessione successiva dal bilanciatore del carico al backend utilizza IPv4 per impostazione predefinita. Tuttavia, puoi attivare l'utilizzo dell'IPv6 per determinati bilanciatori del carico configurando l'opzione Criterio di selezione dell'indirizzo IP sul servizio di backend.

La tabella seguente descrive i tipi di connessione supportati da tutti i bilanciatori del carico basati su proxy:

Bilanciatore del carico Connessione dai client al bilanciatore del carico Connessione dal bilanciatore del carico ai backend
Bilanciatore del carico delle applicazioni esterno globale
Bilanciatore del carico di rete proxy esterno globale
È possibile terminare sia le connessioni IPv4 sia quelle IPv6. Uno dei seguenti:
  • Connessione IPv4: supportata con backend solo IPv4 o a doppio stack
  • Connessione IPv6: supportata solo con backend a doppio stack*
Bilanciatore del carico delle applicazioni classico
Bilanciatore del carico di rete proxy classico
È possibile terminare sia le connessioni IPv4 sia quelle IPv6. Solo connessione IPv4
Bilanciatore del carico delle applicazioni esterno regionale
Network Load Balancer proxy esterno regionale
Bilanciatore del carico delle applicazioni interno regionale
Network Load Balancer proxy interno regionale
Bilanciatore del carico delle applicazioni interno tra regioni
Network Load Balancer proxy interno tra regioni
Solo IPv4. Il traffico IPv6 non è supportato. Uno dei seguenti:
  • Connessione IPv4: supportata con backend solo IPv4 o a doppio stack
  • Connessione IPv6: supportata solo con backend a doppio stack*
* Solo i gruppi di istanze e i NEG zonali (con endpointGCE_VM_IP_PORT) possono essere configurati come a doppio stack.

Come funziona la terminazione IPv6

La terminazione IPv6 è supportata dai bilanciatori del carico delle applicazioni globali e classici e dai bilanciatori del carico di rete proxy. La configurazione della terminazione IPv6 per questi bilanciatori del carico consente ai tuoi backend di apparire come applicazioni IPv6 ai client IPv6, come mostrato nella figura seguente:

Terminazione IPv6 per il bilanciamento del carico.
Terminazione IPv6 per il bilanciamento del carico (fai clic per ingrandire).

Quando un utente si connette al bilanciatore del carico tramite IPv6, si verifica quanto segue:

  1. Il bilanciatore del carico, con il relativo indirizzo IPv6 e regola di forwarding, attende le connessioni degli utenti.
  2. Un client IPv6 si connette al bilanciatore del carico utilizzando IPv6.
  3. Il bilanciatore del carico funziona come un proxy inverso e termina la connessione del client IPv6. In base al criterio di selezione degli indirizzi IP del servizio di backend, inserisce la richiesta in una connessione IPv4 o IPv6 a un backend.
  4. Nel percorso inverso, il bilanciatore del carico riceve la risposta dal backend e la inserisce nella connessione IPv6 al client originale.

Allocazone di indirizzi IPv6 per le regole di inoltro del bilanciatore del carico

Quando configuri un bilanciatore del carico esterno, fornisci una o più regole di inoltro, ciascuna con un indirizzo IP IPv4 o IPv6 esterno con routing pubblico (o entrambi). Puoi utilizzare questo indirizzo IP nei record DNS del tuo sito.

Quando crei una regola di forwarding, puoi utilizzare un indirizzo IP statico riservato al tuo progetto oppure puoi fare in modo che la regola di forwarding acquisisca automaticamente un indirizzo IP temporaneo al momento della creazione. Un indirizzo IP statico è riservato al tuo progetto e puoi conservarlo finché non lo rilasci deliberatamente. Un indirizzo temporaneo appartiene alla regola di forwarding finché la regola di forwarding esiste. Se elimini la regola di forwarding, l'indirizzo temporaneo viene reintegrato nel pool Google Cloud.

Se hai bisogno sia di un indirizzo IPv4 che di un indirizzo IPv6 per il bilanciatore del carico, puoi creare due regole di inoltro, associando un indirizzo IPv4 a una e un indirizzo IPv6 all'altra. Puoi quindi associare entrambe le regole allo stesso bilanciatore del carico.

Formato dell'indirizzo IPv6

Google Cloud alloca un intervallo di indirizzi IPv6 /64 alle regole di inoltro IPv6. Google Cloud CLI elenca gli indirizzi IPv6 con i 64 bit meno significativi impostati su 0, ma il bilanciatore del carico accetta il traffico nell'intervallo completo. Pertanto, potresti vedere altri indirizzi IPv6 del bilanciatore del carico nell'intervallo allocato negli intestazioni X-Forwarded-For a seconda dell'indirizzo IP del server IPv6 a cui si è connesso il client.

Quando formatta un indirizzo IPv6, Google Cloud segue i consigli riportati nella sezione 4 dell'RFC 5952.

Intestazione IP client con terminazione IPv6 per i bilanciatori del carico delle applicazioni esterni

Quando il bilanciatore del carico esegue il proxy della connessione IPv6 dal client a una connessione IPv4 al tuo backend, l'indirizzo IP di origine originale viene sostituito con l'indirizzo IP del bilanciatore del carico. Tuttavia, i backend spesso devono conoscere l'indirizzo IP di origine originale per la registrazione, la presa di decisioni o altri scopi. Google Cloud fornisce un'intestazione HTTP che viene propagata ai backend e include l'indirizzo IP del client IPv6 originale.

Le intestazioni HTTP per IPv6 sono simili a quelle per IPv4. Il formato delle richieste è il seguente:

  • X-Forwarded-For: CLIENT_IP_ADDRESS, GLOBAL_FORWARDING_RULE_EXTERNAL_IP_ADDRESSES

L'ultimo elemento mostra l'indirizzo IP del bilanciatore del carico. L'ultimo elemento mostra l'indirizzo IP del client come visto dal bilanciatore del carico. Potrebbero essere presenti altri elementi nell'intestazione X-Forwarded-For quando il client o i proxy intermedi aggiungono altre intestazioni X-Forwarded-For prima di inviare la richiesta al bilanciatore del carico.

Un esempio di intestazione X-Forwarded-For potrebbe avere il seguente aspetto:

X-Forwarded-For: 2001:db8:abcd:1::1234, 2607:f8b0:4005:801::200e

2001:db8:abcd:1::1234 è l'indirizzo IPv6 del client. 2607:f8b0:4005:801::200e è l'indirizzo IPv6 del bilanciatore del carico delle applicazioni esterno.

Convertire da solo IPv4 a doppio stack

Puoi convertire le risorse di bilanciamento del carico che utilizzano solo IPv4 (stack singolo) in IPv4 e IPv6 (stack doppio). Aggiornando le risorse del bilanciatore del carico, puoi instradare automaticamente il traffico IPv6 ai tuoi backend.

Per istruzioni su come convertire le risorse e i backend del bilanciatore del carico in dual stack, consulta la seguente documentazione:

Bilanciatore del carico Documentazione
Bilanciatore del carico delle applicazioni esterno globale
Bilanciatore del carico delle applicazioni interno tra regioni
Bilanciatore del carico delle applicazioni esterno regionale
Bilanciatore del carico delle applicazioni interno regionale
Converti il bilanciatore del carico delle applicazioni in IPv6
Bilanciatore del carico di rete proxy esterno globale
Bilanciatore del carico di rete proxy interno tra regioni
Bilanciatore del carico di rete proxy esterno regionale
Bilanciatore del carico di rete proxy interno regionale
Convertire il bilanciatore del carico di rete proxy in IPv6

Prezzi

Le regole di inoltro per il termine IPv6 sono fornite senza costi aggiuntivi. Non viene addebitato alcun costo per gli indirizzi IPv6 temporanei. Gli indirizzi IPv6 riservati vengono addebitati alle tariffe esistenti, indipendentemente dal fatto che siano in uso o meno. In caso contrario, i prezzi per il bilanciamento del carico IPv6 sono gli stessi per il bilanciamento del carico IPv4. Per i dettagli sui prezzi del bilanciamento del carico, consulta i prezzi di utilizzo della rete.

Limitazioni

  • I bilanciatori del carico di rete proxy classici e i bilanciatori del carico delle applicazioni classici non supportano i backend dual-stack. Il traffico IPv6 viene terminato dal bilanciatore del carico e poi inviato tramite proxy a una connessione IPv4 ai backend.
  • I bilanciatori del carico delle applicazioni esterni regionali, i bilanciatori del carico delle applicazioni interni regionali, i bilanciatori del carico di rete proxy interni regionali, i bilanciatori del carico di rete proxy interni tra regioni, i bilanciatori del carico delle applicazioni interni tra regioni e i bilanciatori del carico di rete proxy esterni regionali non supportano le frontend IPv6. Il traffico IPv4 in entrata viene eseguito tramite proxy su una connessione IPv4 o IPv6 ai backend IPv4 e IPv6 (a doppio stack).

  • Solo i backend dei gruppi di istanze VM e i gruppi di endpoint di rete (NEG) a livello di zona con endpoint GCE_VM_IP_PORT supportano i backend a doppio stack (IPv4 e IPv6).

Passaggi successivi