Panoramica del bilanciatore del carico di rete passthrough esterno basato su pool di destinazione

Un bilanciatore del carico di rete passthrough esterno è un bilanciatore del carico di livello 4 a livello di regione. I bilanciatori del carico di rete passthrough esterni distribuiscono il traffico TCP e UDP tra il backend di istanze di macchine virtuali (VM) nella stessa regione in una rete VPC (Virtual Private Cloud). Un bilanciatore del carico di rete passthrough esterno può ricevere traffico da una delle seguenti opzioni:

  • 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

A seconda della configurazione della regola di forwarding, ogni pool di destinazione il bilanciatore del carico supporta uno dei seguenti tipi di traffico del protocollo:

  • TCP
  • UDP
  • TCP e UDP

L'ambito del bilanciatore del carico è a livello di regione, non globale. Ciò significa che tutti le istanze di backend per un bilanciatore del carico di rete passthrough esterno devono trovarsi nella stessa regione. Puoi posizionare i backend in qualsiasi zona della regione.

I bilanciatori del carico di rete passthrough esterni supportano una o tutte le porte. Puoi utilizzare un bilanciatore del carico di rete passthrough esterno per bilanciare il carico del traffico TCP o UDP. Poiché è un bilanciatore del carico passthrough, i tuoi backend connessione TCP con bilanciamento del carico o pacchetti UDP. Ad esempio, potresti Eseguire un server web HTTPS sui tuoi backend e utilizzare un bilanciatore del carico di rete passthrough esterno per instradarvi le richieste, terminando TLS sui tuoi backend.

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 di GKE utenti. È uguale all'architettura di bilanciamento del carico standalone, ad eccezione del fatto che che il suo ciclo di vita sia completamente automatizzato e controllato da GKE. Per maggiori dettagli, vedi Esporre le app utilizzando Google Cloud.

Architettura

Il bilanciatore del carico è composto da diversi componenti di configurazione. Un singolo caricamento bilanciatore può avere quanto segue:

Un bilanciatore del carico di rete passthrough esterno ha sempre un pool di destinazione. Inoltro multipli possono fare riferimento al pool di destinazione.

Il pool di destinazione è un backend per il bilanciatore del carico. Specifica e istanze di backend tra le quali il traffico viene bilanciato. Ogni regola di forwarding viene un frontend per il bilanciatore del carico. Ricorda che esistono limiti al numero di regole di forwarding e pool di destinazione per progetto.

I bilanciatori del carico di rete passthrough esterni bilanciano il carico sui sistemi in base i dati del protocollo IP in entrata, come indirizzo, porta e tipo di protocollo.

Il bilanciatore del carico di rete passthrough esterno è un bilanciatore del carico passthrough, quindi i backend ricevere la richiesta originale del cliente. Il bilanciatore del carico di rete passthrough esterno non esegue alcuna operazione Invio di proxy o offloading Transport Layer Security (TLS). Il traffico è diretto instradato alle VM.

Quando crei una regola di forwarding per il bilanciatore del carico, ricevi un un indirizzo IP virtuale temporaneo (VIP) o riservare un VIP che abbia origine da un o un blocco di rete regionale.

Successivamente, associ la regola di forwarding ai pool di destinazione. Il VIP è dai punti di presenza (POP) globali di Google, ma i backend regionale. Il bilanciatore del carico non può avere backend che coprono più regioni.

Puoi utilizzare i firewall di Google Cloud per controllare o filtrare l'accesso ai di backend.

Il bilanciatore del carico di rete passthrough esterno esamina le porte di origine e di destinazione, l'indirizzo IP e un protocollo per determinare come inoltrare i pacchetti. Per il traffico TCP, è possibile modificare il comportamento di forwarding del bilanciatore del carico configurando la sessione di affinità. Il bilanciatore del carico di rete passthrough esterno inoltra i pacchetti alla prima interfaccia di rete (nic0) delle istanze nel pool di destinazione.

Il bilanciatore del carico conserva gli indirizzi IP di origine dei pacchetti in entrata. La l'indirizzo IP di destinazione per i pacchetti in entrata è l'indirizzo IP esterno a livello di regione associate alla regola di forwarding del bilanciatore del carico.

Algoritmo di distribuzione del carico

Per impostazione predefinita, per distribuire il traffico alle istanze, il valore di affinità sessione è impostato su NONE. Cloud Load Balancing seleziona un'istanza in base a un hash del IP e porta di origine, IP di destinazione e porta e protocollo. Ciò significa che connessioni TCP in entrata sono distribuite tra le istanze e ogni nuova connessione a un'altra istanza. Tutti i pacchetti per una connessione sono indirizzati allo stesso fino alla chiusura della connessione. Le connessioni stabilite non vengono prese nel processo di bilanciamento del carico.

Indipendentemente dall'impostazione di affinità sessione, tutti i pacchetti per una connessione vengono all'istanza scelta fino alla chiusura della connessione. Un account esistente connessione non ha alcun impatto sulle decisioni di bilanciamento del carico per le nuove e altre connessioni. Ciò può causare uno squilibrio tra i backend se il protocollo TCP di lunga durata connessioni in uso.

Puoi scegliere un'impostazione di affinità sessione diversa se hai bisogno di più di connessioni da un client per andare alla stessa istanza.

Pool di destinazione

Una risorsa pool di destinazione definisce un gruppo e le istanze VM che devono ricevere traffico in entrata dalle regole di forwarding. Quando di una regola di forwarding indirizza il traffico a un pool di destinazione, Cloud Load Balancing seleziona una da questi pool di destinazione in base a un hash dell'IP e della porta di origine l'IP e la porta di destinazione. Ogni pool di destinazione opera in una singola regione distribuisce il traffico alla prima interfaccia di rete (nic0) del backend in esecuzione in un'istanza Compute Engine. Per ulteriori informazioni su come il traffico viene distribuito alle istanze, consulta la sezione Carica algoritmo di distribuzione.

I bilanciatori del carico di rete passthrough esterni non sono proxy. Le risposte dalle VM di backend vanno direttamente ai client, non tramite il bilanciatore del carico. Il bilanciatore del carico conserva gli indirizzi IP di origine dei pacchetti. L'indirizzo IP di destinazione per i pacchetti in entrata è l'indirizzo IP esterno a livello di regione associato la regola di forwarding del bilanciatore del carico. Di conseguenza:

  • Istanze che partecipano come VM di backend per bilanciatori del carico di rete passthrough esterni devono eseguire Ambiente guest Linux, Ambiente guest Windows, o altri processi che forniscono una capacità equivalente.

    L'ambiente del sistema operativo guest (o un processo equivalente) è responsabile e configurare route locali su ogni VM di backend. Queste route consentono alla VM accettare pacchetti la cui destinazione corrisponde all'indirizzo IP del carico la regola di forwarding del bilanciatore.

  • Nelle istanze di backend che accettano il traffico con bilanciamento del carico, devi configurare il software per l'associazione all'indirizzo IP associato al bilanciatore del carico, regola di forwarding (o a qualsiasi indirizzo IP, 0.0.0.0/0).

I bilanciatori del carico di rete passthrough esterni supportano Compute Engine gestore della scalabilità automatica, che consente agli utenti di scalare nei gruppi di istanze in un pool di destinazione in base all'utilizzo del backend. Per ulteriori informazioni le informazioni, vedi Scalabilità basata sull'utilizzo della CPU.

Se vuoi che il pool di destinazione contenga una singola istanza VM, dovresti prendere in considerazione l'utilizzo di forwarding del protocollo.

I pool di destinazione possono essere utilizzati solo con le regole di forwarding che gestiscono TCP e UDP per via del traffico. Per tutti gli altri protocolli, devi creare un'istanza di destinazione. Devi crea un pool di destinazione prima di poterlo utilizzare con una regola di forwarding. Ogni progetto può avere fino a 50 pool di destinazione.

Regole di forwarding

Le regole di forwarding funzionano in in combinazione con i pool di destinazione per supportare il bilanciamento del carico. Per utilizzare il bilanciamento del carico, devi creare una regola di forwarding che indirizzi il traffico a pool di destinazione specifici. Non è possibile bilanciare il carico del traffico senza una regola di forwarding.

Ogni regola di forwarding corrisponde a un indirizzo IP, a un protocollo e, facoltativamente, a un singolo pool di destinazione. Quando il traffico viene inviato a un IP esterno fornito da una regola di forwarding, la regola indirizza al pool di destinazione corrispondente.

Se bilancia il carico di pacchetti UDP che probabilmente sono frammentati prima in arrivo alla tua rete VPC di Google Cloud, Bilanciamento del carico e pacchetti UDP frammentati.

I bilanciatori del carico di rete passthrough esterni basati su pool di destinazione supportano i seguenti protocolli per ogni regola di forwarding: TCP o UDP. Se desideri bilanciatore del carico per inoltrare tutto il traffico del protocollo IP, devi utilizzare un backend bilanciatore del carico di rete passthrough esterno basato su servizio.

Più regole di forwarding

Puoi configurare più regole di forwarding esterno a livello di regione per lo stesso un bilanciatore del carico di rete passthrough esterno. Facoltativamente, ogni regola di forwarding può avere un un indirizzo IP esterno a livello di regione diverso oppure più regole di forwarding possono lo stesso indirizzo IP esterno a livello di regione.

La configurazione di più regole di forwarding esterno a livello di regione può essere utile per queste casi d'uso:

  • Devi configurare più di un indirizzo IP esterno per la stessa destinazione piscina.
  • Devi configurare diversi intervalli di porte o protocolli diversi utilizzando lo stesso indirizzo IP esterno per lo stesso pool di destinazione.

Se utilizzi più regole di forwarding, assicurati di configurare il software in esecuzione sulle VM di backend in modo da associarsi a tutti gli indirizzi IP necessari. Questo campo è obbligatorio perché l'indirizzo IP di destinazione dei pacchetti consegnati tramite il bilanciatore del carico è l'indirizzo IP esterno regionale associato la rispettiva regola di forwarding esterno a livello di regione.

Controlli di integrità

I controlli di integrità assicurano che Compute Engine inoltra le nuove connessioni solo alle istanze attive e pronto a riceverle. Compute Engine invia richieste di controllo di integrità a per ciascuna istanza con la frequenza specificata. Quando un'istanza supera il limite consentito di errori del controllo di integrità, non è più considerata idonea per ricevere nuovo traffico.

Per consentire l'arresto e la chiusura controllata delle connessioni TCP, di connessioni non terminate attivamente. Tuttavia, le connessioni esistenti non è garantito che il backend in stato non integro resti utilizzabile per lunghi periodi di tempo. Se possibile, dovresti avviare una procedura di chiusura controllata il prima possibile per il tuo backend in stato non integro.

Il controllo di integrità continua a eseguire query sulle istanze in stato non integro e restituisce un al pool quando si verifica il numero specificato di controlli riusciti. Se tutte le istanze sono contrassegnate come UNHEALTHY, il bilanciatore del carico indirizza nuovo traffico a tutte le istanze esistenti.

I bilanciatori del carico di rete passthrough esterni si basano su HTTP legacy controlli di integrità per per determinare l'integrità dell'istanza. Anche se il servizio non utilizza HTTP, è necessario eseguire un server web di base su ciascuna istanza su cui il sistema di controllo di integrità può eseguire query.

I controlli di integrità HTTPS legacy non sono supportati per i bilanciatori del carico di rete passthrough esterni e non possono con la maggior parte degli altri tipi di bilanciatori del carico.

Regole firewall

