Panoramica della soluzione di ripristino di emergenza attivo/passivo per il servizio Azure Kubernetes

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. Quando l'area non è più disponibile durante un'emergenza, l'applicazione diventa anche 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.

Questa guida illustra una soluzione di ripristino di emergenza attivo/passivo per il servizio Azure Kubernetes. In questa soluzione vengono distribuiti due cluster del servizio Azure Kubernetes indipendenti e identici in due aree di Azure abbinate con un solo cluster che gestisce attivamente il traffico.

Nota

La procedura seguente è stata esaminata internamente e verificata insieme ai partner Microsoft.

Panoramica della soluzione attiva/passiva

In questo approccio di ripristino di emergenza sono disponibili due cluster del servizio Azure Kubernetes indipendenti distribuiti in due aree di Azure. Tuttavia, solo uno dei cluster gestisce attivamente il traffico in qualsiasi momento. Il cluster secondario (che non gestisce attivamente il traffico) contiene gli stessi dati di configurazione e applicazione del cluster primario, ma non accetta traffico a meno che non venga indirizzato da Gestione traffico di Frontdoor di Azure.

Scenari e configurazioni

Questa soluzione viene implementata al meglio quando si ospitano applicazioni basate su risorse, ad esempio i database, che gestiscono attivamente il traffico in un'area. Negli scenari in cui è necessario ospitare applicazioni senza stato distribuite in entrambe le aree, ad esempio il ridimensionamento orizzontale, è consigliabile prendere in considerazione una soluzione attiva/attiva, perché quella attiva/passiva comporta una latenza aggiuntiva.

Componenti

La soluzione di ripristino di emergenza attivo/passivo usa molti servizi di Azure. Questa architettura di esempio include i componenti seguenti:

Più cluster e aree: si distribuiscono più cluster del servizio Azure Kubernetes, ognuno in un'area di Azure separata. Durante le normali operazioni, il traffico di rete viene instradato al cluster del servizio Azure Kubernetes primario impostato nella configurazione di Frontdoor di Azure.

Assegnazione di priorità del cluster configurata: si imposta un livello di priorità compreso tra 1 e 5 per ogni cluster (dove 1 è la priorità più alta e 5 la priorità più bassa). È possibile impostare più cluster sullo stesso livello di priorità e specificare il peso per ogni cluster. Se il cluster primario non è più disponibile, il traffico viene instradato automaticamente all'area successiva selezionata in Frontdoor di Azure. Tutto il traffico deve passare attraverso Frontdoor di Azure per consentire il funzionamento del sistema.

Frontdoor di Azure: Frontdoor di Azure bilancia il carico e instrada il traffico all'istanza del gateway applicazione di Azure nell’area primaria (il cluster deve essere contrassegnato con priorità 1). In caso di errore dell'area, il servizio reindirizza il traffico al cluster successivo nell'elenco di priorità.

Per altre informazioni, vedere Routing del traffico in base alla priorità.

Coppia hub-spoke: viene distribuita una coppia hub-spoke per ogni istanza del servizio Azure Kubernetes a livello di area. I criteri di Gestione firewall di Azure gestiscono le regole del firewall in ogni area.

Key Vault: si effettua il provisioning di un insieme di credenziali delle chiavi di Azure in ogni area per archiviare segreti e chiavi.

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 applicazione (area)

Un oggetto di distribuzione Kubernetes crea più repliche di un pod (ReplicaSet). Se 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. I probe di attività possono controllare lo stato dell'applicazione o del processo in esecuzione nel pod. Se il pod non risponde, il probe di attività rimuove il pod, che forza il ReplicaSet per creare una nuova istanza.

Per altre informazioni, vedere Kubernetes ReplicaSet.

Pod applicazione (globale)

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 usa l'interfaccia di rete di Azure Container, assicurarsi di avere una subnet in grado di supportare tutti gli indirizzi IP dei pod con un carico di traffico con picchi di traffico.
  • Usare la scalabilità automatica orizzontale dei pod per aumentare il numero di repliche pod per compensare l'aumento della domanda a livello di area.
  • Usare il componente di scalabilità automatica del cluster del servizio Azure Kubernetes per aumentare i conteggi dei nodi dell'istanza di Kubernetes per compensare l'aumento della domanda a livello di area.

Pool di nodi Kubernetes (a livello di area)

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 proteggere i nodi del servizio Azure Kubernetes da un singolo errore a livello di area, usare zone di disponibilità di Azure. Le zone di disponibilità assicurano che i nodi del servizio Azure Kubernetes in ogni zona di disponibilità siano fisicamente separati da quelli definiti in altre zone di disponibilità.

Pool di nodi Kubernetes (globale)

In un errore completo a livello di area, Frontdoor di Azure instrada il traffico alle aree integre rimanenti. Anche in questo caso, assicurarsi di compensare l'aumento del traffico e delle richieste verso il cluster rimanente.

Strategia di test di failover

Sebbene non siano attualmente disponibili meccanismi all'interno del servizio Azure Kubernetes per arrestare un'intera area di distribuzione a scopo di test, Azure Chaos Studio offre la possibilità di creare un esperimento chaos nel cluster.

Passaggi successivi

Se si sta valutando una soluzione diversa, vedere gli articoli seguenti: