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 hai eseguito il deployment disponga di risorse dell'infrastruttura adeguate, devi stimare la capacità richiesta e gestire la capacità di cui hai eseguito il deployment. Google Cloud Questa sezione fornisce linee guida per aiutarti a pianificare e gestire la capacità.
Previsione del carico dell'applicazione
Quando prevedi il carico, prendi in considerazione fattori come il numero di utenti e la frequenza con cui l'applicazione potrebbe ricevere richieste. Nelle tue previsioni, considera le tendenze storiche del carico, le variazioni stagionali, i picchi di carico durante eventi speciali e la crescita determinata da modifiche aziendali come l'espansione in nuove aree geografiche.
Stima dei requisiti di capacità
In base all'architettura di deployment e tenendo conto degli obiettivi di prestazioni e affidabilità dell'applicazione, stima la quantità di Google Cloud risorse 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 Google Cloud Calcolatore prezzi per stimare il costo delle Google Cloud risorse.
Pianificazione di una ridondanza adeguata
Quando stimi i requisiti di capacità, fornisci una ridondanza adeguata per ogni componente dello stack di applicazioni. Ad esempio, per ottenere una ridondanza N+1, ogni componente dello stack di applicazioni deve avere almeno un componente ridondante oltre al minimo necessario per gestire il carico previsto.
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 variare nel tempo. Esegui i test di carico sia per le condizioni di carico normali sia per quelle di picco e ripeti i test di benchmarking a intervalli regolari.
Gestisci quote
Google Cloud Le 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 di risorse sono le risorse massime che puoi creare, ad esempio il numero di cluster regionali Google Kubernetes Engine (GKE) 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.
Riserva capacità di calcolo
Per assicurarti che la capacità delle 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 eseguito il deployment delle 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 prendi in considerazione eventuali modifiche al comportamento dell'applicazione, agli obiettivi di prestazioni e affidabilità, al carico utente e al 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 assicurano 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 di 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, dovrai monitorare l'utilizzo e regolare la capacità. La scalabilità automatica ti aiuta a gestire la capacità cloud e a mantenere il livello di disponibilità richiesto senza l'overhead operativo della gestione delle risorse ridondanti. Quando il carico sull'applicazione aumenta, la scalabilità automatica contribuisce a migliorare la disponibilità dell'applicazione eseguendo automaticamente il provisioning di risorse aggiuntive. Durante i periodi di carico ridotto, la scalabilità automatica rimuove le risorse inutilizzate e contribuisce a ridurre i costi.
Alcuni Google Cloud servizi, 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 MIG ti consentono di scalare automaticamente le applicazioni stateless di cui hai eseguito il deployment sulle VM di Compute Engine in modo che la capacità corrisponda al carico attuale. Per ulteriori informazioni, consulta Scalabilità automatica dei gruppi di istanze.
- GKE: puoi configurare i cluster GKE in modo che ridimensionino automaticamente i pool di nodi in base al carico attuale. Per ulteriori informazioni, consulta 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 fanno lo scale out automaticamente al numero di istanze container necessarie per gestire il carico attuale. Quando l'applicazione non ha carico, il servizio riduce automaticamente il numero di istanze container a zero. Per ulteriori informazioni, consulta Informazioni sulla scalabilità automatica delle istanze container.
- Cloud Run Functions: ogni richiesta a una funzione viene assegnata a un'istanza della funzione. Se il volume delle richieste in entrata supera il numero di istanze di funzioni 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 le percentuali di utilizzo target che specifichi. Per ulteriori informazioni, consulta Scalabilità automatica di Bigtable.
- Managed Service per Apache Spark: quando invii un carico di lavoro batch Apache Spark, Managed Service per Apache Spark scala dinamicamente le risorse del carico di lavoro, ad esempio il numero di executor, per eseguire il carico di lavoro in modo efficiente. Per ulteriori informazioni, consulta Managed Service per Apache Spark per la scalabilità automatica di Spark.
Bilanciamento del carico
Il bilanciamento del carico contribuisce a migliorare l'affidabilità delle applicazioni instradando il traffico solo alle risorse disponibili e assicurando 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à.
Bilancia il carico del traffico interno
Configura il bilanciamento del carico anche per il traffico tra i livelli dello stack di applicazioni, non solo per il traffico tra i client esterni e l'applicazione. Ad esempio, in uno stack di applicazioni web a 3 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 ulteriori informazioni, 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, che è resiliente alle interruzioni di zona.
Quando scegli il tipo di bilanciatore del carico, prendi in considerazione altri fattori oltre alla disponibilità, come il controllo geografico sulla terminazione TLS, le prestazioni, il costo e il tipo di traffico. Per ulteriori informazioni, consulta Scegliere un bilanciatore del carico.
Configura i controlli di integrità
La scalabilità automatica contribuisce a garantire che le tue applicazioni dispongano di risorse dell'infrastruttura adeguate per gestire il carico attuale. Tuttavia, anche quando esistono risorse dell'infrastruttura sufficienti, un'applicazione o alcune sue parti potrebbero non rispondere. Ad esempio, tutte le VM che ospitano l'applicazione potrebbero essere nello stato RUNNING. Tuttavia, il software dell'applicazione di cui è stato eseguito il deployment su alcune VM potrebbe essere andato in crash.
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 backend sono MIG, valuta la possibilità di configurare un
livello aggiuntivo di controlli di integrità per
riparare automaticamente
le VM non disponibili. Quando il ripristino automatico è configurato per un MIG, le VM non disponibili vengono eliminate in modo proattivo e vengono create nuove VM.
Limitazione di frequenza
A volte, l'applicazione potrebbe subire un aumento rapido o sostenuto del carico. Se l'applicazione non è progettata per gestire l'aumento del carico, l'applicazione o le risorse che utilizza potrebbero non riuscire, 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 improvviso picco di carico può verificarsi anche per altri motivi, ad esempio errori di configurazione nel software client. Per assicurarti che l'applicazione possa gestire un carico eccessivo, valuta la possibilità di applicare meccanismi di limitazione della frequenza appropriati. Ad esempio, puoi impostare quote per il numero di richieste API che un Google Cloud servizio 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 Network Service Tiers 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 appropriata Google Cloud , ad esempio una VM di Compute Engine. Il traffico in uscita viene inviato tramite la rete Google ed esce 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.