Gestisci il traffico e il carico per i tuoi carichi di lavoro in Google Cloud

Last reviewed 2024-11-20 UTC

Quando esegui uno stack di applicazioni su risorse distribuite nel cloud, il traffico di rete deve essere instradato in modo efficiente alle risorse disponibili in più località. Questa parte della Google Cloud guida all'affidabilità dell'infrastruttura descrive le tecniche di gestione del traffico e del carico che puoi utilizzare per migliorare l'affidabilità dei tuoi carichi di lavoro cloud.

Pianificazione della capacità

Per assicurarti che l'applicazione di cui è stato eseguito il deployment in Google Cloud disponga di risorse infrastrutturali adeguate, devi stimare la capacità necessaria e gestire la capacità di cui è stato eseguito il deployment. Questa sezione fornisce linee guida per aiutarti a pianificare e gestire la capacità.

Prevedere il carico dell'applicazione

Quando prevedi il carico, considera fattori come il numero di utenti e la velocità con cui l'applicazione potrebbe ricevere richieste. Nelle previsioni, considera le tendenze storiche del carico, le variazioni stagionali, i picchi di carico durante eventi speciali e la crescita determinata da cambiamenti aziendali come l'espansione in nuove aree geografiche.

Stima dei requisiti di capacità

In base all'architettura di deployment e considerando gli obiettivi di rendimento e affidabilità della tua applicazione, stima la quantità di risorseGoogle Cloud necessarie per gestire il carico previsto. Ad esempio, se prevedi di utilizzare i gruppi di istanze gestite (MIG) di Compute Engine, decidi le dimensioni di ogni MIG, il tipo di macchina VM e il numero, il tipo e le dimensioni dei dischi permanenti. Puoi utilizzare il Calcolatore prezzi diGoogle Cloud per stimare il costo delle risorse Google Cloud .

Pianifica una ridondanza adeguata

Quando stimi i requisiti di capacità, fornisci una ridondanza adeguata per ogni componente dello stack dell'applicazione. Ad esempio, per ottenere la ridondanza N+1, ogni componente dello stack di applicazioni deve avere almeno un componente ridondante oltre al minimo necessario per gestire il carico di previsione.

Esegui il benchmark dell'applicazione

Esegui test di carico per determinare l'efficienza delle risorse della tua applicazione. L'efficienza delle risorse è la relazione tra il carico sull'applicazione e le risorse come CPU e memoria che l'applicazione consuma. L'efficienza delle risorse di un'applicazione può peggiorare quando il carico è eccezionalmente elevato e l'efficienza potrebbe cambiare nel tempo. Esegui i test di carico per condizioni di carico normali e di picco e ripeti i test di benchmarking a intervalli regolari.

Gestisci quote

LeGoogle Cloud quote di servizio sono limiti per progetto che ti aiutano a controllare il consumo di risorse cloud. Le quote sono di due tipi: le quote delle risorse sono le risorse massime che puoi creare, ad esempio il numero di cluster Google Kubernetes Engine (GKE) regionali in una regione. Le quote di frequenza limitano il numero di richieste API che possono essere inviate a un servizio in un periodo specifico. Le quote possono essere a livello di zona, regione o globale. Esamina le quote di risorse e le quote di frequenza delle API correnti per i servizi che prevedi di utilizzare nei tuoi progetti. Assicurati che le quote siano sufficienti per la capacità di cui hai bisogno. Se necessario, puoi richiedere un valore di quota più elevato.

Prenota la capacità di calcolo

Per assicurarti che la capacità per le risorse Compute Engine sia disponibile quando necessario, puoi creare prenotazioni. Una prenotazione fornisce capacità garantita in una zona specifica per un numero specificato di VM di un tipo di macchina che scegli. Una prenotazione può essere specifica per un progetto o condivisa tra più progetti. Per saperne di più sulle prenotazioni, consulta Scegliere un tipo di prenotazione.

Monitora l'utilizzo e rivaluta periodicamente i requisiti

Dopo aver implementato le risorse richieste, monitora l'utilizzo della capacità. Potresti trovare opportunità per ottimizzare i costi rimuovendo le risorse inattive. Rivaluta periodicamente i requisiti di capacità e considera eventuali modifiche al comportamento, alle prestazioni e agli obiettivi di affidabilità dell'applicazione, al carico degli utenti e al tuo budget IT.

Scalabilità automatica

Quando esegui un'applicazione su risorse distribuite in più località, l'applicazione rimane disponibile durante le interruzioni in una delle località. Inoltre, la ridondanza contribuisce a garantire che gli utenti sperimentino un comportamento coerente dell'applicazione. Ad esempio, quando si verifica un picco di carico, le risorse ridondanti garantiscono che l'applicazione continui a funzionare a un livello prevedibile. Tuttavia, quando il carico sull'applicazione è basso, la ridondanza può comportare un utilizzo inefficiente delle risorse cloud.

Ad esempio, il componente del carrello degli acquisti di un'applicazione di e-commerce potrebbe dover elaborare i pagamenti per il 99,9% degli ordini entro 200 millisecondi dalla conferma dell'ordine. Per soddisfare questo requisito durante i periodi di carico elevato, potresti eseguire il provisioning di capacità di calcolo e archiviazione ridondanti. Tuttavia, quando il carico sull'applicazione è basso, una parte della capacità di cui è stato eseguito il provisioning potrebbe rimanere inutilizzata o sottoutilizzata. Per rimuovere le risorse inutilizzate, devi monitorare l'utilizzo e regolare la capacità. La scalabilità automatica ti aiuta a gestire la capacità del cloud e a mantenere il livello di disponibilità richiesto senza l'overhead operativo della gestione delle risorse ridondanti. Quando il carico dell'applicazione aumenta, la scalabilità automatica contribuisce a migliorare la disponibilità dell'applicazione eseguendo il provisioning automatico di risorse aggiuntive. Durante i periodi di carico ridotto, la scalabilità automatica rimuove le risorse inutilizzate e contribuisce a ridurre i costi.

Alcuni servizi Google Cloud , come Compute Engine, ti consentono di configurare la scalabilità automatica per le risorse di cui esegui il provisioning. I servizi gestiti come Cloud Run possono scalare automaticamente la capacità senza che tu debba configurare nulla. Di seguito sono riportati alcuni esempi di Google Cloud servizi che supportano la scalabilità automatica. Questo elenco non è esaustivo.

  • Compute Engine:i gruppi di istanze gestite ti consentono di scalare automaticamente le applicazioni stateless di cui è stato eseguito il deployment sulle VM di Compute Engine in modo che la capacità corrisponda al carico attuale. Per saperne di più, consulta Gruppi di istanze a scalabilità automatica.
  • GKE: puoi configurare i cluster GKE per ridimensionare automaticamente i node pool in modo che corrispondano al carico attuale. Per ulteriori informazioni, consulta la sezione Gestore della scalabilità automatica dei cluster. Per i cluster GKE di cui esegui il provisioning in modalità Autopilot, GKE scala automaticamente i nodi e i carichi di lavoro in base al traffico.
  • Cloud Run: i servizi di cui esegui il provisioning in Cloud Run vengono scalati automaticamente al numero di istanze container necessarie per gestire il carico attuale. Quando l'applicazione non ha carico, il servizio esegue automaticamente lo scale in del numero di istanze container fino a zero. Per saperne di più, consulta Informazioni sulla scalabilità automatica delle istanze container.
  • Funzioni Cloud Run:ogni richiesta a una funzione viene assegnata a un'istanza della funzione. Se il volume di richieste in entrata supera il numero di istanze di funzione esistenti, Cloud Run Functions avvia automaticamente nuove istanze della funzione. Per ulteriori informazioni, consulta Ambiente di esecuzione di Cloud Run Functions.
  • Bigtable:quando crei un cluster in un'istanza Bigtable, puoi configurare il cluster in modo che venga scalato automaticamente. Bigtable monitora il carico di CPU e spazio di archiviazione e regola il numero di nodi nel cluster per mantenere i tassi di utilizzo target specificati. Per saperne di più, consulta la sezione Scalabilità automatica di Bigtable.
  • Dataproc Serverless:quando invii un workload batch Apache Spark, Dataproc Serverless scala dinamicamente le risorse del workload, ad esempio il numero di executor, per eseguire il workload in modo efficiente. Per saperne di più, vedi Scalabilità automatica di Dataproc Serverless per Spark.

Bilanciamento del carico

