Creare un set di scalabilità di macchine virtuali che usa le zone di disponibilità

Le zone di disponibilità di Azure sono posizioni isolate dall'errore all'interno di un'area di Azure che forniscono potenza ridondante, raffreddamento e rete. Consentono di eseguire applicazioni con disponibilità elevata e tolleranza di errore per gli errori del data center. Le aree di Azure che supportano le zone di disponibilità hanno almeno tre zone separate. Ogni zona di disponibilità è costituita da uno o più data center dotati di potenza, rete e raffreddamento dell'infrastruttura indipendenti. Le zone di disponibilità sono connesse da una rete ad alte prestazioni con una latenza di round trip inferiore a 2 millisecondi. Per ulteriori informazioni, vedere Overview of Availability Zones (Panoramica delle zone di disponibilità in Azure).

Per proteggere i set di scalabilità di macchine virtuali dagli errori che possono verificarsi a livello di data center, è possibile creare un set di scalabilità tra le zone di disponibilità. Per usare le zone di disponibilità, è necessario creare il set di scalabilità in un'area di Azure supportata.

Considerazioni di progettazione relative alle zone di disponibilità

I set di scalabilità di macchine virtuali supportano tre modelli di distribuzione di zona:

  • Con ridondanza della zona o in più zone (scelta consigliata)
  • Di zona o allineata alla zona (zona singola)
  • Regional

Con ridondanza della zona o in più zone

Un set di scalabilità con ridondanza della zona o in più zone estende le istanze a tutte le zone selezionate, "zones": ["1","2","3"]. Per impostazione predefinita, il set di scalabilità esegue un approccio ottimale per distribuire uniformemente le istanze tra le zone selezionate. Tuttavia, è possibile specificare che si vuole un bilanciamento rigoroso della zona impostando "zoneBalance": "true" nella distribuzione. Ogni macchina virtuale e i relativi dischi sono di zona, quindi vengono aggiunti a una zona specifica. Le istanze tra le zone sono connesse dalla rete ad alte prestazioni con bassa latenza. In caso di interruzione di zona o problemi di connettività, la connettività alle istanze all'interno della zona interessata può essere compromessa, mentre le istanze in altre zone di disponibilità generalmente non sono interessate. È possibile aggiungere capacità al set di scalabilità durante un'interruzione di zona e il set di scalabilità aggiunge altre istanze alle zone non interessate. Quando la zona viene ripristinata, potrebbe essere necessario ridurre il set di scalabilità alla capacità originale. Una procedura consigliata è quella di configurare regole di scalabilità automatica in base alla CPU o all'utilizzo della memoria. Le regole di scalabilità automatica consentono al set di scalabilità di rispondere a una perdita delle istanze delle macchine virtuali in una zona aumentando il numero di istanze nelle restanti zone operative.

La distribuzione di istanze tra zone di disponibilità soddisfa il contratto di servizio del 99,99% per le istanze distribuite tra zone di disponibilità ed è consigliata per la maggior parte dei carichi di lavoro in Azure.

Di zona o allineato alla zona (zona singola)

Un set di scalabilità di zona o allineato alla zona inserisce le istanze in una sola zona di disponibilità "zones": ['1']. Ogni macchina virtuale e i relativi dischi sono di zona, quindi vengono aggiunti a una zona specifica. Questa configurazione viene usata principalmente quando è necessaria una latenza inferiore tra istanze.

Regional

Un set di scalabilità di macchine virtuali a livello di area è quando l'assegnazione di zona non è impostata in modo esplicito ("zones"=[] o "zones"=null). In questa configurazione, il set di scalabilità crea istanze regionali (non aggiunte alla zona) e inserisce in modo implicito le istanze in tutta l'area. Non esiste alcuna garanzia per il bilanciamento o la distribuzione tra zone o per il fatto che le istanze si trovino nella stessa zona di disponibilità. La coubicazione del disco è garantita per i dischi Ultra e Premium v2, il massimo impegno per i dischi Premium V1, mentre non è garantito per i dischi SKU Standard (SSD o HDD).

Nel raro caso di un'interruzione completa di zona, è possibile che siano interessate tutte le istanze all'interno del set di scalabilità.

Domini di errore e zone di disponibilità

Un dominio di errore è un gruppo di isolamento degli errori all'interno di una zona di disponibilità o di un data center di nodi hardware che condividono la stessa potenza, rete, raffreddamento e pianificazione della manutenzione della piattaforma. È probabile che le istanze di macchine virtuali in domini di errore diversi non siano interessate dalla stessa interruzione pianificata o non pianificata. È possibile specificare il modo in cui le istanze vengono distribuite tra domini di errore all'interno di un'area o di una zona.

  • Distribuzione massima (platformFaultDomainCount = 1)
  • Distribuzione fissa statica (platformFaultDomainCount = 5)
  • Distribuzione allineata ai domini di errore del disco di archiviazione (platformFaultDomainCount = 2 o 3, solo per le distribuzioni a livello di area)