I controlli di integrità per i bilanciatori del carico di rete passthrough esterni vengono inviati da questi indirizzi IP più intervalli. Dovrai le regole firewall di autorizzazione in entrata che consentono il traffico da questi intervalli.

I bilanciatori del carico di rete passthrough esterni sono bilanciatori del carico passthrough, il che significa che Le regole firewall devono consentire il traffico dagli indirizzi IP di origine client. Se le tue è aperto a internet, è più facile consentire il traffico da tutti intervalli di tempo. Se vuoi limitare l'accesso in modo che solo determinati indirizzi IP di origine sono consentite, puoi configurare le regole firewall per applicare tale restrizione, deve consentire l'accesso dagli intervalli IP del controllo di integrità.

Per un esempio di regola firewall e un esempio di configurazione, consulta Regole firewall per bilanciatori del carico di rete passthrough esterni.

Indirizzi IP per i pacchetti di richiesta e restituzione

Quando una VM di backend riceve un pacchetto con bilanciamento del carico da un client, sono:

  • Origine:l'indirizzo IP esterno associato a un Indirizzo IP di un sistema o di una VM Google Cloud instradabile su internet e la connessione al bilanciatore del carico.
  • Destinazione:l'indirizzo IP dell'inoltro del bilanciatore del carico personalizzata.

Poiché il bilanciatore del carico è un bilanciatore del carico passthrough (non un proxy), arriva con l'indirizzo IP di destinazione dell'inoltro del bilanciatore del carico personalizzata. 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 IP indirizzo (0.0.0.0 o ::)
  • Se il protocollo della regola di forwarding del bilanciatore del carico supporta le porte: ascolta su (associazione a) una porta inclusa nella regola di forwarding del bilanciatore del carico

I pacchetti di ritorno vengono inviati direttamente dalle VM di backend del bilanciatore del carico alla di alto profilo. Gli indirizzi IP di origine e di destinazione del pacchetto restituito dipendono protocollo:

  • TCP è orientato alla connessione, quindi le VM di backend devono rispondere con pacchetti gli indirizzi IP di origine corrispondano all'indirizzo IP della regola di forwarding, in modo che possa associare i pacchetti di risposta alla connessione TCP appropriata.
  • UDP è senza connessione, quindi le VM di backend possono inviare pacchetti di risposta i cui indirizzi IP di origine corrispondono all'indirizzo IP della regola di forwarding corrispondere a qualsiasi indirizzo IP assegnato per la VM. In pratica, la maggior parte i client si aspettano che la risposta provenga dallo stesso indirizzo IP a cui e pacchetti inviati.

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 Nella maggior parte dei casi d'uso, l'indirizzo IP del forwarding del bilanciatore del carico regola Origine del pacchetto richiedente

Quando una VM ha un indirizzo IP esterno o quando utilizzi Cloud NAT, è anche possibile impostare l'IP di origine del pacchetto di risposta all'indirizzo IPv4 interno principale del NIC della VM. in Google Cloud Cloud NAT cambia l'indirizzo IP di origine del pacchetto di risposta nel l'indirizzo IPv4 esterno del NIC o un indirizzo IPv4 esterno di Cloud NAT per inviare il pacchetto di risposta all'indirizzo IP esterno del client. Non in uso l'indirizzo IP della regola di forwarding come origine è uno scenario avanzato perché riceve un pacchetto di risposta da un indirizzo IP esterno che non corrisponda all'indirizzo IP a cui ha inviato il pacchetto di richiesta.

Percorsi di routing speciali

Google Cloud utilizza route speciali non definite nel tuo VPC per i controlli di integrità. Per ulteriori informazioni, vedi Percorsi per i controlli di integrità.

Architettura VPC condiviso

La tabella seguente riassume i componenti del VPC condiviso per bilanciatori del carico di rete passthrough esterni:

Indirizzo IP Regola di forwarding Componenti di backend
R l'indirizzo IP esterno regionale deve essere definito nello stesso progetto di le istanze con bilanciamento del carico. R la regola di forwarding esterno a livello di regione deve essere definita nello stesso progetto come le istanze nel pool di destinazione (il progetto di servizio). La il pool di destinazione deve essere definito nello stesso progetto e nella stessa regione in cui nel pool di destinazione. Controlli di integrità associati al il pool di destinazione deve essere definito anche nello stesso progetto.

Distribuzione del traffico

Il modo in cui un bilanciatore del carico di rete passthrough esterno basato su pool di destinazione distribuisce le nuove connessioni dipende dalla configurazione dell'affinità sessione.

Affinità sessione

L'affinità sessione controlla il metodo di hashing utilizzato per distribuire nuove connessioni dai client alle VM di backend del bilanciatore del carico. In base al pool di destinazione i bilanciatori del carico usano il parametro sessionAffinity per configurare affinità sessione.

Per ulteriori informazioni, consulta la sezione Utilizzo del target piscine.

Bilanciamento del carico e pacchetti UDP frammentati

Se utilizzi il bilanciamento del carico dei pacchetti UDP, tieni presente quanto segue:

  1. I pacchetti non frammentati vengono gestiti normalmente in tutte le configurazioni.
  2. I pacchetti UDP potrebbero diventare frammentati prima di raggiungere Google Cloud. Le reti intermedie potrebbero attendere l'arrivo di tutti i frammenti prima di inoltrarli causando ritardi o far cadere frammenti. Google Cloud non attendere tutti i frammenti; inoltra ogni frammento non appena arriva.
  3. Poiché i frammenti UDP successivi non contengono la porta di destinazione, i problemi possono verificarsi nelle seguenti situazioni:

    • Se l'affinità sessione dei pool di destinazione è impostata su NONE (a 5 tuple affinità), i frammenti successivi potrebbero essere eliminati perché il bilanciatore del carico non è in grado di calcolare l'hash a 5 tuple.
    • Se è presente più di una regola di forwarding UDP per lo stesso bilanciamento del carico indirizzo IP, i frammenti successivi potrebbero arrivare alla regola di forwarding sbagliata.

Se prevedi pacchetti UDP frammentati, segui questi passaggi:

  • Imposta l'affinità sessione su NONE, CLIENT_IP_PROTO o CLIENT_IP.
    • L'impostazione dell'affinità sessione su NONE indica che il mantenimento dell'affinità è non è obbligatorio. Il bilanciatore del carico utilizza quindi un hash a 5 tuple per selezionare backend per i pacchetti non frammentati, ma hash a 3 tuple per i pacchetti frammentati.
    • Se imposti l'affinità sessione su CLIENT_IP_PROTO o CLIENT_IP, le porte di origine e di destinazione non vengono utilizzate per l'hashing, pertanto viene calcolato lo stesso hash sia per i pacchetti frammentati che non frammentati.
  • Utilizza una sola regola di forwarding UDP per indirizzo IP con bilanciamento del carico. Ciò garantisce che tutti i frammenti arrivino alla stessa regola di forwarding.

Con queste impostazioni, i frammenti UDP dello stesso pacchetto vengono inoltrati alla stessa istanza per il riassemblaggio.

Utilizzo di istanze di destinazione come backend

Se utilizzi target di Compute Engine come backend per il bilanciatore del carico di rete passthrough esterno e prevedi pacchetti UDP frammentati, utilizza una sola regola di forwarding UDP per indirizzo IP con bilanciamento del carico e configura la regola di forwarding per accettare il traffico su tutte le porte 0-65535. Ciò garantisce che tutti i frammenti arrivano alla stessa regola di forwarding anche se non hanno sulla stessa porta di destinazione.

Limitazioni

  • Non puoi utilizzare la console Google Cloud per creare modelli basati su pool di destinazione bilanciatori del carico di rete passthrough esterni. Utilizza invece gcloud o l'API REST.
  • I bilanciatori del carico di rete passthrough esterni non supportano il peering di rete VPC.

Passaggi successivi