Panoramica della soluzione a freddo 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 a freddo 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 quando l'applicazione è necessaria.

Nota

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

Panoramica della soluzione a freddo passivo

In questo approccio sono disponibili due cluster del servizio Azure Kubernetes indipendenti distribuiti in due aree di Azure. Quando l'applicazione è necessaria, il cluster passivo viene attivato per ricevere traffico. Se il cluster passivo diventa inattivo, è necessario attivare manualmente il cluster a freddo per assumere il flusso del traffico. È possibile impostare questa condizione tramite un input manuale ogni volta o per specificare un determinato evento.

Scenari e configurazioni

Questa soluzione viene implementata al meglio come carico di lavoro "da usare in base alle esigenze", utile per gli scenari che richiedono l'esecuzione dei carichi di lavoro in orari specifici del giorno o eseguiti su richiesta. I casi d'uso di esempio per un approccio a freddo passivo includono:

  • Un’azienda di produzione che deve eseguire una simulazione complessa e a elevato utilizzo di risorse in un set di dati di grandi dimensioni. In questo caso, il cluster passivo si trova in un'area cloud che offre servizi di elaborazione e archiviazione ad alte prestazioni. Il cluster passivo viene usato solo quando la simulazione viene attivata dall'utente o da una pianificazione. Se il cluster non funziona al momento dell'attivazione, il cluster a freddo può essere usato come backup e il carico di lavoro può essere eseguito su di esso.
  • Un'agenzia governativa che deve mantenere un backup dei sistemi e dei dati critici in caso di attacchi informatici o calamità naturali. In questo caso, il cluster passivo si trova in una posizione sicura e isolata che non è accessibile al pubblico.

Componenti

La soluzione di ripristino di emergenza a freddo 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. Quando l'app è necessaria, il cluster passivo viene attivato per ricevere il traffico di rete.

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.

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.

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 il cluster passivo non funziona correttamente a causa di un problema nella specifica area di Azure, è possibile attivare il cluster a freddo e reindirizzare tutto il traffico all'area del cluster. È possibile usare questo processo mentre il cluster passivo viene disattivato fino a quando non inizia a funzionare di nuovo. Il cluster a freddo può richiedere alcuni minuti per essere online, perché è stato disattivato e deve completare il processo di installazione. Questo approccio non è ideale per le applicazioni sensibili al tempo. In tal caso, è consigliabile prendere in considerazione un failover attivo-attivo.

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: