Nel momento in cui si inizia a progettare una infrastruttura su Microsoft Azure basata sulla classica soluzione IaaS di macchine virtuali è importante pianificare il deployment delle diverse soluzioni che consentono di ottenere una disponibilità elevata del workload presente sulle VM. 

Così come avviene con i Datacenter locali, anche le operazioni di manutenzione pianificata e i potenziali errori hardware devono essere considerati quando si distribuiscono le risorse sul cloud. Una corretta organizzazione delle macchine virtuali diventa quindi essenziale per evitare o cercare di ridurre al minimo i tempi di interruzione del servizio. A tal fine esistono alcune soluzioni disponibili su Microsoft Azure che forniscono, ad esempio, agli amministratori la capacità di raggruppare le risorse al fine di ottimizzare l’esecuzione delle attività di manutenzione.

Azure Availability Set

Quando si distribuiscono nuove macchine virtuali (VM) su Azure, per impostazione predefinita, non sono presenti le informazioni necessarie al fine di identificare le dipendenze tra di loro. Pertanto questo potrebbe portare a un singolo punto di errore (Single Point-of-Failure) nel servizio ospitato a causa di un errore hardware imprevisto o di un’operazione di manutenzione.

Un Azure Availability Set è una funzionalità di raggruppamento logico in grado di garantire che le VM incluse nello stesso gruppo siano isolate l’una dall’altra. I set di disponibilità si basano su due raggruppamenti logici: domini di errore (Fault Domain) e domini di aggiornamento (Update Domain).

Le macchine virtuali incluse nello stesso Fault Domain condividono alimentazione e risorse di rete comuni, in modo simile a un rack in un data center locale. Le VM appartenenti allo stesso gruppo Update Domain possono essere sottoposte a manutenzione sia pianificata che non pianificata, nonché riavvii simultanei. Questa configurazione permette di arrivare allo SLA del 99,95%, rispetto al 99,9% della soluzione tradizionale senza Azure Availability Set.

La Best Practices quando si lavora con gli Availability Set consiste nel creare un set di disponibilità per carico di lavoro, interpretando il carico di lavoro come un insieme di server che lavorano insieme eseguendo lo stesso servizio (ad esempio, Domain Controller Active Directory).

Availability Set Microsoft Azure

 

Availability Set VS Availability Zone: le differenze

A seconda degli SLA richiesti dalle diverse organizzazioni, Azure include diverse opzioni per la creazione e la configurazione di soluzioni ad alta disponibilità. Le Availability Zone sono posizioni fisiche univoche all’interno di una regione di Azure (set di data center). Ogni zona è composta da uno o più data center dotati di risorse di alimentazione, raffreddamento e rete indipendenti tra di loro.

La differenza principale tra le Availability Zone e Availability Set è che le prime proteggono le tue risorse da un potenziale guasto del datacenter, mentre i set di disponibilità offrono solo protezione da guasti hardware all’interno di un data center, aumentando così la copertura SLA dal 99,95% al ​​99,99%.

HA in Microsoft Azure

Azure Fault Domain

I Fault Domain definiscono il gruppo di macchine virtuali che condividono una fonte di alimentazione e uno switch di rete comuni. Ogni Fault Domain contiene alcuni rack e ogni rack contiene la macchina virtuale. Ciascuno di questi domini di errore condivide un alimentatore e uno switch di rete.

Se si verifica un errore all’interno del Fault Domain, tutte le risorse all’interno diventano non disponibili. Si dovrebbe quindi posizionare le VM in modo tale che ogni Fault Domain abbia un server web, un server database e così via, in modo da “ricomporre” logicamente tutti i componenti della soluzione deployata.

Azure Fault Domain

Azure Update Domain

Le macchine virtuali ottengono automaticamente gli Azure Update Domain una volta inseriti all’interno di un set di disponibilità. Tutte le macchine virtuali all’interno di quell’Update Domain verranno riavviate insieme. I domini di aggiornamento vengono utilizzati per l’applicazione di patch alle macchine virtuali. Nel momento X, verrà quindi aggiornato solo un dominio di aggiornamento.

Quanti Update e Fault Domain ci possono essere su Azure?

Nel portale Azure Resource Manager (ARM), è possibile andare a configurare fino a 3 Fault Domain e 5 Update Domain, ma tramite ticket possiamo arrivare fino ai 20  domini di aggiornamento. Le macchine virtuali vengono assegnate in sequenza nei domini di aggiornamento e nei domini di errore.

Elementi importanti da tenere in considerazione sulla disponibilità di VM su Azure:

  • E’ necessario creare la VM all’interno dello stesso Resource Group rispetto all’availability Set
  • Una singola Virtual Machine può essere all’interno di un singolo e specifico availability set.
  • È possibile assegnare macchine virtuali al set di disponibilità solo durante la creazione di VM.
  • Come Best Practices andrebbero creati diversi storage account dove posizionare i dischi delle Vitual Machine.

Microsoft Azure VM

Come creare un Availability Set in Azure

Per configurare un set di disponibilità in Azure, sono necessari due passaggi: la creazione del set di disponibilità e l’assegnazione delle VM.

Per creare un Availability Set dal portale di Azure, una volta eseguito l’accesso al portale Azure, fare clic su Crea una risorsa, cercare Set di disponibilità e fare clic sul pulsante Crea. Una volta ompilati i campi Abbonamento, Gruppo di risorse, Nome e Regione in base alle tue esigenze, sarà possibile specificare il numero dei Fault Domain e relativi Update Domain necessari per questo set di disponibilità.

Creazione Availability Set Azure

Azure gestisce automaticamente la distribuzione delle macchine virtuali tra i domini creati, garantendo sempre la migliore configurazione possibile all’interno di un gruppo. 

Creare una Virtual Machine all’interno di un Availability Set:

Durante la creazione guidata di una VM su Azure sarà possibile inserirla all’interno di un Availability Set esistente, oppure da lì creare un nuovo Set di disponibilità.

AzureVM-availabilitySET