Bilanciamento del carico HTTP(S) - Best practice per le prestazioni

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Cloud Load Balancing fornisce meccanismi per distribuire il traffico utenti su più istanze di un'applicazione. A tal fine, il carico viene distribuito tra le istanze dell'applicazione e offre prestazioni ottimali per l'applicazione agli utenti finali. Questa pagina descrive alcune best practice per garantire che il bilanciatore del carico sia ottimizzato per la tua applicazione. Per garantire prestazioni ottimali, ti consigliamo di confrontare i pattern di traffico dell'applicazione.

Posiziona i backend vicino ai client

Quanto più vicini sono gli utenti o le applicazioni client ai carichi di lavoro (backend del bilanciatore del carico), minore sarà la latenza di rete tra loro. Pertanto, crea i backend del bilanciatore del carico nell'area geografica più vicina a dove prevedi che il traffico degli utenti arrivi al Google Front End. In molti casi, l'esecuzione dei tuoi backend in più aree geografiche è necessaria per ridurre al minimo la latenza ai client in diverse parti del mondo.

Per ulteriori informazioni, consulta i seguenti argomenti:

Abilita memorizzazione nella cache con Cloud CDN

Attiva Cloud CDN e la memorizzazione nella cache come parte della configurazione predefinita del bilanciatore del carico HTTP(S) esterno globale. Per ulteriori informazioni, consulta la pagina Cloud CDN.

Quando abiliti Cloud CDN, potrebbero essere necessari alcuni minuti prima che le risposte inizino a essere memorizzate nella cache. Cloud CDN memorizza nella cache solo le risposte con contenuti memorizzabili nella cache. Se le risposte per un URL non vengono memorizzate nella cache, controlla quali intestazioni di risposta vengono restituite per quell'URL e come viene configurata la memorizzazione nella cache per il tuo backend. Per ulteriori dettagli, consulta la risoluzione dei problemi di Cloud CDN.

Selezione del protocollo della regola di forwarding

  • Per il bilanciatore del carico HTTP(S) esterno globale e il bilanciatore del carico HTTP(S) esterno globale (classico), consigliamo HTTP/3, un protocollo Internet basato su QUIC IETF. HTTP/3 è abilitato per impostazione predefinita in tutti i principali browser, Android Cronot e iOS. Per utilizzare HTTP/3 per le tue applicazioni, assicurati che il traffico UDP non sia bloccato o con limitazioni di frequenza sulla rete e che HTTP/3 non sia stato precedentemente disattivato sui bilanciatori del carico HTTP(S) esterni globali. I client che non supportano ancora HTTP/3, ad esempio i browser meno recenti o le librerie di rete, non saranno interessati. Per ulteriori informazioni, consulta la pagina QUIC HTTP/3.

  • Per il bilanciatore del carico HTTP(S) esterno a livello di area geografica, sono supportati HTTP/1.1, HTTPS e HTTP/2. Sia HTTPS sia HTTP/2 richiedono un certo anticipo per configurare TLS.

Selezione del protocollo del servizio di backend

La scelta del protocollo di backend (HTTP, HTTPS o HTTP/2) influisce sulla latenza dell'applicazione e sulla larghezza di banda di rete disponibile per l'applicazione. Ad esempio, l'utilizzo di HTTP/2 tra il bilanciatore del carico e l'istanza di backend può richiedere molti più connessioni TCP all'istanza rispetto a HTTP(S). Il pool di connessioni, un'ottimizzazione che riduce il numero di queste connessioni con HTTP(S), non è al momento disponibile con HTTP/2. Di conseguenza, potresti notare latenza elevate del backend perché le connessioni backend vengono effettuate più spesso.

Il protocollo del servizio di backend influisce anche sul modo in cui il traffico è criptato in transito. Con i bilanciatori del carico HTTP(S) esterni, tutto il traffico diretto ai backend che risiedono all'interno delle reti VPC di Google Cloud viene criptato automaticamente. Questa procedura è chiamata crittografia automatica a livello di rete. Tuttavia, la crittografia automatica a livello di rete è disponibile solo per le comunicazioni con i gruppi di istanze e i backend NEG di zona. Per tutti gli altri tipi di backend, Google Cloud consiglia di utilizzare opzioni di protocollo sicure come HTTPS e HTTP/2 per criptare le comunicazioni con il servizio di backend. Per maggiori dettagli, consulta la pagina relativa alla crittografia dal bilanciatore del carico ai backend.

Le condizioni di rete cambiano e l'insieme di backend può cambiare in base al carico. Per le applicazioni che generano molto traffico verso un singolo servizio, una connessione a lunga esecuzione non è sempre una configurazione ottimale. Invece di utilizzare una singola connessione al backend a tempo indeterminato, ti consigliamo di scegliere una durata massima della connessione (ad esempio tra 10 e 20 minuti) e/o un numero massimo di richieste (ad esempio tra 1000 e 2000 richieste), dopo di che viene utilizzata una nuova connessione per le nuove richieste. La connessione precedente viene chiusa al termine di tutte le richieste attive che la utilizzano.

Ciò consente all'applicazione client di beneficiare di modifiche al set di backend, che includono i proxy del bilanciatore del carico e qualsiasi riottimizzazione della rete necessaria per gestire i client.

Criteri di selezione della modalità di bilanciamento

Per ottenere prestazioni migliori, valuta la possibilità di scegliere il servizio di backend per ogni nuova connessione in base al backend più adattabile. Per ottenere questo risultato, usa la modalità di bilanciamento RATE. In questo caso, viene scelto il servizio di backend con la latenza media più bassa rispetto alle richieste recenti oppure, per HTTP/2 e HTTP/3, viene scelto il servizio di backend con il numero minore di richieste in sospeso.

La modalità di bilanciamento UTILIZATION si applica solo ai backend di gruppi di istanze e distribuisce il traffico in base all'utilizzo delle istanze VM in un gruppo di istanze.

Configura affinità sessione

In alcuni casi, potrebbe essere utile per lo stesso backend gestire le richieste provenienti dagli stessi utenti finali o relative allo stesso utente finale, almeno per un breve periodo di tempo. Può essere configurato utilizzando l'affinità sessione, un'impostazione configurata nel servizio di backend. Affinità sessione controlla la distribuzione delle nuove connessioni dai client ai backend del bilanciatore del carico. Puoi utilizzare l'affinità sessione per assicurarti che lo stesso backend gestisca le richieste provenienti dalla stessa risorsa, ad esempio per lo stesso account utente o dallo stesso documento.

L'affinità sessione viene specificata per l'intera risorsa del servizio di backend e non per i singoli backend. Tuttavia, una mappa URL può puntare a più servizi di backend. Di conseguenza, non è necessario utilizzare un solo tipo di affinità sessione per il bilanciatore del carico. A seconda dell'applicazione, puoi utilizzare servizi di backend diversi con impostazioni di affinità sessione diverse. Ad esempio, se una parte della tua applicazione pubblica contenuti statici per molti utenti, è improbabile che possa trarre vantaggio dall'affinità sessione. Potresti invece usare un servizio di backend abilitato per Cloud CDN per pubblicare risposte memorizzate nella cache.

Per ulteriori informazioni, consulta la pagina relativa all'affinità sessione.