Panoramica del bilanciatore del carico delle applicazioni interno

Questo documento introduce i concetti che devi comprendere per configurare dei bilanciatori del carico delle applicazioni interni.

Un bilanciatore del carico delle applicazioni interno di Google Cloud è un bilanciatore del carico di livello 7 basato su proxy che consente di eseguire e scalare i servizi dietro un unico indirizzo IP interno. La il bilanciatore del carico delle applicazioni interno distribuisce il traffico HTTP e HTTPS ai backend ospitati su delle piattaforme Google Cloud come Compute Engine, Google Kubernetes Engine (GKE) e in Cloud Run. Per maggiori dettagli, vedi Casi d'uso.

Modalità di funzionamento

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

  • Bilanciatore del carico delle applicazioni interno tra regioni. Si tratta di un bilanciatore del carico multiregionale viene implementato come servizio gestito sulla base del protocollo open source Envoy proxy. La modalità tra regioni consente di bilanciare il carico del traffico verso i servizi di backend globali distribuiti, compresa la gestione del traffico che ne assicura la indirizzamento il backend più vicino. Questo bilanciatore del carico consente anche l'alta disponibilità. Il posizionamento dei backend in più regioni consente di evitare errori in un in una singola regione. Se i backend di una regione non sono attivi, può verificarsi il failover del traffico verso in un'altra regione.
  • Bilanciatore del carico delle applicazioni interno regionale. Si tratta di un bilanciatore del carico a livello di regione, implementato come servizio gestito sulla base del protocollo open source Envoy proxy. La modalità a livello di regione garantisce che tutti i client e i backend provengano da una regione specificata, il che è utile è necessaria la conformità regionale. Questo bilanciatore del carico è abilitato con funzionalità avanzate di controllo del traffico basate su parametri HTTP(S). Al termine della configurazione, il bilanciatore del carico alloca automaticamente Proxy Envoy per soddisfare le tue esigenze di traffico.

    La seguente tabella descrive le differenze importanti tra regioni e tra regioni:

    Funzionalità Bilanciatore del carico delle applicazioni interno tra regioni Bilanciatore del carico delle applicazioni interno regionale
    Indirizzo IP virtuale (VIP) del bilanciatore del carico. Assegnato da una subnet in una regione Google Cloud specifica.

    Gli indirizzi VIP di più regioni possono condividere lo stesso backend globale completamente gestito di Google Cloud. Puoi configurare il bilanciamento del carico globale basato su DNS utilizzando Criteri di routing del DNS per instradare le richieste client al VIP più vicino .

    Assegnato da una subnet in una regione Google Cloud specifica.
    Accesso client Sempre accessibile a livello globale. Client da qualsiasi regione Google Cloud in un VPC può inviare traffico al bilanciatore del carico. Non accessibile a livello globale per impostazione predefinita.
    Se vuoi, puoi abilitare l'accesso globale.
    Backend con bilanciamento del carico Backend globali.
    Il bilanciatore del carico può inviare traffico ai backend in qualsiasi regione.
    Backend regionali.
    Il bilanciatore del carico può inviare traffico solo ai backend che si trovano nella stessa regione del proxy del bilanciatore del carico.
    Disponibilità elevata e failover Failover automatico su backend integri nella stessa regione o in regioni diverse. Failover automatico su backend integri nella stessa regione.

Identifica la modalità

console Cloud

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

    Vai a Bilanciamento del carico

  2. Nella scheda Bilanciatori del carico puoi vedere il tipo di bilanciatore del carico, il protocollo e la regione. Se la regione è vuota, il bilanciatore del carico è in modalità interregionale. La tabella seguente riassume come identificare la modalità del bilanciatore del carico.

    Modalità bilanciatore del carico Tipo di bilanciatore del carico Tipo di accesso Regione
    Bilanciatore del carico delle applicazioni interno regionale Applicazione Interno Specifica una regione
    Bilanciatore del carico delle applicazioni interno tra regioni Applicazione Interno

gcloud

  1. Per determinare la modalità di un bilanciatore del carico, esegui questo comando:

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME
    

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

    >Modalità bilanciatore del carico Schema di bilanciamento del carico Regola di forwarding
    Bilanciatore del carico delle applicazioni interno tra regioni INTERNAL_MANAGED Globale
    Bilanciatore del carico delle applicazioni interno regionale INTERNAL_MANAGED Regionale

Architettura e risorse

Il seguente diagramma mostra le risorse Google Cloud necessarie per bilanciatori del carico delle applicazioni interni in ciascuna modalità:

Tra regioni

Questo diagramma mostra i componenti di un bilanciatore del carico delle applicazioni interno tra regioni il deployment nel livello Premium rete VPC. Ogni regola di forwarding globale utilizza un IP a livello di regione che i client usano per connettersi.

Componenti del bilanciatore del carico delle applicazioni interno tra regioni.
Componenti del bilanciatore del carico delle applicazioni interno tra regioni (fai clic per ingrandire).

Regionale

Questo diagramma mostra i componenti di un bilanciatore del carico delle applicazioni interno regionale il deployment nel livello Premium.

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

Ogni bilanciatore del carico delle applicazioni interno utilizza la seguente configurazione di Google Cloud Google Cloud.

Subnet solo proxy

Nel diagramma precedente, la subnet solo proxy fornisce un insieme di indirizzi IP che Google utilizza per eseguire i proxy Envoy per tuo conto. Devi creare un'istanza una subnet solo proxy in ogni regione di una rete VPC in cui utilizzi dei bilanciatori del carico delle applicazioni interni.

La tabella seguente descrive le differenze tra le subnet solo proxy in modalità regionale e tra regioni:

Modalità bilanciatore del carico Valore del flag --purpose della subnet solo proxy
Bilanciatore del carico delle applicazioni interno tra regioni

GLOBAL_MANAGED_PROXY

I bilanciatori del carico regionali e tra regioni non possono condividere le stesse subnet

Il bilanciatore del carico basato su Envoy tra regioni deve avere un una subnet solo proxy in ogni regione in cui è configurato il bilanciatore del carico. Proxy del bilanciatore del carico tra regioni nella stessa regione e nella stessa condivisione di rete la stessa subnet solo proxy.

Bilanciatore del carico delle applicazioni interno regionale

REGIONAL_MANAGED_PROXY

I bilanciatori del carico regionali e tra regioni non possono condividere le stesse subnet

Tutti i bilanciatori del carico basati su Envoy a livello di regione in una regione La rete VPC condivide la stessa subnet solo proxy

Inoltre:

  • Le subnet solo proxy vengono utilizzate solo per i proxy Envoy, non per i tuoi backend.
  • VM di backend o endpoint di tutti i bilanciatori del carico delle applicazioni interni in una regione e La rete VPC riceve connessioni dalla subnet solo proxy.
  • L'indirizzo IP virtuale di un bilanciatore del carico delle applicazioni interno non si trova nella configurazione una subnet. L'indirizzo IP del bilanciatore del carico è definito dalla sua rete di una regola di forwarding, descritta di seguito.

Regola di forwarding e indirizzo IP

Le regole di forwarding instradano il traffico per indirizzo IP, porta e protocollo a una configurazione di bilanciamento del carico che consiste di un proxy di destinazione e di un servizio di backend.

Specifica degli indirizzi IP. Ogni regola di forwarding fa riferimento a una singola regione Indirizzo IP che puoi utilizzare nei record DNS per la tua applicazione. Puoi prenotare un indirizzo IP statico da utilizzare o consentire a Cloud Load Balancing di assegnare una per te. Ti consigliamo di prenotare un indirizzo IP statico. altrimenti devi aggiornare il tuo record DNS con l'indirizzo IP temporaneo appena assegnato ogni volta che elimini una regola di forwarding e ne crei una nuova.

I client utilizzano l'indirizzo IP e la porta per connettersi a Envoy del bilanciatore del carico proxy: l'indirizzo IP della regola di forwarding è l'indirizzo IP del bilanciatore del carico (talvolta chiamato indirizzo IP virtuale o VIP). Client che si connettono a un carico deve utilizzare HTTP 1.1 o versioni successive. Per l'elenco completo delle protocolli, consulta Funzionalità del bilanciatore del carico.

L'indirizzo IP interno associato alla regola di forwarding può provenire da una nella stessa rete e nella stessa regione dei backend.

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

La seguente tabella mostra le differenze tra le regole di forwarding in modalità regionale e tra regioni:

Modalità bilanciatore del carico Regola di forwarding, indirizzo IP e subnet solo proxy --purpose Routing dal client al frontend del bilanciatore del carico
Bilanciatore del carico delle applicazioni interno tra regioni

Regola di forwarding globale

Indirizzi IP a livello di regione

Schema di bilanciamento del carico:

INTERNAL_MANAGED

Subnet solo proxy --purpose:

GLOBAL_MANAGED_PROXY

Indirizzo IP --purpose:

SHARED_LOADBALANCER_VIP

L'accesso globale è abilitato per impostazione predefinita per consentire ai clienti di qualsiasi regione in un VPC per accedere al bilanciatore del carico. I backend possono trovarsi in più regioni.


Bilanciatore del carico delle applicazioni interno regionale

Regola di forwarding a livello di regione

Indirizzo IP a livello di regione

Schema di bilanciamento del carico:

INTERNAL_MANAGED

Subnet solo proxy --purpose:

REGIONAL_MANAGED_PROXY

Indirizzo IP --purpose:

SHARED_LOADBALANCER_VIP

Puoi abilitare l'accesso globale per autorizzare i clienti di qualsiasi regione in un VPC per accedere al bilanciatore del carico. Anche i backend devono essere nello stesso come bilanciatore del carico.

Regole di forwarding e reti VPC

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

Modalità bilanciatore del carico Associazione di rete VPC
Bilanciatore del carico delle applicazioni interno tra regioni

Bilanciatore del carico delle applicazioni interno regionale

Gli indirizzi IPv4 interni regionali esistono sempre all'interno reti VPC. Quando crei la regola di forwarding, devi specificare la subnet da cui l'IP interno è già in uso. Questa subnet deve trovarsi nella stessa regione una rete VPC in cui una subnet solo proxy è stata è stato creato. Esiste perciò un'associazione di rete implicita.

Proxy di destinazione

Un proxy HTTP(S) di destinazione termina le connessioni HTTP(S) dai client. Il proxy HTTP(S) consulta la mappa degli URL per determinare come instradare il traffico a di backend. Un proxy HTTPS di destinazione utilizza un certificato SSL per autenticarsi al clienti.

Il bilanciatore del carico conserva l'intestazione Host della richiesta client originale. La il bilanciatore del carico aggiunge anche due indirizzi IP all'intestazione X-Forwarded-For:

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

Se la richiesta in entrata non contiene un'intestazione X-Forwarded-For, questi due indirizzi IP sono l'intero valore dell'intestazione. Se la richiesta ha un Intestazione X-Forwarded-For, altre informazioni, ad esempio gli indirizzi IP registrati da proxy sulla strada verso il bilanciatore del carico, vengono conservati prima indirizzi IP esterni. Il bilanciatore del carico non verifica gli indirizzi IP che precedono il gli ultimi due indirizzi IP in questa intestazione.

Se esegui un proxy come server di backend, questo proxy in genere aggiunge ulteriori informazioni nell'intestazione X-Forwarded-For e il software potrebbe dover tenere conto di questo. Le richieste inviate tramite proxy dal bilanciatore del carico provengono da una indirizzo IP nella subnet solo proxy e il tuo proxy nell'istanza di backend potrebbe registrare questo indirizzo oltre all'indirizzo IP dell'istanza di backend.

A seconda del tipo di traffico che la tua applicazione deve gestire, puoi configurare un bilanciatore del carico con un proxy HTTP di destinazione o un proxy HTTPS di destinazione.

La tabella seguente mostra le API proxy di destinazione richieste dagli Application Load Balancer interni in ciascuna modalità:

Proxy di destinazione Bilanciatore del carico delle applicazioni interno tra regioni Bilanciatore del carico delle applicazioni interno regionale
HTTP Globale targetHttpProxies regionTargetHttpProxies
HTTPS Globale targetHttpsProxies regionTargetHttpsProxies

Certificati SSL

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

La tabella seguente specifica il tipo di certificati SSL richiesti da bilanciatori del carico delle applicazioni interni in ciascuna modalità:

Modalità bilanciatore del carico Tipo di certificato SSL
Bilanciatore del carico delle applicazioni interno regionale

Compute Engine certificati SSL a livello di regione

Gestore certificati certificati autogestiti regionali e certificati gestiti da Google.

I seguenti tipi di certificati gestiti da Google sono supportati con Gestore certificati:

I certificati gestiti da Google con autorizzazione del bilanciatore del carico non sono supportati.

Bilanciatore del carico delle applicazioni interno tra regioni

Gestore certificati certificati autogestiti e certificati gestiti da Google.

I seguenti tipi di certificati gestiti da Google sono supportati con Gestore certificati:

I certificati gestiti da Google con autorizzazione del bilanciatore del carico non sono supportati.

I certificati SSL di Compute Engine non sono supportati.

Mappe URL

Il proxy HTTP(S) di destinazione utilizza le mappe URL per effettuare una determinazione del routing in base ad attributi HTTP (come il percorso della richiesta, cookie o intestazioni). In base alla decisione di routing, il proxy inoltra il client richieste a servizi di backend specifici. La mappa URL può specificare ulteriori azioni operazioni come la riscrittura delle intestazioni, l'invio di reindirizzamenti ai client e la configurazione criteri di timeout, tra gli altri.

Nella tabella seguente viene specificato il tipo di mappa URL richiesta da: bilanciatori del carico delle applicazioni interni in ciascuna modalità:

Modalità bilanciatore del carico Tipo di mappa URL
Bilanciatore del carico delle applicazioni interno tra regioni Mappe URL globali
Bilanciatore del carico delle applicazioni interno regionale Mappe di URL delle regioni

Servizio di backend

Un servizio di backend distribuisce le richieste ai backend integri: gruppi di istanze contenenti VM di Compute Engine, Cloud Run o NEG contenenti container GKE.

I servizi di backend supportano i protocolli HTTP, HTTPS o HTTP/2. HTTP/2 è supportato solo su TLS. Non è necessario che client e backend utilizzino lo stesso protocollo di richiesta. Ad esempio, i client possono inviare richieste al bilanciatore del carico tramite HTTP/2 e il bilanciatore del carico può inoltrare queste richieste ai backend utilizzando HTTP/1.1.

La tabella seguente specifica il tipo di servizio di backend richiesto bilanciatori del carico delle applicazioni interni in ciascuna modalità:

