Uso di set di scalabilità di macchine virtuali di grandi dimensioniWorking with large virtual machine scale sets

È ora possibile creare set di scalabilità di macchine virtuali di Azure con capacità fino a 1.000 VM.You can now create Azure virtual machine scale sets with a capacity of up to 1,000 VMs. In questo documento è definito set di scalabilità di macchine virtuali di grandi dimensioni un set di scalabilità ridimensionabile fino a oltre 100 VM.In this document, a large virtual machine scale set is defined as a scale set capable of scaling to greater than 100 VMs. Tale funzionalità è impostata da una proprietà del set di scalabilità (singlePlacementGroup=False).This capability is set by a scale set property (singlePlacementGroup=False).

Nei set di scalabilità di grandi dimensioni, alcuni aspetti, come il bilanciamento del carico e i domini di errore, presentano un comportamento diverso rispetto ai set di scalabilità standard.Certain aspects of large scale sets, such as load balancing and fault domains behave differently to a standard scale set. Questo documento illustra le caratteristiche dei set di scalabilità di grandi dimensioni e offre informazioni utili per usarli correttamente nelle applicazioni.This document explains the characteristics of large scale sets, and describes what you need to know to successfully use them in your applications.

Un approccio comune per distribuire un'infrastruttura cloud su larga scala consiste nel creare un set di unità di scala, ad esempio creando più set di scalabilità di macchine virtuali in più reti virtuali e account di archiviazione.A common approach for deploying cloud infrastructure at large scale is to create a set of scale units, for example by creating multiple VMs scale sets across multiple VNETs and storage accounts. Questo approccio offre una gestione più semplice rispetto alle VM singole e la presenza di più unità di scala è utile per numerose applicazioni, in particolare per quelle che richiedono altri componenti organizzabili in stack come più reti virtuali ed endpoint.This approach provides easier management compared to single VMs, and multiple scale units are useful for many applications, particularly those that require other stackable components like multiple virtual networks and endpoints. Se l'applicazione richiede un singolo cluster di grandi dimensioni, tuttavia, può essere più semplice distribuire un singolo set di scalabilità con un massimo di 1.000 VM.If your application requires a single large cluster however, it can be more straightforward to deploy a single scale set of up to 1,000 VMs. Gli scenari di esempio includono distribuzioni centralizzate di Big Data o griglie di calcolo che richiedono una gestione semplice di un esteso pool di nodi di lavoro.Example scenarios include centralized big data deployments, or compute grids requiring simple management of a large pool of worker nodes. In combinazione con i dischi dati collegati dei set di scalabilità di macchine virtuali, i set di scalabilità di grandi dimensioni consentono di distribuire un'infrastruttura scalabile costituita da migliaia di vCPU e petabyte di spazio di archiviazione in un'unica operazione.Combined with VM scale set attached data disks, large scale sets enable you to deploy a scalable infrastructure consisting of thousands of vCPUs and petabytes of storage, as a single operation.

Gruppi di posizionamentoPlacement groups

La caratteristica distintiva di un set di scalabilità di grandi dimensioni non è il numero di VM, ma il numero di gruppi di posizionamento che contiene.What makes a large scale set special is not the number of VMs, but the number of placement groups it contains. Un gruppo di posizionamento è un costrutto simile a un set di disponibilità di Azure, con specifici domini di errore e di aggiornamento.A placement group is a construct similar to an Azure availability set, with its own fault domains and upgrade domains. Per impostazione predefinita, un set di scalabilità è costituito da un singolo gruppo di posizionamento con una dimensione massima di 100 VM.By default, a scale set consists of a single placement group with a maximum size of 100 VMs. Se la proprietà del set di scalabilità denominata singlePlacementGroup è impostata su false, il set può essere costituito da più gruppi di posizionamento con un intervallo da 0 a 1.000 VM.If a scale set property called singlePlacementGroup is set to false, the scale set can be composed of multiple placement groups and has a range of 0-1,000 VMs. Quando la proprietà è impostata sul valore predefinito true, un set di scalabilità è costituito da un singolo gruppo di posizionamento, con un intervallo da 0 a 100 VM.When set to the default value of true, a scale set is composed of a single placement group, and has a range of 0-100 VMs.

Elenco di controllo per l'uso di set di scalabilità di grandi dimensioniChecklist for using large scale sets

