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

Le zone di disponibilità di Azure sono posizioni isolate dall'errore all'interno di un'area di Azure che forniscono alimentazione 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 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 indipendenti dell'infrastruttura. 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 da errori a livello di data center, è possibile creare un set di scalabilità in zone di disponibilità. Per usare le zone di disponibilità, è necessario creare il set di scalabilità in un'area di Azure supportata.

Considerazioni sulla progettazione per le zone di disponibilità

set di scalabilità di macchine virtuali supporta tre modelli di distribuzione di zona:

  • Ridondanza della zona o spanning della zona (scelta consigliata)
  • Zonale o zona allineata (singola zona)
  • A livello di area

Ridondanza della zona o spanning della zona

Un set di scalabilità con ridondanza della zona o zona estende le istanze in 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 della zona rigoroso 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 di connettività, la connettività alle istanze all'interno della zona interessata può essere compromessa, mentre le istanze in altre zone di disponibilità non devono essere 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 consiste nel configurare le regole di scalabilità automatica in base all'utilizzo della CPU o 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 è consigliato per la maggior parte dei carichi di lavoro in Azure.

Zonale o zona allineata (singola zona)

Un set di scalabilità allineato a zona o zona inserisce le istanze in una singola zona di "zones": ['1']disponibilità. 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.

A livello di area

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 internazionali (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 che le istanze si trovano nella stessa zona di disponibilità. La corilevazione del disco è garantita per i dischi Ultra e Premium v2, il massimo sforzo per i dischi Premium V1 e non è garantito per i dischi SKU Standard (SSD o HDD).

Nel caso raro di un'interruzione completa della 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 in esattamente cinque domini di errore per zona. Se il set di scalabilità non riesce a trovare 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 alle set di scalabilità di macchine virtuali in esecuzione in modalità di orchestrazione uniforme.

Quando si distribuisce un set di scalabilità, è possibile eseguire la distribuzione con un singolo gruppo di posizionamento per zona di disponibilità o con più istanze per zona. Per i set di scalabilità regionali (non di zona), la scelta consiste nell'avere un singolo gruppo di posizionamento nell'area o avere più nell'area. Se la proprietà del set di scalabilità chiamata è impostata singlePlacementGroup su false, il set di scalabilità può essere composto da più gruppi di posizionamento e ha un intervallo di 0-1.000 macchine virtuali. Se impostato sul valore predefinito true, il set di scalabilità è composto da un singolo gruppo di posizionamento e ha un intervallo di 0-100 macchine virtuali. Per la maggior parte dei carichi di lavoro è consigliabile usare più gruppi di posizionamento, che consentono una maggiore scalabilità. Nella versione 2017-12-01 dell'API i set di scalabilità vengono impostati per impostazione predefinita su più gruppi di posizionamento per set di scalabilità a zona singola e tra zone, ma per impostazione predefinita viene impostato un singolo gruppo di posizionamento per i set di scalabilità regionali (non di zona).

Nota

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

Bilanciamento delle zone

Infine, per i set di scalabilità distribuiti in più zone, è anche possibile scegliere "bilanciamento della zona più impegnativo" o "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 nella zona 2 e 3 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 della zona non è possibile (ad esempio, se una zona scende, il set di scalabilità non può creare una nuova macchina virtuale in tale zona), il set di scalabilità consente uno squilibrio temporaneo per aumentare o ridurre correttamente il numero di istanze. Nei successivi tentativi di scalabilità orizzontale, il set di scalabilità aggiunge macchine virtuali alle zone che necessitano di più macchine virtuali per il set di scalabilità da bilanciare. 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 zoneBalance proprietà può essere impostata solo se la proprietà zone del set di scalabilità contiene più zone. Se non sono specificate zone o una sola zona, la proprietà zoneBalance non deve essere impostata.

Creare set di scalabilità di zone o zone

Quando si distribuisce un set di scalabilità di macchine virtuali, è possibile scegliere di usare una singola zona di disponibilità in un'area o in 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 -Zone parametro al comando New-AzVmssConfig e specificare la zona o le zone da 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 "sku": {"name":"Standard"} proprietà 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à.

Per un esempio completo di un set di scalabilità con ridondanza della zona e delle risorse di rete, vedere il modello di Resource Manager di esempio.

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à.

Importante

L'aggiornamento set di scalabilità di macchine virtuali per aggiungere zone di disponibilità è attualmente in anteprima. Le anteprime vengono rese disponibili all'utente in base alla condizione di accettare le Condizioni supplementari per l'utilizzo. Alcuni aspetti di questa funzionalità potrebbero subire modifiche prima della disponibilità a livello generale.

Importante

Questa funzionalità è destinata ai carichi di lavoro senza stato in set di scalabilità di macchine virtuali. I set di scalabilità con carichi di lavoro con stato o usati con Service Fabric o i servizio Azure Kubernetes non sono supportati per l'espansione a livello di zona.

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

Abilitare la sottoscrizione per l'uso della funzionalità di espansione di zona

È necessario registrarsi per quattro flag di funzionalità nella sottoscrizione:

az feature register --namespace Microsoft.Compute --name VmssAllowRegionalToZonalMigration
az feature register --namespace Microsoft.Compute --name VmssAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowRegionalToZonalMigration

È possibile controllare lo stato di registrazione di ogni funzionalità usando:

az feature show --namespace Microsoft.Compute --name \<feature-name\>

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. Quando si esegue il ridimensionamento nel set di scalabilità, tutte le istanze a livello di area verranno prima classificate 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 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. 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 zonale (nessun'altra istanza a livello di area), è possibile aggiungere un gruppo di prenotazioni di capacità al set di scalabilità.
    • Le distribuzioni di host dedicati di Azure non sono supportate.

Aggiornare il parametro zone nel set di scalabilità

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

  1. Passare al set di scalabilità da 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 le zone desiderate
  4. Selezionare Applica.

Aggiungere nuove istanze di zona e rimuovere le istanze originali

Aumentare e ridurre manualmente il numero di istanze

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 siano presenti 3 istanze in ognuna di 3 zone, è necessario impostare la capacità su 14.

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

Quando si è soddisfatti che le nuove istanze sono pronte, ridimensionare il set di scalabilità per rimuovere le istanze internazionali 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 la scalabilità nei criteri.

Automatizzare con aggiornamenti in sequenza + MaxSurge

Con gli aggiornamenti in sequenza + MaxSurge, vengono create nuove istanze di zona e aggiornate con il modello di scalabilità più recente in batch. Dopo che un batch di nuove istanze viene aggiunto al set di scalabilità e al report come integro, un batch di istanze precedenti viene rimosso automaticamente dal set di scalabilità. Gli aggiornamenti continuano fino a quando tutte le istanze non vengono aggiornate.

Importante

Gli aggiornamenti in sequenza con MaxSurge sono attualmente in anteprima pubblica. È disponibile solo per la modalità di orchestrazione uniforme del set di scalabilità di macchine virtuali.

Problemi noti e limitazioni

  • La funzionalità è destinata ai carichi di lavoro senza stato in set di scalabilità di macchine virtuali.

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

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

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

  • platformFaultDomainCount deve essere impostato su 1 o 5. 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 zonale (nessun'altra istanza a livello di area), è possibile aggiungere un gruppo di prenotazioni di capacità al set di scalabilità.

  • Le distribuzioni di host dedicati di Azure non sono supportate

Passaggi successivi

Dopo aver creato un set di scalabilità in una zona di disponibilità, è possibile imparare a distribuire applicazioni in set di scalabilità di macchine virtuali o Usare la scalabilità automatica con set di scalabilità di macchine virtuali.