Modalità bilanciatore del carico Tipo di servizio di backend
Bilanciatore del carico delle applicazioni interno tra regioni Servizi di backend globali
Bilanciatore del carico delle applicazioni interno regionale BackendService a livello di regione

La tabella seguente specifica le funzionalità di backend supportate da bilanciatori del carico delle applicazioni interni in ciascuna modalità:


Modalità bilanciatore del carico
Backend supportati su un servizio di backend Supporta bucket di backend Supporta Google Cloud Armor Supporta Cloud CDN Supporta IAP Supporta Service Extensions
Gruppi di istanze NEG a livello di zona NEG internet NEG serverless NEG ibridi NEG Private Service Connect
Bilanciatore del carico delle applicazioni interno tra regioni 2
Cloud Run
Bilanciatore del carico delle applicazioni interno regionale 1
Cloud Run

1 Utilizza endpoint di tipo GCE_VM_IP_PORT con GKE: Usa NEG autonomi a livello di zona oppure utilizza Ingress

2 Utilizza endpoint di tipo GCE_VM_IP_PORT con GKE: Usa NEG autonomi a livello di zona

Per ulteriori informazioni, vedi Servizi di backend Panoramica.

Backend e reti VPC

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

  • Ad esempio gruppi di istanze, NEG a livello di zona e NEG di connettività ibrida, tutti i backend deve trovarsi nello stesso progetto e nella stessa regione del servizio di backend. Tuttavia, un bilanciatore del carico può fare riferimento a un backend che utilizza un'interfaccia rete VPC nello stesso progetto del servizio di backend. Connettività tra i bilanciatori del carico rete VPC e rete VPC di backend può essere configurato utilizzando il peering di rete VPC, tunnel, collegamenti VLAN di Cloud Interconnect o un Network Connectivity Center il modello di machine learning.

    Definizione della rete di backend

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

    Requisiti di rete di backend

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

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

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

    • Sia la rete VPC del backend che la rete VPC della regola di forwarding, La rete VPC deve essere VPC spoke sullo stesso Network Connectivity Center . I filtri di importazione ed esportazione devono consentire la comunicazione solo tra proxy nella rete VPC della regola di forwarding e nelle subnet utilizzate dalle istanze di backend o dagli endpoint.

  • Per tutti gli altri tipi di backend, tutti i backend devono trovarsi nella stessa regione e rete VPC.

Backend e interfacce di rete

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

Se utilizzi backend NEG a livello di zona, i pacchetti vengono inviati a qualsiasi interfaccia di rete rappresentato dall'endpoint nel NEG. Gli endpoint NEG devono essere nello stesso rete VPC come VPC definito esplicitamente dal NEG in ogni rete.

Creazione secondaria di backend

L'impostazione secondaria del backend è una funzionalità facoltativa supportata dall'Application Load Balancer interno regionale che migliora le prestazioni e la scalabilità assegnando un sottoinsieme di backend ciascuna delle istanze proxy.

Per impostazione predefinita, l'impostazione secondaria dei backend è disabilitata. Per informazioni sull'abilitazione di questa funzionalità, consulta Impostazione di sottoinsiemi di backend per del carico delle applicazioni interno.

Controlli di integrità

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

Affinché i probe del controllo di integrità abbiano esito positivo, devi creare un'autorizzazione Ingress regola firewall che consente ai probe del controllo di integrità di raggiungere il tuo backend di Compute Engine. In genere, i probe del controllo di integrità provengono dall'integrità centralizzata di Google meccanismo di controllo. Tuttavia, per i NEG ibridi, i controlli di integrità provengono una subnet solo proxy. Per maggiori dettagli, consulta i controlli di integrità di Envoy distribuiti in Panoramica dei NEG ibridi.

Protocollo di controllo di integrità

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

La tabella seguente specifica l'ambito dei controlli di integrità supportati bilanciatori del carico delle applicazioni interni in ciascuna modalità:

Modalità bilanciatore del carico Tipo di controllo di integrità
Bilanciatore del carico delle applicazioni interno tra regioni Global
Bilanciatore del carico delle applicazioni interno regionale A livello di regione

Per ulteriori informazioni sui controlli di integrità, consulta quanto segue:

Regole firewall

Un bilanciatore del carico delle applicazioni interno richiede le seguenti regole firewall:

Esistono alcune eccezioni ai requisiti delle regole firewall per questi intervalli:

  • Non è necessario aggiungere gli intervalli di probe del controllo di integrità di Google a una lista consentita per gli ambienti ibridi NEG. Tuttavia, se utilizzi una combinazione di NEG ibridi e a livello di zona un unico servizio di backend, devi aggiungere la classe Google intervalli di probe del controllo di integrità a una lista consentita per i NEG a livello di zona.
  • Per i NEG internet a livello di regione, i controlli di integrità sono facoltativi. Traffico proveniente dal caricamento I bilanciatori che utilizzano NEG internet regionali provengono dalla subnet solo proxy e poi Tradotto da NAT (utilizzando Cloud NAT) in manuale o allocato automaticamente e gli indirizzi IP NAT. Questo traffico include sia probe del controllo di integrità che dal bilanciatore del carico ai backend. Per maggiori dettagli, consulta la sezione A livello di regione NEG: utilizza Cloud NAT per il traffico in uscita.

Accesso client

I client possono trovarsi nella stessa rete o in una rete VPC utilizzando il peering di rete VPC.

Per i bilanciatori del carico delle applicazioni interni tra regioni, l'accesso globale è abilitato per impostazione predefinita. Clienti di qualsiasi regione di un VPC può accedere al bilanciatore del carico.

Per i bilanciatori del carico delle applicazioni interni regionali, i client devono trovarsi per impostazione predefinita nella stessa regione del bilanciatore del carico. Puoi abilitare l'accesso globale per consentire ai client di qualsiasi regione in un VPC di accedere al tuo bilanciatore del carico.

La tabella seguente riassume l'accesso client per gli Application Load Balancer interni regionali:

Accesso globale disabilitato Accesso globale abilitato
I client devono trovarsi nella stessa regione del bilanciatore del carico. Devono inoltre trovarsi nella stessa rete VPC del bilanciatore del carico o in una rete VPC connessa al bilanciatore del carico, tramite peering di rete VPC. I clienti possono trovarsi in qualsiasi regione. Devono essere comunque nello stesso modo rete VPC come bilanciatore del carico o in una Rete VPC connessa al carico utilizzando il peering di rete VPC per la rete VPC del bilanciatore.
I client on-premise possono accedere al bilanciatore del carico tramite Cloud VPN tunnel o collegamenti VLAN. Questi tunnel i collegamenti devono trovarsi nella stessa regione del bilanciatore del carico. I client on-premise possono accedere al bilanciatore del carico tramite Cloud VPN tunnel o collegamenti VLAN. Questi tunnel o collegamenti possono essere in qualsiasi regione.

Architetture VPC condiviso

I bilanciatori del carico delle applicazioni interni supportano le reti che utilizzano il VPC condiviso. Un VPC condiviso consente alle organizzazioni di connettere risorse di più progetti a una rete VPC comune, in modo che possano comunicare le altre in modo sicuro ed efficiente utilizzando IP interni di quella rete. Se non hai già familiarità con il VPC condiviso, leggi l'articolo sul VPC condiviso panoramica.

Esistono molti modi per configurare un bilanciatore del carico delle applicazioni interno all'interno di una Rete VPC condiviso. Indipendentemente dal tipo di deployment, del bilanciatore del carico devono trovarsi nella stessa organizzazione.

Subnet e indirizzo IP Componenti del frontend Componenti di backend

Crea la rete e le subnet richieste (inclusa la rete subnet), nel progetto host del VPC condiviso.

L'interfaccia del bilanciatore un indirizzo IP interno può essere definito nel progetto host o ma deve utilizzare una subnet nell'interfaccia Rete VPC condiviso nel progetto host. L'indirizzo stesso arriva dall'intervallo IP principale della subnet di riferimento.

L'indirizzo IP interno a livello di regione, la regola di forwarding, il proxy HTTP(S) di destinazione e la mappa URL associata deve essere definita nello stesso progetto. Questo progetto può essere il progetto host o un progetto di servizio. Puoi procedere in uno dei seguenti modi:
  • Creare servizi e backend (gruppi di istanze, NEG serverless o qualsiasi altro tipo di backend supportato) stesso progetto di servizio come componenti frontend.
  • Creare servizi e backend (gruppi di istanze, NEG serverless o qualsiasi altro tipo di backend supportato) nel maggior numero possibile a progetti di servizio come richiesto. Una singola mappa URL può fare riferimento a servizi di backend tra progetti diversi. Questo tipo di è noto come servizio tra progetti fare riferimento.

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

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

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

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

Il bilanciatore del carico utilizza gli indirizzi IP e le subnet del progetto host. Clienti possono accedere a un bilanciatore del carico delle applicazioni interno se si trovano nella stessa Regione e rete VPC condiviso come bilanciatore del carico. I clienti possono essere che si trovano nel progetto host, in un progetto di servizio collegato oppure connesso reti.

Bilanciatore del carico delle applicazioni interno su rete VPC condiviso
Bilanciatore del carico delle applicazioni interno su VPC condiviso condivisa

Backend serverless in un ambiente VPC condiviso**

Per un bilanciatore del carico delle applicazioni interno che utilizza un backend NEG serverless, Il servizio Cloud Run deve trovarsi nello stesso progetto di servizio della il servizio di backend e il NEG serverless. Il frontend del bilanciatore del carico (regola di forwarding, proxy di destinazione, mappa URL) possono essere creati nel progetto host, lo stesso progetto di servizio dei componenti di backend o qualsiasi altro nello stesso ambiente VPC condiviso.

Riferimento ai servizi tra progetti

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

Il riferimento ai servizi tra progetti consente alle organizzazioni di configurare bilanciatore del carico e instradare il traffico a centinaia di servizi distribuiti più progetti diversi. Puoi gestire centralmente tutte le regole di routing del traffico e criteri in un'unica mappa URL. Puoi anche associare il bilanciatore del carico a un un singolo insieme di nomi host e certificati SSL. Puoi quindi ottimizzare di bilanciatori del carico necessari per il deployment dell'applicazione e ridurre gestibilità, costi operativi e requisiti di quota.

Avendo diversi progetti per ogni team funzionale, puoi anche ottenere una separazione dei ruoli all'interno dell'organizzazione. I proprietari dei servizi possono concentrarsi sulla creazione di servizi nei progetti di servizio, mentre i team di rete possono mantenere bilanciatori del carico in un altro progetto ed entrambi possono essere connessi utilizzando i riferimenti ai servizi tra progetti.

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

Per scoprire come configurare un VPC condiviso per un bilanciatore del carico delle applicazioni interno con senza fare riferimento al servizio tra progetti, vedi Configurare un bilanciatore del carico delle applicazioni interno con VPC condiviso.

Limitazioni note con i riferimenti ai servizi tra progetti

  • Non puoi fare riferimento a un servizio di backend tra progetti se il backend ha backend NEG internet a livello di regione. Tutti gli altri tipi di backend supportati.
  • Google Cloud non fa distinzione tra le risorse (ad esempio, di backend) utilizzando lo stesso nome in più progetti. Pertanto, quando utilizzi i riferimenti ai servizi multiprogetto, ti consigliamo utilizza nomi univoci per servizio di backend nei vari progetti dell'organizzazione.

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

Ecco un esempio di deployment in cui frontend e URL del bilanciatore del carico vengono create nel progetto di servizio A e la mappa degli URL fa riferimento a un backend nel progetto di servizio B.

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

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

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

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

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

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

Timeout e nuovi tentativi

I bilanciatori del carico delle applicazioni interni supportano i seguenti tipi di timeout:

Tipo di timeout e descrizione Valori predefiniti Supporta valori personalizzati
Timeout del servizio di backend

Un timeout per richiesta e risposta. Rappresenta la quantità di tempo massima che possono trascorrere da quando il bilanciatore del carico invia il primo byte Richiesta HTTP al tuo backend per indicare il momento in cui quest'ultimo restituisce l'ultimo byte. della risposta HTTP. Se l'intera risposta HTTP non è stata restituita al bilanciatore del carico entro il timeout della richiesta o della risposta, i restanti i dati delle risposte vengono eliminati.

  • Per i NEG serverless su un servizio di backend: 60 minuti
  • Per tutti gli altri tipi di backend su un servizio di backend: 30 secondi
Timeout keepalive HTTP del client
La quantità di tempo massima che la connessione TCP tra un client e il proxy Envoy gestito del bilanciatore del carico può essere inattivo. (lo stesso TCP può essere utilizzata per più richieste HTTP.)
10 minuti (600 secondi)
Timeout keepalive HTTP di backend
La quantità di tempo massima che la connessione TCP tra il carico il proxy Envoy gestito del bilanciatore e un backend potrebbero essere inattivi. (lo stesso TCP può essere utilizzata per più richieste HTTP.)
10 minuti (600 secondi)

Timeout del servizio di backend

Il timeout del servizio di backend configurabile rappresenta la quantità massima di Tempo di attesa del bilanciatore del carico prima che il backend elabori una richiesta HTTP restituiscono la risposta HTTP corrispondente. Fatta eccezione per i NEG serverless, il valore predefinito il valore di timeout del servizio di backend è 30 secondi.

Ad esempio, se vuoi scaricare un file da 500 MB e il valore del backend il timeout del servizio è di 90 secondi, il bilanciatore del carico si aspetta che il backend l'intero file da 500 MB in 90 secondi. È possibile configurare il timeout del servizio di backend non è sufficiente per consentire al backend di inviare il messaggio completo Risposta HTTP. In questo caso, se il bilanciatore del carico ha ricevuto almeno come intestazioni della risposta HTTP dal backend, il bilanciatore del carico restituisce delle intestazioni della risposta e tutto il corpo della risposta che potrebbe ottenere all'interno dal timeout del servizio di backend.

Devi impostare il timeout del servizio di backend sul periodo di tempo massimo in cui che ti serviranno per elaborare una risposta HTTP. Dovresti aumenta il timeout del servizio di backend se il software in esecuzione sul tuo backend richiede più tempo per elaborare una richiesta HTTP e restituire l'intera risposta.

Il timeout del servizio di backend accetta valori compresi tra 1 e 2,147,483,647 secondi; tuttavia, valori più alti non sono opzioni di configurazione pratiche. Google Cloud non garantisce che una connessione TCP sottostante possa e rimarranno aperte per tutta la durata del timeout del servizio di backend. Cliente devono implementare una logica di ripetizione invece di fare affidamento su una connessione TCP essere aperti per lunghi periodi di tempo.

Per le connessioni WebSocket utilizzate con i bilanciatori del carico delle applicazioni interni, WebSocket attivo non seguono il timeout del servizio di backend. Connessioni WebSocket inattive vengono chiusi dopo il timeout del servizio di backend.

Google Cloud riavvia periodicamente o modifica il numero di messaggi Envoy utilizzati attività software. Più lungo è il valore di timeout del servizio di backend, più è probabile è che i riavvii o le sostituzioni delle attività Envoy termineranno le connessioni TCP.

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

Timeout keepalive HTTP del client

Il timeout keepalive HTTP del client rappresenta la quantità di tempo massima che una connessione TCP può essere inattiva tra il client (downstream) e un Envoy proxy. Il valore di timeout keepalive HTTP del client è fisso su 600 secondi.

Un timeout keepalive HTTP viene chiamato anche timeout di inattività TCP.

Il timeout keepalive HTTP del client del bilanciatore del carico deve essere maggiore del valore Timeout keepalive HTTP (TCP inattivo) utilizzato da client o proxy downstream. Se un client downstream ha un timeout keepalive HTTP (TCP inattivo) maggiore di il timeout keepalive HTTP del client del bilanciatore del carico, è possibile che venga che si verifichi. Dal punto di vista di un cliente downstream, un'azienda La connessione TCP può rimanere inattiva per un periodo superiore a quanto consentito dal caricamento con il bilanciatore del carico di rete passthrough esterno regionale. Ciò significa che il client downstream può inviare pacchetti dopo il caricamento considera che la connessione TCP è chiusa. In questo caso, il carico il bilanciatore del carico risponde con un pacchetto di reimpostazione TCP (RST).

Timeout keepalive HTTP di backend

Gli Application Load Balancer interni sono proxy che utilizzano una prima connessione TCP tra (downstream) e un proxy Envoy e una seconda connessione TCP tra il proxy Envoy e i tuoi backend.

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

Il timeout keepalive del backend è fissato a 10 minuti (600 secondi) e non può essere modificata. Il backend del bilanciatore del carico Il timeout keepalive deve essere inferiore al timeout keepalive utilizzato dal software in esecuzione sui tuoi backend. Ciò evita una race condition in cui dei tuoi backend potrebbe chiudere le connessioni TCP con una reimpostazione TCP (RST). Poiché il timeout keepalive del backend per il bilanciatore del carico non è configurabile, devi configurare il software di backend in modo che il suo keepalive HTTP (TCP inattivo) di timeout è superiore a 600 secondi.

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

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

Nuovi tentativi

Per configurare i nuovi tentativi, puoi utilizzare una riprova criterio in la mappa URL. Il numero predefinito di nuovi tentativi (numRetries) è 1. Il valore massimo configurabile di perTryTimeout è 24 ore.

Senza un criterio di ripetizione, le richieste non riuscite senza corpo HTTP (ad esempio, richieste GET) che restituiscono HTTP 502, 503, o 504 risposte vengono riprovate una volta.

Le richieste HTTP POST non vengono tentate di nuovo.

Le richieste ricalcolate generano solo una voce di log per la risposta finale.

Per ulteriori informazioni, vedi Logging e monitoraggio del bilanciatore del carico delle applicazioni interno.

Accesso alle reti connesse

I tuoi clienti possono accedere a un bilanciatore del carico delle applicazioni interno nella tua rete VPC da una rete connessa, utilizzando:

  • Peering di rete VPC
  • Cloud VPN e Cloud Interconnect

Per esempi dettagliati, vedi Bilanciatori del carico delle applicazioni interni e reti.

Failover

Se un backend non è integro, il traffico viene reindirizzato automaticamente a uno stato integro di backend.

Nella tabella seguente viene descritto il comportamento di failover in ciascuna modalità:

Modalità bilanciatore del carico Comportamento di failover Comportamento quando tutti i backend sono in stato non integro
Bilanciatore del carico delle applicazioni interno tra regioni

Failover automatico su backend integri nello stesso o in altre regioni.

Il traffico è distribuito tra backend integri che coprono più regioni in base al della distribuzione del traffico.

Restituisce HTTP 503
Bilanciatore del carico delle applicazioni interno regionale

Failover automatico su backend integri nella stessa regione.

Il proxy Envoy invia il traffico a backend integri in una regione in base a configurato della distribuzione del traffico.

Restituisce HTTP 503

Disponibilità elevata e failover tra regioni