Per stabilire se l'applicazione può usare in modo efficace set di scalabilità di grandi dimensioni, considerare i requisiti seguenti:To decide whether your application can make effective use of large scale sets, consider the following requirements:

  • I set di scalabilità di grandi dimensioni richiedono Azure Managed Disks.Large scale sets require Azure Managed Disks. Per i set di scalabilità non creati con Managed Disks sono necessari più account di archiviazione (uno ogni 20 VM).Scale sets that are not created with Managed Disks require multiple storage accounts (one for every 20 VMs). I set di scalabilità di grandi dimensioni sono progettati per usare esclusivamente Managed Disks, per ridurre il sovraccarico nella gestione dell'archiviazione ed evitare il rischio di raggiungere i limiti della sottoscrizione per gli account di archiviazione.Large scale sets are designed to work exclusively with Managed Disks to reduce your storage management overhead, and to avoid the risk of running into subscription limits for storage accounts. Se non si usa Managed Disks, il set di scalabilità è limitato a 100 VM.If you do not use Managed Disks, your scale set is limited to 100 VMs.
  • I set di scalabilità creati da immagini di Azure Marketplace sono ridimensionabili fino a 1.000 VM.Scale sets created from Azure Marketplace images can scale up to 1,000 VMs.
  • I set di scalabilità creati da immagini personalizzate (ossia immagini di VM create e caricate dall'utente) sono attualmente ridimensionabili fino a 300 VM.Scale sets created from custom images (VM images you create and upload yourself) can currently scale up to 300 VMs.
  • Il bilanciamento del carico di livello 4 con set di scalabilità costituiti da più gruppi di posizionamento richiede lo SKU Standard di Azure Load Balancer.Layer-4 load balancing with scale sets composed of multiple placement groups requires Azure Load Balancer Standard SKU. Lo SKU Standard di Load Balancer offre altri vantaggi, ad esempio la possibilità di bilanciare il carico tra più set di scalabilità.The Load Balancer Standard SKU provides additional benefits, such as the ability to load balance between multiple scale sets. Lo SKU Standard richiede anche che al set di scalabilità sia associato un gruppo di sicurezza di rete. In caso contrario, i pool NAT non funzioneranno correttamente.Standard SKU also requires that the scale set has a Network Security Group associated with it, otherwise NAT pools will not work correctly. Se è necessario usare lo SKU Basic di Azure Load Balancer, verificare che il set di scalabilità sia configurato per l'uso di un singolo gruppo di posizionamento, come da impostazione predefinita.If you need to use the Azure Load Balancer Basic SKU, make sure the scale set is configured to use a single placement group, which is the default setting.
  • Il bilanciamento del carico di livello 7 con il gateway applicazione di Azure è supportato per tutti i set di scalabilità.Layer-7 load balancing with the Azure Application Gateway is supported for all scale sets.
  • Un set di scalabilità è definito con una singola subnet. Verificare che lo spazio indirizzi della subnet sia sufficiente per tutte le VM necessarie.A scale set is defined with a single subnet - make sure your subnet has an address space large enough for all the VMs you need. Per impostazione predefinita, un set di scalabilità effettua un provisioning eccessivo (ossia crea VM aggiuntive, per cui non vengono applicati addebiti, in fase di distribuzione o quando si aumenta il numero di istanze) per migliorare l'affidabilità e le prestazioni della distribuzione.By default a scale set overprovisions (creates extra VMs at deployment time or when scaling out, which you are not charged for) to improve deployment reliability and performance. Prevedere uno spazio indirizzi superiore del 20% rispetto al numero di VM a cui si intende eseguire il ridimensionamento.Allow for an address space 20% greater than the number of VMs you plan to scale to.
  • Se si pianifica di distribuire molte VM, potrebbe essere necessario aumentare i limiti di quota delle vCPU di calcolo.If you are planning to deploy many VMs, your Compute vCPU quota limits may need to be increased.
  • I domini di errore e di aggiornamento sono coerenti solo all'interno di un gruppo di posizionamento.Fault domains and upgrade domains are only consistent within a placement group. Questa architettura non modifica la disponibilità generale di un set di scalabilità, perché le VM sono distribuite in modo uniforme su hardware fisico distinto. Se è necessario garantire che due VM risiedano in hardware diverso, tuttavia, verificare che si trovino in domini di errore diversi nello stesso gruppo di posizionamento.This architecture does not change the overall availability of a scale set, as VMs are evenly distributed across distinct physical hardware, but it does means that if you need to guarantee two VMs are on different hardware, make sure they are in different fault domains in the same placement group. Il dominio di errore e l'ID del gruppo di posizionamento sono riportati nella visualizzazione dell'istanza di una VM del set di scalabilità.Fault domain and placement group ID are shown in the instance view of a scale set VM. La visualizzazione dell'istanza di una VM del set di scalabilità è disponibile in Esplora risorse di Azure.You can view the instance view of a scale set VM in the Azure Resource Explorer.

Creazione di un set di scalabilità di grandi dimensioniCreating a large scale set

Quando si crea un set di scalabilità nel portale di Azure, è possibile consentire il ridimensionamento a più gruppi di posizionamento impostando l'opzione Limit to a single placement group (Limita a singolo gruppo di posizionamento) su False nel pannello Informazioni di base.When you create a scale set in the Azure portal, you can allow it to scale to multiple placement groups by setting the Limit to a single placement group option to False in the Basics blade. Con questa opzione impostata su False, è possibile specificare un valore fino a 1.000 in Numero di istanze.With this option set to False, you can specify an Instance count value of up to 1,000.

È possibile creare un set di scalabilità di macchine virtuali di grandi dimensioni con il comando az vmss create dell'interfaccia della riga di comando di Azure.You can create a large VM scale set using the Azure CLI az vmss create command. Questo comando configura impostazioni predefinite intelligenti, ad esempio dimensioni di subnet basate sull'argomento instance-count:This command sets intelligent defaults such as subnet size based on the instance-count argument:

az group create -l southcentralus -n biginfra
az vmss create -g biginfra -n bigvmss --image ubuntults --instance-count 1000

Si noti che il comando vmss create imposta alcuni valori di configurazione predefiniti se non vengono specificati dall'utente.Note that the vmss create command defaults certain configuration values if you do not specify them. Per visualizzare le opzioni che possono essere sostituite, provare il comando seguente:To see the available options that you can override, try:

az vmss create --help

Se si crea un set di scalabilità di grandi dimensioni componendo un modello di Azure Resource Manager, verificare che il modello crei un set di scalabilità basato su Azure Managed Disks.If you are creating a large scale set by composing an Azure Resource Manager template, make sure the template creates a scale set based on Azure Managed Disks. È possibile impostare la proprietà singlePlacementGroup su false nella sezione properties della risorsa Microsoft.Compute/virtualMAchineScaleSets.You can set the singlePlacementGroup property to false in the properties section of the Microsoft.Compute/virtualMAchineScaleSets resource. Il frammento JSON seguente mostra l'inizio di un modello di set di scalabilità, con una capacità di 1.000 VM e l'impostazione "singlePlacementGroup": false:The following JSON fragment shows the beginning of a scale set template, including the 1,000 VM capacity and the "singlePlacementGroup" : false setting:

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "location": "australiaeast",
  "name": "bigvmss",
  "sku": {
    "name": "Standard_DS1_v2",
    "tier": "Standard",
    "capacity": 1000
  },
  "properties": {
    "singlePlacementGroup": false,
    "upgradePolicy": {
      "mode": "Automatic"
    }

Per un esempio completo di modello di set di scalabilità di grandi dimensioni, vedere https://github.com/gbowerman/azure-myriad/blob/master/bigtest/bigbottle.json.For a complete example of a large scale set template, refer to https://github.com/gbowerman/azure-myriad/blob/master/bigtest/bigbottle.json.

Conversione di un set di scalabilità esistente per includere più gruppi di posizionamentoConverting an existing scale set to span multiple placement groups

Per consentire il ridimensionamento di un set di scalabilità di macchine virtuali esistente a più di 100 VM, è necessario modificare la proprietà singlePlacementGroup impostandola su false nel modello di set di scalabilità.To make an existing VM scale set capable of scaling to more than 100 VMs, you need to change the singplePlacementGroup property to false in the scale set model. È possibile testare la modifica di questa proprietà con Esplora risorse di Azure.You can test changing this property with the Azure Resource Explorer. Trovare un set di scalabilità esistente, selezionare Edit (Modifica) e modificare la proprietà singlePlacementGroup.Find an existing scale set, select Edit and change the singlePlacementGroup property. Se questa proprietà non è visualizzata, è possibile che si stia visualizzando il set di scalabilità con una versione precedente dell'API Microsoft.Compute.If you do not see this property, you may be viewing the scale set with an older version of the Microsoft.Compute API.

Nota

È possibile modificare una set di scalabilità passando dal supporto di un singolo gruppo di posizionamento (comportamento predefinito) al supporto di più gruppi di posizionamento, ma non eseguire la conversione inversa.You can change a scale set from supporting a single placement group only (the default behavior) to a supporting multiple placement groups, but you cannot convert the other way around. Di conseguenza, prima di effettuare la conversione è importante comprendere le proprietà dei set di scalabilità di grandi dimensioni.Therefore make sure you understand the properties of large scale sets before converting.