Aumentare l’alta affidabilità delle VM in Azure utilizzando le Availability Zones

Tutti sappiamo quanto sia importante che le macchine virtuali che fanno girare il nostro workload siano sempre disponibili e non ci siano disservizi. La migrazione delle VM in Azure ci ha permesso di aumentare di molto il livello di prestazioni e di affidabilità delle VM, ma in alcuni casi è necessario, anche per ottemperare ad alcuni regolamenti, assicurarsi che le VM siano protette da un piano di disaster recovery, come ho già avuto modo di farvi vedere nell’articolo Configurare il disaster recovery delle Azure VM in una regione secondaria di Azure

Azure opera in diverse Region nel mondo. Ogni Region può contenere diversi datacenter ed è sempre gemellata con un’altra Region , distante diverse centinaia di Km, con lo scopo di ottenere ridondanza delle funzionalità e strategie di disaster recovery. Se volete conoscere in che modo sono “gemellate” le diverse Region di Azure potete leggere l’articolo Business continuity and disaster recovery (BCDR): Azure Paired Regions

Figura 1: Principio di funzionamento delle Region di Azure

Nel caso delle macchine virtuali, abbiamo già avuto modo di vedere come sia possibile ospitare i VHD utilizzando i Managed Disks nell’articolo Migrazione dei dischi delle macchine virtuali in Azure a Managed Disks ma in ogni caso è bene considerare che la scelta del tipo di archiviazione dei dischi influisce sulle opzioni di replica tra le diverse Region di Azure ed in particolar modo:

Azure Managed Disks

  • Archiviazione con ridondanza locale (LRS)
    • I dati vengono replicati tre volte all’interno dell’area in cui è stato creato l’account di archiviazione.

Dischi basati su Storage Account

  • Archiviazione con ridondanza locale (LRS)
    • I dati vengono replicati tre volte all’interno dell’area in cui è stato creato l’account di archiviazione.
  • Archiviazione con ridondanza della zona (ZRS)
    • I dati vengono replicati tre volte in due o tre strutture distribuite in un’area sola o in due aree.
  • Archiviazione con ridondanza geografica (GRS)
    • I dati vengono replicati in un’area secondaria a centinaia di chilometri di distanza dall’area primaria.
  • Archiviazione con ridondanza geografica e accesso in lettura (RA-GRS).
    • I dati vengono replicati in un’area secondaria, come con la ridondanza geografica, ma risultano anche accessibili in sola lettura nell’area secondaria.

Ovviamente i prezzi variano a seconda del tipo di archiviazione e della disponibilità selezionata.

Availability Zones

Le Availability Zones, un’alternativa agli Availability Sets delle macchine virtuali, permettono di creare le macchine virtuali in una zona fisicamente separata nella Region di Azure. Esistono tre Availability Zones (zone di disponibilità) per ogni area di Azure e ogni Availability Zone può contare su risorse di alimentazione, rete e raffreddamento autonome. Se le VM vengono create su Availability Zones diverse è possibile proteggere applicazioni e dati anche in caso di perdita di un intero data center. Se una zona è compromessa, le applicazioni e i dati replicati delle nostre VM diventano immediatamente disponibili in un’altra zona.

Figura 2: Availabily Zones nelle Region di Azure

Attualmente la funzionalità di Availability Zone è offerta solo in queste aree:

  • Stati Uniti centrali
  • Francia centrale
  • Stati Uniti orientali 2
  • Europa occidentale
  • Asia sud-orientale

E solo per questi servizi:

  • Macchine virtuali Linux
  • Macchine virtuali Windows
  • Set di scalabilità di macchine virtuali
  • Managed Disks
  • Load Balancer
  • Indirizzo IP pubblico
  • Archiviazione con ridondanza della zona
  • Database SQL
  • Hub eventi
  • Bus di servizio
  • Gateway VPN
  • ExpressRoute

Creazione di una macchina virtuale in una Availability Zone

Per creare una VM in Azure in una Availability Zone è sufficiente collegarsi al portale di Azure e seguire il wizard per la creazione di una nuova macchina virtuale.

Figura 3: Creazione di una nuova VM in Azure

Nel momento in cui vi verrà chiesto quale dimensione volete assegnare alla VM sarà possibile anche verificare se quel tipo di VM è disponibile in più zone. Nella figura sotto ho evidenziato la colonna relativa al numero di zone in cui è disponibile ogni taglio di dimensionamento della macchina virtuale.

Figura 4: Numero di zone in cui è disponibile ogni singola dimensione della VM

Dopo aver scelto la dimensione della VM sarà possibile scegliere se vogliamo utilizzare le Availability Zones. Nel momento in cui sceglierete se utilizzare la funzionalità, dal menù a tendina potrete scegliere in quale zona mettere la VM (zona 1, zona 2 o zona 3).

Figura 5: Spiegazione sulle funzionalità offerte dalla Availability Zone

Se scegliete di utilizzare le Availability Zones allora dovrete necessariamente utilizzare anche i Managed Disks, che verranno creati nella stessa zona dove avete deciso di creare la VM e nel caso vogliate assegnare un indirizzo IP pubblico alla vostra VM questo verrà creato nella stessa zona.

Figura 6: Scelta della Availabilty Zone

Figura 7: Creazione della VM completata

Figura 8: Indirizzo IP pubblico creato nella stessa Availability Zone della VM

Creazione di una macchina virtuale in una Availability Zone utilizzando PowerShell

Creare una VM in una Availability Zone utilizzando comandi PowerShell è molto semplice. Prima di tutto assicuratevi che nella vostra Region siano disponibili le Availability Zones. Per farlo, dopo esservi connessi ad Azure con il comando Connect-AzureRmAccount potete lanciare il comando Get-AzureRmComputeResourceSku where {$_.Locations.Contains(“westeurope”)}

Figura 9: verifica delle Availability Zone nella Region scelta

Una volta effettuata la verifica potete creare una nuova VM. Per creare la VM potete usare il comando PowerShell New-AzureRmVM e nei parametri per la creazione della VM potete indicare lo switch -Zone seguito dal numero della zona.

New-AzureRmVM
-ResourceGroupName "AVZ-RG"

-Name “VM01-AVZ”
-Location "West Europe"

-Size Standard_D4s_v3
-Zone 2

-Image UbuntuLTS
-VirtualNetworkName "AVZ-vnet"

-SubnetName “default”
-SecurityGroupName "AVZ-nsg"

-PublicIpAddressName “VM01-AVZ-ip” `
-OpenPorts 22

Figura 10: Creazione di una VM in una Availability Zone con PowerShell

Figura 11: Creazione della VM completata

Conclusioni

Le Availability Zones offrono una soluzione a disponibilità elevata che consente di proteggere le applicazioni e i dati da eventuali guasti del data center. Le Availability Zones sono località fisiche esclusive all’interno di un’area di Azure ed ogni zona è costituita da uno o più data center dotati di impianti indipendenti per l’alimentazione, il raffreddamento e la connettività di rete. Per garantire la resilienza, sono presenti almeno tre zone separate in tutte le aree abilitate. La separazione fisica delle zone di disponibilità all’interno di un’area consente di proteggere le applicazioni e i dati da eventuali guasti del data center. I servizi con ridondanza della zona replicano le applicazioni e i dati tra Availability Zones per garantire la protezione da singoli punti di failure. In questo modo Azure riesce a garantire un uptime ed una garanzia della continuità del servizio delle VM del 99,99%.