Come usare i set di disponibilitàHow to use availability sets

In questa esercitazione si apprenderà come aumentare la disponibilità e l'affidabilità delle soluzioni delle proprie macchine virtuali in Azure tramite una funzionalità denominata set di disponibilità.In this tutorial, you learn how to increase the availability and reliability of your Virtual Machine solutions on Azure using a capability called Availability Sets. I set di disponibilità assicurano che le macchine virtuali distribuite in Azure vengano distribuite tra più nodi hardware isolati in un cluster.Availability sets ensure that the VMs you deploy on Azure are distributed across multiple isolated hardware nodes in a cluster. Questa operazione assicura che, se si verifica un errore hardware o software all'interno di Azure, solo un subset delle macchine virtuali viene interessato e che nel complesso la soluzione rimane disponibile e operativa.Doing this ensures that if a hardware or software failure within Azure happens, only a sub-set of your VMs are impacted and that your overall solution remains available and operational.

In questa esercitazione si apprenderà come:In this tutorial, you learn how to:

  • Creare un set di disponibilitàCreate an availability set
  • Creare una macchina virtuale in un set di disponibilitàCreate a VM in an availability set
  • Controllare le dimensioni delle macchine virtuali disponibiliCheck available VM sizes
  • Selezionare Azure AdvisorCheck Azure Advisor

Questa esercitazione richiede il modulo Azure PowerShell 3.6 o versioni successive.This tutorial requires the Azure PowerShell module version 3.6 or later. Eseguire Get-Module -ListAvailable AzureRM per trovare la versione.Run Get-Module -ListAvailable AzureRM to find the version. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module.

Informazioni generali sui set di disponibilitàAvailability set overview

Un set di disponibilità è una funzionalità di raggruppamento logico che è possibile usare in Azure per garantire che le risorse delle macchine virtuali inserite dall'utente siano isolate tra loro quando vengono distribuite all'interno di un data center di Azure.An Availability Set is a logical grouping capability that you can use in Azure to ensure that the VM resources you place within it are isolated from each other when they are deployed within an Azure datacenter. Azure garantisce che le macchine virtuali inserite all'interno di un set di disponibilità vengano eseguite tra più server fisici, rack di calcolo, unità di archiviazione e commutatori di rete.Azure ensures that the VMs you place within an Availability Set run across multiple physical servers, compute racks, storage units, and network switches. In caso di guasto hardware o errore software in Azure, viene interessato solo un subset delle macchine virtuali. L'applicazione nel suo complesso rimarrà attiva e disponibile per i clienti.If a hardware or Azure software failure occurs, only a subset of your VMs are impacted, and your overall application stays up and continues to be available to your customers. I set di disponibilità sono una funzionalità essenziale da sfruttare quando si vogliono creare soluzioni cloud affidabili.Availability Sets are an essential capability when you want to build reliable cloud solutions.

Si consideri una soluzione tipica basata su macchine virtuali, in cui si dispone di 4 server Web front-end e vengono usate 2 macchine virtuali di back-end che ospitano un database.Let’s consider a typical VM-based solution where you might have 4 front-end web servers and use 2 back-end VMs that host a database. Con Azure è possibile definire due set di disponibilità prima di distribuire le macchine virtuali: un set di disponibilità per il livello Web e un set di disponibilità per il livello database.With Azure, you’d want to define two availability sets before you deploy your VMs: one availability set for the web tier and one availability set for the database tier. Quando si crea una nuova macchina virtuale, è quindi possibile specificare il set di disponibilità come parametro per il comando az vm create. Azure garantisce automaticamente che le macchine virtuali create all'interno del set di disponibilità vengano isolate tramite installazione in più risorse hardware fisiche.When you create a new VM you can then specify the availability set as a parameter to the az vm create command, and Azure automatically ensures that the VMs you create within the available set are isolated across multiple physical hardware resources. Se l'hardware fisico in cui è in esecuzione una delle macchine virtuali dei server di database o dei server Web presenta un problema, le altre istanze delle macchine virtuali dei server Web e di database rimangono in esecuzione, perché si trovano all'interno di risorse hardware diverse.If the physical hardware that one of your Web Server or Database Server VMs is running on has a problem, you know that the other instances of your Web Server and Database VMs remain running because they are on different hardware.

È consigliabile usare i set di disponibilità quando si vogliono distribuire soluzioni affidabili basate su macchine virtuali in Azure.Use Availability Sets when you want to deploy reliable VM-based solutions in Azure.

Creare un set di disponibilitàCreate an availability set

È possibile creare un set di disponibilità con il comando New-AzureRmAvailabilitySet.You can create an availability set using New-AzureRmAvailabilitySet. In questo esempio, sia il numero di domini di aggiornamento che quello di domini di errore vengono impostati su 2 per il set di disponibilità denominato myAvailabilitySet nel gruppo di risorse myResourceGroupAvailability.In this example, we set both the number of update and fault domains at 2 for the availability set named myAvailabilitySet in the myResourceGroupAvailability resource group.

Creare un gruppo di risorse.Create a resource group.

New-AzureRmResourceGroup -Name myResourceGroupAvailability -Location EastUS

Creare un set di disponibilità gestito usando New-AzureRmAvailabilitySet con il parametro -sku aligned.Create a managed availability set using New-AzureRmAvailabilitySet with the -sku aligned parameter.

New-AzureRmAvailabilitySet `
   -Location EastUS `
   -Name myAvailabilitySet `
   -ResourceGroupName myResourceGroupAvailability `
   -sku aligned `
   -PlatformFaultDomainCount 2 `
   -PlatformUpdateDomainCount 2

Creare macchine virtuali in un set di disponibilitàCreate VMs inside an availability set

Per garantire la corretta distribuzione delle macchine virtuali in tutto l'hardware, le VM devono essere create all'interno del set di disponibilità.VMs must be created within the availability set to make sure they are correctly distributed across the hardware. Non è possibile aggiungere una macchina virtuale esistente a un set di disponibilità dopo la sua creazione.You can't add an existing VM to an availability set after it is created.

L'hardware in un percorso è suddiviso in più domini di aggiornamento e domini di errore.The hardware in a location is divided in to multiple update domains and fault domains. I domini di aggiornamento sono gruppi di macchine virtuali con relativo hardware fisico sottostante che è possibile riavviare nello stesso momento.An update domain is a group of VMs and underlying physical hardware that can be rebooted at the same time. Le macchine virtuali nello stesso dominio di errore condividono risorse di archiviazione comuni, nonché un alimentatore e un commutatore di rete comune.VMs in the same fault domain share common storage as well as a common power source and network switch.

Quando si crea la configurazione di una macchina virtuale usando il comando New-AzureRMVMConfig, si usa il parametro -AvailabilitySetId per specificare l'ID del set di disponibilità.When you create a VM configuration using New-AzureRMVMConfig you use the -AvailabilitySetId parameter to specify the ID of the availability set.

Creare due macchine virtuali con il comando New-AzureRmVM nel set di disponibilità.Create two VMs with New-AzureRmVM in the availability set.

$availabilitySet = Get-AzureRmAvailabilitySet `
    -ResourceGroupName myResourceGroupAvailability `
    -Name myAvailabilitySet

$cred = Get-Credential -Message "Enter a username and password for the virtual machine."

$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
    -Name mySubnet `
    -AddressPrefix 192.168.1.0/24
$vnet = New-AzureRmVirtualNetwork `
    -ResourceGroupName myResourceGroupAvailability `
    -Location EastUS `
    -Name myVnet `
    -AddressPrefix 192.168.0.0/16 `
    -Subnet $subnetConfig

$nsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig `
    -Name myNetworkSecurityGroupRuleRDP `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 1000 `
    -SourceAddressPrefix * `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 3389 `
    -Access Allow

$nsg = New-AzureRmNetworkSecurityGroup `
    -Location eastus `
    -Name myNetworkSecurityGroup `
    -ResourceGroupName myResourceGroupAvailability `
    -SecurityRules $nsgRuleRDP

# Apply the network security group to a subnet
Set-AzureRmVirtualNetworkSubnetConfig `
    -VirtualNetwork $vnet `
    -Name mySubnet `
    -NetworkSecurityGroup $nsg `
    -AddressPrefix 192.168.1.0/24

# Update the virtual network
Set-AzureRmVirtualNetwork -VirtualNetwork $vnet

for ($i=1; $i -le 2; $i++)
{
   $pip = New-AzureRmPublicIpAddress `
        -ResourceGroupName myResourceGroupAvailability `
        -Location EastUS `
        -Name "mypublicdns$(Get-Random)" `
        -AllocationMethod Static `
        -IdleTimeoutInMinutes 4

   $nic = New-AzureRmNetworkInterface `
        -Name myNic$i `
        -ResourceGroupName myResourceGroupAvailability `
        -Location EastUS `
        -SubnetId $vnet.Subnets[0].Id `
        -PublicIpAddressId $pip.Id `
        -NetworkSecurityGroupId $nsg.Id

   # Here is where we specify the availability set
   $vm = New-AzureRmVMConfig `
        -VMName myVM$i `
        -VMSize Standard_D1 `
        -AvailabilitySetId $availabilitySet.Id

   $vm = Set-AzureRmVMOperatingSystem `
        -ComputerName myVM$i `
        -Credential $cred `
        -VM $vm `
        -Windows `
        -EnableAutoUpdate `
        -ProvisionVMAgent
   $vm = Set-AzureRmVMSourceImage `
        -VM $vm `
        -PublisherName MicrosoftWindowsServer `
        -Offer WindowsServer `
        -Skus 2016-Datacenter `
        -Version latest
   $vm = Set-AzureRmVMOSDisk `
        -VM $vm `
        -Name myOsDisk$i `
        -DiskSizeInGB 128 `
        -CreateOption FromImage `
        -Caching ReadWrite
   $vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
   New-AzureRmVM `
        -ResourceGroupName myResourceGroupAvailability `
        -Location EastUS `
        -VM $vm
}

La creazione e la configurazione di entrambe le macchine virtuali richiedono alcuni minuti.It takes a few minutes to create and configure both VMs. Al termine, si avranno due macchine virtuali distribuite nell'hardware sottostante.When finished, you'll have two virtual machines distributed across the underlying hardware.

Se si esamina il set di disponibilità nel portale, selezionando Gruppi di risorse > myResourceGroupAvailability > myAvailabilitySet, è possibile vedere in che modo sono distribuite le macchine virtuali tra i due domini di errore e di aggiornamento.If you look at the availability set in the portal by going to Resource Groups > myResourceGroupAvailability > myAvailabilitySet, you should see how the VMs are distributed across the 2 fault and update domains.

Set di disponibilità nel portale

Controllare le dimensioni delle macchine virtuali disponibiliCheck for available VM sizes

È possibile aggiungere più macchine virtuali al set di disponibilità in un secondo momento, ma è necessario sapere quali dimensioni di macchina virtuale sono disponibili nell'hardware.You can add more VMs to the availability set later, but you need to know what VM sizes are available on the hardware. Usare il comando Get-AzureRMVMSize per elencare tutte le dimensioni disponibili nel cluster hardware per il set di disponibilità.Use Get-AzureRMVMSize to list all the available sizes on the hardware cluster for the availability set.

Get-AzureRmVMSize `
   -AvailabilitySetName myAvailabilitySet `
   -ResourceGroupName myResourceGroupAvailability  

Selezionare Azure AdvisorCheck Azure Advisor

È possibile anche usare Azure Advisor per ottenere altre informazioni su come migliorare la disponibilità delle macchine virtuali.You can also use Azure Advisor to get more information on ways to improve the availability of your VMs. Azure Advisor illustra come seguire le procedure consigliate per ottimizzare le distribuzioni di Azure.Azure Advisor helps you follow best practices to optimize your Azure deployments. Analizza i dati di telemetria dell'uso e della configurazione delle risorse e consiglia soluzioni che consentono di migliorare l'efficienza dei costi, le prestazioni, la disponibilità elevata e la sicurezza delle risorse di Azure.It analyzes your resource configuration and usage telemetry and then recommends solutions that can help you improve the cost effectiveness, performance, high availability, and security of your Azure resources.

Accedere al portale di Azure, selezionare Altri servizi e digitare Advisor.Sign in to the Azure portal, select More services, and type Advisor. Nel dashboard di Advisor vengono visualizzate raccomandazioni personalizzate per la sottoscrizione selezionata.The Advisor dashboard displays personalized recommendations for the selected subscription. Per altre informazioni vedere Presentazione di Azure Advisor.For more information, see Get started with Azure Advisor.

Passaggi successiviNext steps

In questa esercitazione si è appreso come:In this tutorial, you learned how to:

  • Creare un set di disponibilitàCreate an availability set
  • Creare una macchina virtuale in un set di disponibilitàCreate a VM in an availability set
  • Controllare le dimensioni delle macchine virtuali disponibiliCheck available VM sizes
  • Selezionare Azure AdvisorCheck Azure Advisor

Passare all'esercitazione successiva per informazioni sui set di scalabilità di macchine virtuali.Advance to the next tutorial to learn about virtual machine scale sets.