Puoi configurare un bilanciatore del carico delle applicazioni interno tra regioni in più regioni per ottenere quanto segue vantaggi:

  1. In caso di errore del bilanciatore del carico delle applicazioni interno tra regioni in una regione, i criteri di routing del DNS instradare il traffico a un bilanciatore del carico delle applicazioni interno tra regioni in un'altra regione.

    L'esempio di deployment ad alta disponibilità mostra quanto segue:

    • Un bilanciatore del carico delle applicazioni interno tra regioni con indirizzo IP virtuale (VIP) frontend RegionA e RegionB regioni nella tua rete VPC. Il tuo I clienti si trovano nella regione RegionA.
    • Puoi rendere accessibile il bilanciatore del carico utilizzando VIP di frontend da due regioni e usare i criteri di routing DNS per restituire il VIP ottimale clienti. Utilizza i criteri di routing della geolocalizzazione se vuoi che i tuoi clienti utilizzino il VIP geograficamente più vicino.
    • I criteri di routing del DNS possono rilevare se un VIP non risponde durante a livello di regione e restituire il successivo VIP ottimale ai tuoi client, assicurando che l'applicazione rimanga attiva anche durante le interruzioni regionali.
    . Bilanciatore del carico delle applicazioni interno tra regioni con deployment ad alta disponibilità.
    Bilanciatore del carico delle applicazioni interno tra regioni con deployment ad alta disponibilità (fai clic per ingrandire).
  2. Se i backend in una determinata regione non sono attivi, il bilanciatore del carico delle applicazioni interno tra regioni il failover del traffico verso i backend in un'altra regione avviene in modo controllato.

    L'esempio di deployment di failover tra regioni mostra quanto segue:

    • Un bilanciatore del carico delle applicazioni interno tra regioni con un indirizzo VIP frontend in RegionA della tua rete VPC. I tuoi clienti si trovano anche in regione RegionA.
    • Un servizio di backend globale che fa riferimento ai backend in RegionA e RegionB regioni Google Cloud.
    • Quando i backend nella regione RegionA sono inattivi, il traffico esegue il failover nella regione RegionB.
    . Bilanciatore del carico delle applicazioni interno tra regioni con un deployment di failover tra regioni.
    Bilanciatore del carico delle applicazioni interno tra regioni con un deployment di failover tra regioni (fai clic per ingrandire).

Supporto di WebSocket

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

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

Il protocollo WebSocket funziona nel seguente modo:

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

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

L'affinità sessione per WebSocket funziona come per qualsiasi altra richiesta. Per ulteriori informazioni, consulta la sezione Sessione di affinità.

Supporto gRPC

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

  • Sistemi distribuiti a bassa latenza, a elevata scalabilità
  • Sviluppo di client mobili che comunicano con un server cloud
  • Progettare nuovi protocolli che devono essere accurati, efficienti e indipendente dalla lingua
  • Design a più livelli per abilitare estensioni, autenticazione e logging

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

  1. Configurare un bilanciatore del carico HTTPS.
  2. Abilita HTTP/2 come protocollo dal bilanciatore del carico ai backend.

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

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

Devi abilitare TLS sui tuoi backend. Per ulteriori informazioni, consulta l'articolo Crittografia da dal bilanciatore del carico ai backend.

Supporto TLS

Per impostazione predefinita, un proxy di destinazione HTTPS accetta solo TLS 1.0, 1.1, 1.2 e 1.3 quando terminando le richieste SSL del client.

Quando il bilanciatore del carico delle applicazioni interno utilizza HTTPS come protocollo del servizio di backend, può negoziare TLS 1.0, 1.1, 1.2 o 1.3 al backend.

Limitazioni

  • Non c'è alcuna garanzia che una richiesta da un client in una zona della regione viene inviato a un backend che si trova nella stessa zona del client. Affinità sessione non riduce la comunicazione tra zone.

  • I bilanciatori del carico delle applicazioni interni non sono compatibili con: caratteristiche:

  • Un bilanciatore del carico delle applicazioni interno supporta HTTP/2 solo su TLS.

  • I client che si connettono a un bilanciatore del carico delle applicazioni interno devono utilizzare HTTP versione 1.1 o in un secondo momento. HTTP 1.0 non supportato.

  • Google Cloud non ti avvisa se il server solo proxy e la subnet VPC esaurisce gli indirizzi IP.

  • La regola di forwarding interno utilizzata dal bilanciatore del carico delle applicazioni interno deve avere esattamente su una porta.

  • I bilanciatori del carico delle applicazioni interni non supportano Cloud Trace.

  • Quando utilizzi un bilanciatore del carico delle applicazioni interno con in Cloud Run in un ambiente VPC condiviso, reti VPC autonome nei progetti di servizio può inviare traffico a qualsiasi altro servizio Cloud Run con deployment in altri progetti di servizio all'interno dello stesso VPC condiviso completamente gestito di Google Cloud. Questo è un problema noto e questa forma di accesso verrà bloccata in per il futuro.

  • Google Cloud non garantisce che una connessione TCP sottostante possa e rimarranno aperte per tutta la durata del timeout del servizio di backend. I sistemi client devono implementare una logica per i nuovi tentativi invece di affidarsi a un TCP la connessione rimanga aperta per lunghi periodi di tempo.

Passaggi successivi