Con la distribuzione massima, il set di scalabilità distribuisce le macchine virtuali nel maggior numero di domini di errore possibile all'interno di ogni zona. Questa distribuzione potrebbe interessare più o meno di cinque domini di errore per zona. Con la distribuzione fissa statica, il set di scalabilità distribuisce le macchine virtuali esattamente in cinque domini di errore per zona. Se il set di scalabilità non trova cinque domini di errore distinti per zona per soddisfare la richiesta di allocazione, la richiesta ha esito negativo.

È consigliabile usare la distribuzione massima per la maggior parte dei carichi di lavoro perché questo approccio offre la migliore distribuzione nella maggior parte dei casi. Se è necessario distribuire repliche in unità di isolamento hardware distinte, è consigliabile eseguire la distribuzione in zone di disponibilità e usare l'opzione di distribuzione massima all'interno di ogni zona.

Nota

Con la distribuzione massima si vede solo un dominio di errore nella visualizzazione dell'istanza di macchina virtuale del set di scalabilità e nei metadati dell'istanza, indipendentemente dal numero di domini di errore in cui le macchine virtuali sono distribuite. La distribuzione all'interno di ogni zona è implicita.

Gruppi di posizionamento

Importante

I gruppi di posizionamento si applicano solo ai set di scalabilità di macchine virtuali in esecuzione in modalità di orchestrazione uniforme.

Quando si distribuisce un set di scalabilità, è possibile procedere con un singolo gruppo di posizionamento per zona di disponibilità o con più gruppi per zona. Per i set di scalabilità di area (non di zona), è possibile scegliere tra un singolo gruppo di posizionamento o più gruppi nell'area. Se la proprietà del set di scalabilità denominata singlePlacementGroup è impostata su false, il set di scalabilità può essere composto da più gruppi di posizionamento e ha un intervallo di 0-1000 macchine virtuali. Quando la proprietà è impostata sul valore predefinito true, il set di scalabilità è costituito da un singolo gruppo di posizionamento, con un intervallo da 0 a 100 VM. Per la maggior parte dei carichi di lavoro è consigliabile usare più gruppi di posizionamento, che consentono una maggiore scalabilità. Per impostazione predefinita, nell'API versione 2017-12-01 i set di scalabilità a zona singola e tra zone usano più gruppi di posizionamento, mentre i set di scalabilità a livello di area (non di zona) usano un solo gruppo di posizionamento.

Nota

Se si usa la distribuzione massima, è necessario usare più gruppi di posizionamento.

Bilanciamento delle zone

Per i set di scalabilità distribuiti in più zone, è anche possibile scegliere il "bilanciamento della zona più impegnativo" o il "bilanciamento della zona rigoroso". Un set di scalabilità viene considerato "bilanciato" se ogni zona ha lo stesso numero di macchine virtuali +\- 1 vm di tutte le altre zone per il set di scalabilità. Ad esempio:

  • Un set di scalabilità con 2 macchine virtuali nella zona 1, 3 macchine virtuali nella zona 2 e 3 macchine virtuali nella zona 3 è considerato bilanciato. C'è solo una zona con un numero di macchine virtuali diverso e la differenza è di 1 sola in meno rispetto alle altre zone.
  • Un set di scalabilità con 1 macchina virtuale nella zona 1, 3 nella zona 2 e 3 nella zona 3 è considerato sbilanciato. La zona 1 ha 2 macchine virtuali in meno rispetto alle zone 2 e 3.

È possibile che le macchine virtuali nel set di scalabilità vengano create correttamente, ma che non sia possibile distribuire le estensioni in tali macchine virtuali. Queste macchine virtuali con errori di estensione vengono comunque conteggiate per determinare se un set di scalabilità è bilanciato. Ad esempio, un set di scalabilità con 3 macchine virtuali nella zona 1, 3 macchine virtuali nella zona 2 e 3 macchine virtuali nella zona 3 viene considerato bilanciato anche se tutte le estensioni non sono riuscite nella zona 1 e tutte le estensioni sono riuscite nelle zone 2 e 3.

Con il bilanciamento delle zone con massimo sforzo, il set di scalabilità tenta di aumentare e ridurre il numero di macchine virtuali mantenendo il bilanciamento. Tuttavia, se per qualche motivo il bilanciamento delle zone non è possibile (ad esempio se una zona diventa inattiva, impedendo al set di scalabilità di creare una nuova macchina virtuale in tale zona), il set di scalabilità consente uno squilibrio temporaneo per poter aumentare o ridurre il numero di macchine virtuali correttamente. Con i successivi tentativi di aumento, il set di scalabilità aggiunge macchine virtuali alle zone che ne richiedono di più per bilanciare il set di scalabilità. Allo stesso modo, con i successivi tentativi di riduzione, il set di scalabilità rimuove macchine virtuali dalle zone che ne richiedono di meno per bilanciare il set di scalabilità. Con il bilanciamento delle zone restrittivo, qualsiasi tentativo di aumento o riduzione da parte del set di scalabilità ha esito negativo, in quanto così facendo si creerebbe uno squilibrio.

