Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si crea un'applicazione nel servizio Azure Kubernetes e si sceglie un'area di Azure durante la creazione di risorse, si tratta di un'app a singola area. In caso di un’emergenza che causa l'indisponibilità dell'area, anche l'applicazione diventa non disponibile. Se si crea una distribuzione identica in un'area di Azure secondaria, l'applicazione diventa meno soggetta a un'emergenza a singola area, che garantisce la continuità aziendale e qualsiasi replica dei dati tra le aree consente di ripristinare l'ultimo stato dell'applicazione.
Anche se esistono più modelli che possono fornire recuperabilità per una soluzione del servizio Azure Kubernetes, questa guida descrive la soluzione di disponibilità elevata attiva consigliata per il servizio Azure Kubernetes. In questa soluzione, distribuiamo due cluster AKS indipendenti e identici in due aree geografiche di Azure associate, mentre entrambi i cluster gestiscono attivamente il traffico.
Nota
Il caso d'uso seguente può essere considerato una pratica standard all'interno del servizio Azure Kubernetes. È stata esaminata internamente e verificata insieme ai partner Microsoft.
Panoramica della soluzione di disponibilità elevata attiva
Questa soluzione si basa su due cluster del servizio Azure Kubernetes identici configurati per gestire attivamente il traffico. Si inserisce un gestore traffico globale, ad esempio Frontdoor di Azure, davanti ai due cluster per distribuire il traffico tra di essi. È necessario configurare in modo coerente i cluster per ospitare un'istanza di tutte le applicazioni necessarie per il funzionamento della soluzione.
Le zone di disponibilità sono un altro modo per garantire disponibilità elevata e tolleranza di errore per il cluster del servizio Azure Kubernetes nella stessa area. Le zone di disponibilità consentono di distribuire i nodi del cluster in più posizioni isolate all'interno di un'area di Azure. In questo modo, se una zona diventa indisponibile a causa di un'interruzione di corrente, di un guasto hardware o di un problema di rete, il cluster può continuare a funzionare e a supportare le tue applicazioni. Le zone di disponibilità migliorano anche le prestazioni e la scalabilità del cluster, riducendo la latenza e la contesa tra i nodi. Per configurare le zone di disponibilità per il cluster del servizio Azure Kubernetes, è necessario specificare i numeri di zona durante la creazione o l'aggiornamento dei pool di nodi. Per altre informazioni, vedere Informazioni sulle zone di disponibilità di Azure.
Nota
Molte aree supportano le zone di disponibilità. Prendere in considerazione l'uso di aree con zone di disponibilità per offrire maggiore resilienza e disponibilità per i carichi di lavoro. Per altre informazioni, vedere Eseguire il ripristino dopo un'interruzione di servizio a livello di area.
Scenari e configurazioni
Questa soluzione viene implementata al meglio quando si ospitano applicazioni senza stato e/o con altre tecnologie distribuite anche in entrambe le aree, ad esempio il ridimensionamento orizzontale. Negli scenari in cui l'applicazione host dipende da risorse, ad esempio i database, che si trovano attivamente in una sola area, è consigliabile implementare invece una soluzione attiva-passiva per un potenziale risparmio sui costi, in quanto il tempo di inattività attivo-passivo ha più tempo di inattività rispetto all'attivo.
Componenti
La soluzione di disponibilità elevata attiva usa molti servizi di Azure. Questa sezione illustra solo i componenti univoci di questa architettura multi-cluster. Per altre informazioni sui componenti rimanenti, consulta l'architettura di base di AKS.
Più cluster e regioni: si distribuiscono più cluster AKS, ognuno in una regione di Azure distinta. Durante le normali operazioni, la configurazione di Frontdoor di Azure instrada il traffico di rete tra tutte le aree. Se un'area non è più disponibile, il traffico viene instradato all'area con il tempo di caricamento più rapido per l'utente.
Rete hub-spoke per regione: per ogni istanza regionale di AKS viene implementata una coppia di reti hub-spoke regionali. I criteri di Gestione firewall di Azure gestiscono i criteri firewall in tutte le aree.
Archivio chiavi a livello di area: si effettua il provisioning di Azure Key Vault in ogni area per archiviare i valori sensibili e le chiavi specifiche dell'istanza del servizio Azure Kubernetes e per supportare i servizi presenti in tale area.
Frontdoor di Azure: Frontdoor di Azure bilancia il carico e instrada il traffico a un'istanza regionale di gateway applicazione di Azure, posta davanti a ogni cluster AKS. Frontdoor di Azure consente il routing globale di livello sette.
Log Analytics: le istanze di Log Analytics a livello di area archiviano le metriche di rete a livello di area e i log di diagnostica. Un'istanza condivisa archivia le metriche e i log di diagnostica per tutte le istanze del servizio Azure Kubernetes.
Registro contenitori: le immagini del contenitore per il carico di lavoro vengono archiviate in un registro contenitori gestito. Con questa soluzione viene usata una singola istanza di Registro Azure Container per tutte le istanze di Kubernetes nel cluster. La replica geografica per Registro Azure Container consente di replicare le immagini nelle aree di Azure selezionate e di accedere in modo continuativo alle immagini anche in caso di interruzione di un'area.
Processo di failover
Se un servizio o un componente del servizio non è più disponibile in un'area, il traffico deve essere indirizzato a un'area in cui il servizio è disponibile. Un'architettura in più aree include molti punti di errore diversi. In questa sezione vengono illustrati i potenziali punti di errore.
Pod dell'applicazione (regionali)
Un oggetto di distribuzione Kubernetes crea più repliche di un pod (ReplicaSet). Se un pod non è disponibile, il traffico viene instradato tra le repliche rimanenti. Il ReplicaSet Kubernetes tenta di mantenere operativo il numero specificato di repliche. Se un'istanza diventa inattiva, è necessario ricreare una nuova istanza. Le sonde di vitalità possono verificare lo stato dell'applicazione o del processo in esecuzione nel pod. Se il pod non risponde, la probe di liveness rimuove il pod, costringendo il ReplicaSet a creare una nuova istanza.
Per altre informazioni, vedere Kubernetes ReplicaSet.
Pod applicativi (globali)
Quando un'intera area non è più disponibile, i pod nel cluster non sono più disponibili per la gestione delle richieste. In questo caso, l'istanza di Frontdoor di Azure instrada tutto il traffico alle aree di integrità rimanenti. I cluster e i pod Kubernetes in queste aree continuano a gestire le richieste. Per compensare l'aumento del traffico e delle richieste verso il cluster rimanente, tenere presente le indicazioni seguenti:
- Assicurarsi che le risorse di rete e di calcolo siano ridimensionate correttamente per assorbire qualsiasi aumento improvviso del traffico a causa del failover dell'area. Ad esempio, quando si utilizza Azure Container Network Interface (CNI), assicurarsi di disporre di una subnet in grado di supportare tutti gli indirizzi IP dei pod anche in caso di picchi di traffico.
- Utilizzare il Horizontal Pod Autoscaler per aumentare il numero di repliche dei pod e compensare l'aumento della domanda regionale.
- Usa il Cluster Autoscaler di AKS per aumentare il numero di nodi Kubernetes e compensare l'aumento della domanda a livello regionale.
Pool di nodi Kubernetes (regionale)
In alcuni casi, l'errore localizzato può verificarsi per le risorse di calcolo, ad esempio l'alimentazione non disponibile in un singolo rack di server di Azure. Per evitare che i nodi AKS in questa soluzione attiva-attiva diventino un singolo punto di errore regionale, usa Azure zone di disponibilità. Le zone di disponibilità assicurano che i nodi del servizio Azure Kubernetes in ogni zona di disponibilità siano fisicamente separati da quelli definiti in un'altra zona di disponibilità.
Pool di nodi Kubernetes (globale)
In caso di guasto regionale completo, Frontdoor di Azure instrada il traffico alle restanti aree operative. Anche in questo caso, assicurarsi di far fronte all'aumento del traffico e delle richieste verso il cluster restante.
Strategia di test di failover
Sebbene attualmente non esistano meccanismi in AKS per rendere indisponibile un'intera area di distribuzione a scopo di test, è possibile usare Azure Chaos Studio Workspaces per simulare un'interruzione di una zona di disponibilità per i pool di nodi del cluster.
Passaggi successivi
Se si sta valutando una soluzione diversa, vedere gli articoli seguenti: