Creare una macchina virtuale (classica) con più schede di interfaccia di rete usando PowerShellCreate a VM (Classic) with multiple NICs using PowerShell

È possibile creare macchine virtuali (VM) in Azure e collegare più interfacce di rete (NIC) a ciascuna delle macchine virtuali.You can create virtual machines (VMs) in Azure and attach multiple network interfaces (NICs) to each of your VMs. Più schede di interfaccia rete consentono la separazione dei tipi di traffico tra schede di interfaccia di rete.Multiple NICs enable separation of traffic types across NICs. Ad esempio, una scheda di interfaccia di rete può comunicare con Internet, mentre un'altra comunica solo con le risorse interne non connesse a Internet.For example, one NIC might communicate with the Internet, while another communicates only with internal resources not connected to the Internet. La possibilità di separare il traffico di rete tra più schede di interfaccia di rete è necessaria per molte appliance virtuali di rete, ad esempio soluzioni di ottimizzazione WAN e di distribuzione delle applicazioni.The ability to separate network traffic across multiple NICs is required for many network virtual appliances, such as application delivery and WAN optimization solutions.

Importante

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and classic. Questo articolo illustra l'uso del modello di distribuzione classica.This article covers using the classic deployment model. Microsoft consiglia di usare il modello di Gestione risorse per le distribuzioni più recenti.Microsoft recommends that most new deployments use the Resource Manager model. Informazioni su come seguire questa procedura con il modello di distribuzione Resource Manager.Learn how to perform these steps using the Resource Manager deployment model.

ScenarioScenario

In questo documento verrà illustrata una distribuzione che usa più schede di rete nelle macchine virtuali in uno scenario specifico.This document will walk through a deployment that uses multiple NICs in VMs in a specific scenario. In questo scenario, si ha a disposizione un carico di lavoro IaaS a due livelli ospitato in Azure.In this scenario, you have a two-tiered IaaS workload hosted in Azure. Ogni livello viene distribuito nella propria subnet in una rete virtuale (VNet).Each tier is deployed in its own subnet in a virtual network (VNet). Il livello di front-end è costituito da diversi server web, raggruppati in un bilanciamento del carico impostato per una disponibilità elevata.The front end tier is composed of several web servers, grouped together in a load balancer set for high availability. Il livello di back-end è costituito da più server di database.The back end tier is composed of several database servers. Questi server di database verranno distribuiti con due schede di rete, una per l'accesso al database, l'altra per la gestione.These database servers will be deployed with two NICs each, one for database access, the other for management. Lo scenario include anche i gruppi di sicurezza di rete (NSGs) per controllare quale traffico è consentito per ogni subnet, e la scheda di rete nella distribuzione.The scenario also includes Network Security Groups (NSGs) to control what traffic is allowed to each subnet, and NIC in the deployment. Nella figura seguente viene illustrata l'architettura di base di questo scenario.The figure below shows the basic architecture of this scenario.

Scenario MultiNIC

La procedura seguente usa un gruppo di risorse denominato IaaSStory per i server Web e un gruppo di risorse denominato IaaSStory-BackEnd per i server di database.The following steps use a resource group named IaaSStory for the WEB servers and a resource group named IaaSStory-BackEnd for the DB servers.

PrerequisitiPrerequisites

Prima di creare i server di database, è necessario creare il gruppo di risorse IaaSStory con tutte le risorse richieste per questo scenario.Before you can create the DB servers, you need to create the IaaSStory resource group with all the necessary resources for this scenario. Per creare le risorse, seguire questa procedura.To create these resources, complete the steps that follow. Creare una rete virtuale seguendo la procedura riportata nell'articolo Creare una rete virtuale.Create a virtual network by following the steps in the Create a virtual network article.

Prerequisito: installare il modulo Azure PowerShellPrerequisite: Install the Azure PowerShell module

Per eseguire i passaggi indicati in questo articolo, è necessario installare e configurare il modulo Azure PowerShell.To perform the steps in this article, you need to install and configure the Azure PowerShell module. Assicurarsi di completare tutte le istruzioni.Be sure to complete all of the instructions. Al termine dell'installazione, accedere ad Azure e selezionare la sottoscrizione.After the installation is finished, sign in to Azure and select your subscription.

Nota

Per completare questi passaggi, è necessario un account Azure.You need an Azure account to complete these steps. Se non si ha un account Azure, è possibile iscriversi per ottenere una versione di valutazione gratuita.If you don't have an Azure account, you can sign up for a free trial.

Creare le macchine virtuali di back-endCreate the back-end VMs

Le macchine virtuali di back-end dipendono dalla creazione delle risorse seguenti:The back-end VMs depend on the creation of the following resources:

  • Subnet Back-end.Backend subnet. I server del database formeranno parte di una subnet distinta, per separare il traffico.The database servers will be part of a separate subnet, to segregate traffic. Lo script seguente prevede che questa subnet sia presente in una rete virtuale denominata WTestVnet.The script below expects this subnet to exist in a vnet named WTestVnet.
  • Account di archiviazione per dischi dati.Storage account for data disks. Per migliorare le prestazioni, i dischi dati sui server di database utilizzano la tecnologia SSD (Solid State Drive), che richiede un account di archiviazione premium.For better performance, the data disks on the database servers will use solid state drive (SSD) technology, which requires a premium storage account. Verificare la posizione di Azure che viene distribuita per supportare l'archiviazione premium.Make sure the Azure location you deploy to support premium storage.
  • Set di disponibilità.Availability set. Tutti i server di database vengono aggiunti a un singolo set di disponibilità, per garantire che almeno una delle macchine virtuali sia attiva e in esecuzione durante la manutenzione.All database servers will be added to a single availability set, to ensure at least one of the VMs is up and running during maintenance.

Passaggio 1 - avviare lo scriptStep 1 - Start your script

È possibile scaricare lo script di PowerShell completo utilizzato qui.You can download the full PowerShell script used here. Attenersi alla procedura seguente per modificare lo script da usare nell'ambiente.Follow the steps below to change the script to work in your environment.

  1. Modificare i valori delle variabili indicate di seguito in base al gruppo di risorse esistente distribuito in precedenza in Prerequisiti.Change the values of the variables below based on your existing resource group deployed above in Prerequisites.

    $location              = "West US"
    $vnetName              = "WTestVNet"
    $backendSubnetName     = "BackEnd"
    
  2. Modificare i valori delle variabili indicate di seguito in base ai valori che si desidera usare per la distribuzione di back-end.Change the values of the variables below based on the values you want to use for your backend deployment.

    $backendCSName         = "IaaSStory-Backend"
    $prmStorageAccountName = "iaasstoryprmstorage"
    $avSetName             = "ASDB"
    $vmSize                = "Standard_DS3"
    $diskSize              = 127
    $vmNamePrefix          = "DB"
    $dataDiskSuffix        = "datadisk"
    $ipAddressPrefix       = "192.168.2."
    $numberOfVMs           = 2
    

Passaggio 2 - creare le risorse necessarie per le macchine virtualiStep 2 - Create necessary resources for your VMs