Per usare il bilanciamento delle zone con massimo sforzo, impostare zoneBalance su false. Questa è l'impostazione predefinita nell'API versione 2017-12-01. Per usare il bilanciamento delle zone restrittivo, impostare zoneBalance su true.

Nota

La proprietà zoneBalance può essere impostata solo se la proprietà delle zone del set di scalabilità contiene più zone. Se non sono specificate zone o ne viene specificata solo una, la proprietà zoneBalance non deve essere impostata.

Creare set di scalabilità in più zone o di zona

Quando si distribuisce un set di scalabilità di macchine virtuali, è possibile scegliere di usare una sola zona di disponibilità in un'area o più zone.

È possibile creare un set di scalabilità che usa le zone di disponibilità in uno dei modi seguenti:

Usare il portale di Azure

La procedura per creare un set di scalabilità che usa una zona di disponibilità è identica a quella descritta in dettaglio nell'articolo introduttivo. Quando si seleziona un'area di Azure supportata, è possibile creare un set di scalabilità in una o più zone tra quelle disponibili, come illustrato nell'esempio seguente:

Creare un set di scalabilità in una sola zona di disponibilità

Il set di scalabilità e le risorse di supporto, ad esempio Azure Load Balancer e l'indirizzo IP pubblico, vengono creati nella sola zona specificata.

Usare l'interfaccia della riga di comando di Azure

La procedura per creare un set di scalabilità che usa una zona di disponibilità è identica a quella descritta in dettaglio nell'articolo introduttivo. Per usare le zone di disponibilità, è necessario creare il set di scalabilità in un'area di Azure supportata.

Aggiungere il parametro --zones al comando az vmss create e specificare quale zona usare, ad esempio la zona 1, 2 o 3.

az vmss create \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --image <SKU Image> \
    --upgrade-policy-mode automatic \
    --admin-username azureuser \
    --generate-ssh-keys \
    --zones 1 2 3

Le operazioni da eseguire per creare e configurare tutte le macchine virtuali e le risorse del set di scalabilità nelle zone specificate richiedono alcuni minuti. Per un esempio completo di un set di scalabilità con ridondanza della zona e delle relative risorse di rete, vedere questo script di esempio dell'interfaccia della riga di comando.

Usare Azure PowerShell

Per usare le zone di disponibilità, è necessario creare il set di scalabilità in un'area di Azure supportata. Aggiungere il parametro -Zone al comando New-AzVmssConfig e specificare quale zona o quali zone usare, ad esempio la zona 1, 2 o 3.

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS2" `
  -VMScaleSetName "myScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -UpgradePolicy "Automatic" `
  -Zone "1", "2", "3"

Usare i modelli di Azure Resource Manager

La procedura per creare un set di scalabilità che usa una zona di disponibilità è identica a quella descritta in dettaglio nell'articolo introduttivo per Linux o Windows.

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "myScaleSet",
  "location": "East US 2",
  "apiVersion": "2017-12-01",
  "zones": [
        "1",
        "2",
        "3"
      ]
}

Se si crea un indirizzo IP pubblico o un servizio di bilanciamento del carico, specificare la proprietà "sku": {"name":"Standard"} per creare risorse di rete con ridondanza della zona. È anche necessario creare un gruppo di sicurezza di rete e le relative regole per consentire ogni tipo di traffico. Per altre informazioni, vedere Panoramica di Azure Load Balancer Standard e Load Balancer Standard e zone di disponibilità.

Aggiornare il set di scalabilità per aggiungere zone di disponibilità

È possibile modificare la scalabilità per espandere il set di zone su cui distribuire istanze di VM. L'espansione consente di sfruttare un contratto di servizio di disponibilità di zona superiore (99,99%) rispetto al contratto di servizio per la disponibilità a livello di area (99,95%). In alternativa, espandere il set di scalabilità per sfruttare le nuove zone di disponibilità non disponibili al momento della creazione del set di scalabilità.

Questa funzionalità può essere usata con l'API versione 2023-03-01 o successiva.

Espandere il set di scalabilità per usare le zone di disponibilità

È possibile aggiornare il set di scalabilità per aumentare le istanze in una o più zone di disponibilità aggiuntive, fino al numero di zone di disponibilità supportate dall'area. Per le aree che supportano le zone, il numero minimo di zone è 3.

Importante

Quando si espande il set di scalabilità in zone aggiuntive, le istanze originali non vengono migrate o modificate. Quando si aumenta il numero di istanze, le nuove istanze vengono create e distribuite uniformemente tra le zone di disponibilità selezionate. I dati delle istanze originali non vengono migrati nelle nuove zone. Quando si riduce il numero di istanze del set di scalabilità, tutte le istanze a livello di area verranno prima classificate in ordine di priorità per la rimozione. Successivamente, le istanze vengono rimosse in base alla scalabilità dei criteri.

L'espansione in un set di scalabilità di zona viene eseguita in 3 passaggi:

  1. Preparare l'espansione a livello di zona
  2. Aggiornare il parametro delle zone nel set di scalabilità
  3. Aggiungere nuove istanze di zona e rimuovere le istanze originali

Preparare l'espansione a livello di zona

Avviso

Questa funzionalità consente di aggiungere zone al set di scalabilità. Non è possibile tornare a un set di scalabilità a livello di area o rimuovere le zone dopo l'aggiunta.

Per preparare l'espansione a livello di zona:

  • Verificare di avere una quota sufficiente per le dimensioni della macchina virtuale nell'area selezionata per gestire più istanze.
  • Verificare che le dimensioni della macchina virtuale e i tipi di disco in uso siano disponibili in tutte le zone desiderate. È possibile usare l'API SKU delle risorse di calcolo per determinare le dimensioni disponibili nelle zone
  • Verificare che la configurazione del set di scalabilità sia valida per i set di scalabilità di zona:
    • platformFaultDomainCount deve essere impostato su 1 o 5. La correzione della distribuzione con 2 o 3 domini di errore non è supportata per le distribuzioni di zona.
    • Le prenotazioni di capacità non sono supportate durante l'espansione della zona. Una volta che il set di scalabilità è completamente di zona (nessun'altra istanza a livello di area), è possibile aggiungere un gruppo di prenotazione della capacità al set di scalabilità.
    • Le distribuzioni dell’host dedicato di Azure non sono supportate.

Aggiornare il parametro delle zone nel set di scalabilità

Aggiornare il set di scalabilità per modificare il parametro delle zone.

  1. Passare al set di scalabilità che si desidera aggiornare
  2. Nella scheda Proprietà della pagina di destinazione del set di scalabilità, individuare la proprietà Zona di disponibilità e premere Modifica
  3. Nella finestra di dialogo Modifica posizione selezionare la zona o le zone desiderate
  4. Selezionare Applica.

Aggiungere nuove istanze di zona e rimuovere le istanze originali

Aumentare e ridurre manualmente le prestazioni

Aggiornare la capacità del set di scalabilità per aggiungere altre istanze. La nuova capacità deve essere impostata sulla capacità originale e sul numero di nuove istanze. Ad esempio, se il set di scalabilità ha 5 istanze a livello di area e si vuole aumentare le istanze in modo che ne siano presenti 3 in ognuna delle 3 zone, è necessario impostare la capacità su 14.

È possibile aggiornare il parametro delle zone e la capacità del set di scalabilità nello stesso modello di ARM o nella stessa chiamata API REST.

Quando si è soddisfatti delle nuove istanze, ridimensionare il set di scalabilità per rimuovere le istanze di area originali. È possibile eliminare manualmente le istanze a livello di area specifiche o ridurre la capacità del set di scalabilità. Quando si esegue il ridimensionamento tramite la riduzione della capacità del set di scalabilità, la piattaforma preferisce sempre rimuovere le istanze a livello di area, quindi seguire i criteri di scalabilità.

Problemi noti e limitazioni

  • Le istanze originali non vengono migrate nelle zone appena aggiunte. Il carico di lavoro deve gestire qualsiasi migrazione o replica dei dati necessaria.

  • I set di scalabilità che eseguono Service Fabric RP o servizio Azure Kubernetes non sono supportati.

  • Non è possibile rimuovere o sostituire le zone, ma solo aggiungerle

  • Non è possibile eseguire l'aggiornamento da un set di scalabilità in più zone o di zona a un set di scalabilità a livello di area.

  • platformFaultDomainCount deve essere impostato su 1 o 5. La correzione della distribuzione con 2 o 3 domini di errore non è supportata per le distribuzioni di zona.

  • Le prenotazioni di capacità non sono supportate durante l'espansione della zona. Una volta che il set di scalabilità è completamente di zona (nessun'altra istanza a livello di area), è possibile aggiungere un gruppo di prenotazione della capacità al set di scalabilità.

  • Le distribuzioni dell’host dedicato di Azure non sono supportate

Passaggi successivi

Dopo aver creato un set di scalabilità in una zona di disponibilità, è possibile visualizzare informazioni su come distribuire le applicazioni nei set di scalabilità di macchine virtuali o come usare la scalabilità automatica con i set di scalabilità di macchine virtuali.