Il bilanciamento del carico contribuisce a migliorare l'affidabilità dell'applicazione indirizzando il traffico solo alle risorse disponibili e garantendo che le singole risorse non siano sovraccariche.

Quando scegli e configuri i bilanciatori del carico per il deployment cloud, tieni presente i seguenti consigli di progettazione relativi all'affidabilità.

Bilanciare il carico del traffico interno

Configura il bilanciamento del carico anche per il traffico tra i livelli dello stack dell'applicazione, non solo per il traffico tra i client esterni e l'applicazione. Ad esempio, in uno stack di applicazioni web a tre livelli, puoi utilizzare un bilanciatore del carico interno per una comunicazione affidabile tra i livelli web e app.

Scegli un tipo di bilanciatore del carico appropriato

Per bilanciare il carico del traffico esterno verso un'applicazione distribuita in più regioni, puoi utilizzare un bilanciatore del carico globale o più bilanciatori del carico regionali. Per saperne di più, consulta Vantaggi e rischi del bilanciamento del carico globale per i deployment multiregionali.

Se i backend si trovano in una singola regione e non hai bisogno delle funzionalità di bilanciamento del carico globale, puoi utilizzare un bilanciatore del carico regionale, resiliente alle interruzioni di zona.

Quando scegli il tipo di bilanciatore del carico, considera altri fattori oltre alla disponibilità, come il controllo geografico della terminazione TLS, le prestazioni, il costo e il tipo di traffico. Per ulteriori informazioni, vedi Scegliere un bilanciatore del carico.

Configura i controlli di integrità

La scalabilità automatica contribuisce a garantire che le tue applicazioni dispongano di risorse infrastrutturali adeguate per gestire il carico attuale. Tuttavia, anche quando esistono risorse di infrastruttura sufficienti, un'applicazione o parti di essa potrebbero non rispondere. Ad esempio, tutte le VM che ospitano la tua applicazione potrebbero trovarsi nello stato RUNNING. Tuttavia, il software applicativo distribuito su alcune VM potrebbe aver subito un arresto anomalo. I controlli di integrità del bilanciamento del carico assicurano che i bilanciatori del carico instradino il traffico dell'applicazione solo ai backend che rispondono. Se i tuoi backend sono MIG, valuta la possibilità di configurare un livello aggiuntivo di controlli di integrità per la riparazione automatica delle VM non disponibili. Quando la riparazione automatica è configurata per un MIG, le VM non disponibili vengono eliminate in modo proattivo e vengono create nuove VM.

Limitazione di frequenza

A volte, la tua applicazione potrebbe subire un aumento rapido o prolungato del carico. Se l'applicazione non è progettata per gestire il carico maggiore, l'applicazione o le risorse che utilizza potrebbero non funzionare, rendendo l'applicazione non disponibile. L'aumento del carico potrebbe essere causato da richieste dannose, come attacchi distributed denial of service (DDoS) basati sulla rete. Un picco improvviso del carico può verificarsi anche per altri motivi, ad esempio errori di configurazione nel software client. Per assicurarti che la tua applicazione possa gestire un carico eccessivo, valuta la possibilità di applicare meccanismi di limitazione della frequenza adatti. Ad esempio, puoi impostare quote per il numero di richieste API che un servizio Google Cloud può ricevere.

Le tecniche di limitazione della frequenza possono anche contribuire a ottimizzare il costo dell'infrastruttura cloud. Ad esempio, impostando quote a livello di progetto per risorse specifiche, puoi limitare la fatturazione che il progetto può sostenere per queste risorse.

Livello di servizio di rete

Google Cloud I livelli di servizio di rete ti consentono di ottimizzare la connettività tra i sistemi su internet e i tuoi Google Cloud carichi di lavoro. Per le applicazioni che servono utenti a livello globale e hanno backend in più di una regione, scegli il livello Premium. Il traffico da internet entra nella rete Google ad alte prestazioni nel punto di presenza (PoP) più vicino al sistema di invio. All'interno della rete Google, il traffico viene instradato dal PoP di ingresso alla risorsa Google Cloud appropriata, ad esempio una VM di Compute Engine. Il traffico in uscita viene inviato tramite la rete Google, uscendo dal PoP più vicino alla destinazione. Questo metodo di routing contribuisce a migliorare la percezione della disponibilità degli utenti riducendo il numero di hop di rete tra gli utenti e i PoP più vicini.