È necessario creare un nuovo servizio cloud e un account di archiviazione per i dischi di dati per tutte le macchine virtuali.You need to create a new cloud service and a storage account for the data disks for all VMs. È inoltre necessario specificare un'immagine e un account amministratore locale per le macchine virtuali.You also need to specify an image, and a local administrator account for the VMs. Per creare le risorse, seguire questa procedura:To create these resources, complete the following steps:

  1. Creare un nuovo servizio cloudCreate a new cloud service.

    New-AzureService -ServiceName $backendCSName -Location $location
    
  2. Creare un account di archiviazione premiumCreate a new premium storage account.

    New-AzureStorageAccount -StorageAccountName $prmStorageAccountName `
    -Location $location -Type Premium_LRS
    
  3. Impostare l'account di archiviazione creato in precedenza come account di archiviazione corrente per la sottoscrizione.Set the storage account created above as the current storage account for your subscription.

    $subscription = Get-AzureSubscription | where {$_.IsCurrent -eq $true}  
    Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName `
    -CurrentStorageAccountName $prmStorageAccountName
    
  4. Selezionare un'immagine per la macchina virtuale.Select an image for the VM.

    $image = Get-AzureVMImage `
    | where{$_.ImageFamily -eq "SQL Server 2014 RTM Web on Windows Server 2012 R2"} `
    | sort PublishedDate -Descending `
    | select -ExpandProperty ImageName -First 1
    
  5. Impostare le credenziali dell'account amministratore localeSet the local administrator account credentials.

    $cred = Get-Credential -Message "Enter username and password for local admin account"
    

Passaggio 3 - creare delle macchine virtualiStep 3 - Create VMs

È necessario utilizzare un ciclo per creare tutte le macchine virtuali che si desidera e creare le schede di rete e le macchine virtuali necessarie all'interno del ciclo.You need to use a loop to create as many VMs as you want, and create the necessary NICs and VMs within the loop. Per creare le schede di rete e le macchine virtuali, eseguire questa procedura.To create the NICs and VMs, execute the following steps.

  1. Avviare un for ciclo per ripetere i comandi per la creazione di una macchina virtuale e di due schede di rete tutte le volte che lo si ritiene necessario, in base al valore della $numberOfVMs variabile.Start a for loop to repeat the commands to create a VM and two NICs as many times as necessary, based on the value of the $numberOfVMs variable.

    for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
    
  2. Creare un VMConfig oggetto che specifica l'immagine, le dimensioni e il set di disponibilità per la macchina virtuale.Create a VMConfig object specifying the image, size, and availability set for the VM.

    $vmName = $vmNamePrefix + $suffixNumber
    $vmConfig = New-AzureVMConfig -Name $vmName `
        -ImageName $image `
        -InstanceSize $vmSize `
        -AvailabilitySetName $avSetName
    
  3. Eseguire il provisioning della macchina virtuale come macchina virtuale di Windows.Provision the VM as a Windows VM.

    Add-AzureProvisioningConfig -VM $vmConfig -Windows `
        -AdminUsername $cred.UserName `
        -Password $cred.GetNetworkCredential().Password
    
  4. Impostare il valore predefinito NIC e assegnare un indirizzo IP statico.Set the default NIC and assign it a static IP address.

    Set-AzureSubnet         -SubnetNames $backendSubnetName -VM $vmConfig
    Set-AzureStaticVNetIP   -IPAddress ($ipAddressPrefix+$suffixNumber+3) -VM $vmConfig
    
  5. Aggiungere una seconda scheda di rete per ogni macchina virtuale.Add a second NIC for each VM.

    Add-AzureNetworkInterfaceConfig -Name ("RemoteAccessNIC"+$suffixNumber) `
    -SubnetName $backendSubnetName `
    -StaticVNetIPAddress ($ipAddressPrefix+(53+$suffixNumber)) `
    -VM $vmConfig
    
  6. Creare dischi di dati per ogni macchina virtuale.Create to data disks for each VM.

    $dataDisk1Name = $vmName + "-" + $dataDiskSuffix + "-1"    
    Add-AzureDataDisk -CreateNew -VM $vmConfig `
    -DiskSizeInGB $diskSize `
    -DiskLabel $dataDisk1Name `
    -LUN 0
    
    $dataDisk2Name = $vmName + "-" + $dataDiskSuffix + "-2"   
    Add-AzureDataDisk -CreateNew -VM $vmConfig `
    -DiskSizeInGB $diskSize `
    -DiskLabel $dataDisk2Name `
    -LUN 1
    
  7. Creare ogni macchina virtuale e terminare il ciclo.Create each VM, and end the loop.

    New-AzureVM -VM $vmConfig `
    -ServiceName $backendCSName `
    -Location $location `
    -VNetName $vnetName
    }
    

Passaggio 4 - eseguire lo script.Step 4 - Run the script

Una volta scaricato e modificato lo script in base alle esigenze, eseguire lo script per creare le macchine virtuali del database di back-end con più schede di rete.Now that you downloaded and changed the script based on your needs, runt the script to create the back-end database VMs with multiple NICs.

  1. Salvare lo script ed eseguirlo dal prompt dei comandi PowerShell o PowerShell ISE.Save your script and run it from the PowerShell command prompt, or PowerShell ISE. Verrà visualizzato l'output iniziale, come illustrato di seguito.You will see the initial output, as shown below.

     OperationDescription    OperationId                          OperationStatus
    
     New-AzureService        xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
     New-AzureStorageAccount xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
    
     WARNING: No deployment found in service: 'IaaSStory-Backend'.
    
  2. Compilare le informazioni necessarie nella richiesta di credenziali e fare clic su OK.Fill out the information needed in the credentials prompt and click OK. Viene restituito l'output seguente.The following output is returned.

     New-AzureVM             xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
     New-AzureVM             xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
    

Passaggio 5 - Configurare il routing all'interno del sistema operativo della VMStep 5 - Configure routing within the VM's operating system

Azure DHCP assegna un gateway predefinito alla prima interfaccia di rete (primaria) associata alla macchina virtuale.Azure DHCP assigns a default gateway to the first (primary) network interface attached to the virtual machine. Azure non assegna un gateway predefinito alle interfacce di rete (secondarie) associate a una macchina virtuale.Azure does not assign a default gateway to additional (secondary) network interfaces attached to a virtual machine. Pertanto, per impostazione predefinita, non si riesce a comunicare con le risorse all'esterno della subnet in cui si trova un'interfaccia di rete secondaria.Therefore, you are unable to communicate with resources outside the subnet that a secondary network interface is in, by default. Le interfacce di rete secondarie possono tuttavia comunicare con risorse esterne alla loro subnet.Secondary network interfaces can, however, communicate with resources outside their subnet. Per configurare il routing per le interfacce di rete secondarie, vedere Routing within a virtual machine operating system with multiple network interfaces (Routing in un sistema operativo di macchina virtuale con più interfacce di rete).To configure routing for secondary network interfaces, see Routing within a virtual machine operating system with multiple network interfaces.