Creare e gestire una macchina virtuale Windows che ha più schede di interfaccia di reteCreate and manage a Windows virtual machine that has multiple NICs

Alle macchine virtuali (VM) in Azure possono essere collegate più schede di interfaccia di rete virtuale.Virtual machines (VMs) in Azure can have multiple virtual network interface cards (NICs) attached to them. Uno scenario comune è quello di avere subnet diverse per la connettività front-end e back-end oppure una rete dedicata a una soluzione di monitoraggio o backup.A common scenario is to have different subnets for front-end and back-end connectivity, or a network dedicated to a monitoring or backup solution. Questo articolo illustra come creare una macchina virtuale a cui sono collegate più schede di interfaccia di reteThis article details how to create a VM that has multiple NICs attached to it. e come aggiungere o rimuovere le schede di interfaccia di rete da una VM esistente.You also learn how to add or remove NICs from an existing VM. Le differenti dimensioni della macchina virtuale supportano un numero variabile di schede di rete, pertanto scegliere le dimensioni della macchina virtuale di conseguenza.Different VM sizes support a varying number of NICs, so size your VM accordingly.

PrerequisitiPrerequisites

Verificare di aver prima installato e configurato la versione più recente di Azure PowerShell.Make sure that you have the latest Azure PowerShell version installed and configured.

Nell'esempio seguente sostituire i nomi dei parametri di esempio con i valori desiderati.In the following examples, replace example parameter names with your own values. I nomi dei parametri di esempio includono myResourceGroup, myVnet e myVM.Example parameter names include myResourceGroup, myVnet, and myVM.

Creare una macchina virtuale con più NICCreate a VM with multiple NICs

Creare prima un gruppo di risorse.First, create a resource group. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località EastUs:The following example creates a resource group named myResourceGroup in the EastUs location:

New-AzureRmResourceGroup -Name "myResourceGroup" -Location "EastUS"

Creare la rete virtuale e le subnetCreate virtual network and subnets

Negli scenari comuni una rete virtuale ha due o più subnet.A common scenario is for a virtual network to have two or more subnets. Una subnet può essere dedicata al traffico front-end e l'altra al traffico back-end.One subnet may be for front-end traffic, the other for back-end traffic. Per connettersi a entrambe le subnet, si usano quindi più schede di interfaccia di rete nella VM.To connect to both subnets, you then use multiple NICs on your VM.

  1. Definire due subnet della rete virtuale con New-AzureRmVirtualNetworkSubnetConfig.Define two virtual network subnets with New-AzureRmVirtualNetworkSubnetConfig. L'esempio seguente definisce le subnet per mySubnetFrontEnd e mySubnetBackEnd:The following example defines the subnets for mySubnetFrontEnd and mySubnetBackEnd:

    $mySubnetFrontEnd = New-AzureRmVirtualNetworkSubnetConfig -Name "mySubnetFrontEnd" `
        -AddressPrefix "192.168.1.0/24"
    $mySubnetBackEnd = New-AzureRmVirtualNetworkSubnetConfig -Name "mySubnetBackEnd" `
        -AddressPrefix "192.168.2.0/24"
    
  2. Creare la rete virtuale e le subnet con New-AzureRmVirtualNetwork.Create your virtual network and subnets with New-AzureRmVirtualNetwork. L'esempio seguente crea una rete virtuale denominata myVnet:The following example creates a virtual network named myVnet:

    $myVnet = New-AzureRmVirtualNetwork -ResourceGroupName "myResourceGroup" `
        -Location "EastUs" `
        -Name "myVnet" `
        -AddressPrefix "192.168.0.0/16" `
        -Subnet $mySubnetFrontEnd,$mySubnetBackEnd
    

Creare più schede di reteCreate multiple NICs

Creare due schede di interfaccia di rete con New AzureRmNetworkInterface.Create two NICs with New-AzureRmNetworkInterface. Collegare una scheda di interfaccia di rete alla subnet front-end e l'altra alla subnet back-end.Attach one NIC to the front-end subnet and one NIC to the back-end subnet. L'esempio seguente crea le schede di interfaccia di rete denominate myNic1 e myNic2:The following example creates NICs named myNic1 and myNic2:

$frontEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetFrontEnd'}
$myNic1 = New-AzureRmNetworkInterface -ResourceGroupName "myResourceGroup" `
    -Name "myNic1" `
    -Location "EastUs" `
    -SubnetId $frontEnd.Id

$backEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetBackEnd'}
$myNic2 = New-AzureRmNetworkInterface -ResourceGroupName "myResourceGroup" `
    -Name "myNic2" `
    -Location "EastUs" `
    -SubnetId $backEnd.Id

In genere si crea anche un gruppo di sicurezza di rete per filtrare il traffico di rete alla macchina virtuale e un bilanciamento del carico per distribuire il traffico tra più macchine virtuali.Typically you also create a network security group to filter network traffic to the VM and a load balancer to distribute traffic across multiple VMs.

Creare la macchina virtualeCreate the virtual machine

Ora è possibile iniziare con la configurazione della macchina virtuale.Now start to build your VM configuration. Ad ogni dimensione della macchina virtuale corrisponde un limite del numero totale di schede di rete che è possibile aggiungere.Each VM size has a limit for the total number of NICs that you can add to a VM. Per altre informazioni, vedere Dimensioni delle macchine virtuali in Azure.For more information, see Windows VM sizes.

  1. Impostare le credenziali della VM sulla variabile $cred come indicato di seguito:Set your VM credentials to the $cred variable as follows:

    $cred = Get-Credential
    
  2. Definire la VM con New-AzureRmVMConfig.Define your VM with New-AzureRmVMConfig. L'esempio seguente definisce una VM denominata myVM e usa una dimensione della VM che supporta fino a due schede di interfaccia di rete (Standard_DS3_v2):The following example defines a VM named myVM and uses a VM size that supports more than two NICs (Standard_DS3_v2):

    $vmConfig = New-AzureRmVMConfig -VMName "myVM" -VMSize "Standard_DS3_v2"
    
  3. Creare il resto della configurazione della VM con Set-AzureRmVMOperatingSystem e Set-AzureRmVMSourceImage.Create the rest of your VM configuration with Set-AzureRmVMOperatingSystem and Set-AzureRmVMSourceImage. L'esempio seguente crea una VM Windows Server 2016:The following example creates a Windows Server 2016 VM:

    $vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig `
        -Windows `
        -ComputerName "myVM" `
        -Credential $cred `
        -ProvisionVMAgent `
        -EnableAutoUpdate
    $vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig `
        -PublisherName "MicrosoftWindowsServer" `
        -Offer "WindowsServer" `
        -Skus "2016-Datacenter" `
        -Version "latest"
    
  4. Collegare le due schede di interfaccia di rete create prima con Add-AzureRmVMNetworkInterface:Attach the two NICs that you previously created with Add-AzureRmVMNetworkInterface:

    $vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $myNic1.Id -Primary
    $vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $myNic2.Id
    
  5. Creare infine la VM con New-AzureRmVM:Finally, create your VM with New-AzureRmVM:

    New-AzureRmVM -VM $vmConfig -ResourceGroupName "myResourceGroup" -Location "EastUs"
    

Aggiungere una scheda di interfaccia di rete a una VM esistenteAdd a NIC to an existing VM

Per aggiungere una scheda di interfaccia di rete virtuale a una VM esistente, si dealloca la VM, si aggiunge la scheda di interfaccia di rete virtuale, quindi si avvia la VM.To add a virtual NIC to an existing VM, you deallocate the VM, add the virtual NIC, then start the VM. Le differenti dimensioni della macchina virtuale supportano un numero variabile di schede di rete, pertanto scegliere le dimensioni della macchina virtuale di conseguenza.Different VM sizes support a varying number of NICs, so size your VM accordingly. Se necessario, è possibile ridimensionare una VM.If needed, you can resize a VM.

  1. Deallocare la VM con Stop-AzureRmVM.Deallocate the VM with Stop-AzureRmVM. L'esempio seguente dealloca la VM denominata myVM in myResourceGroup:The following example deallocates the VM named myVM in myResourceGroup:

    Stop-AzureRmVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Ottenere la configurazione esistente della VM con Get-AzureRmVm.Get the existing configuration of the VM with Get-AzureRmVm. L'esempio seguente ottiene le informazioni relative alla macchina virtuale denominata myVM in myResourceGroup:The following example gets information for the VM named myVM in myResourceGroup:

    $vm = Get-AzureRmVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. L'esempio seguente crea una scheda di interfaccia di rete virtuale con New-AzureRmNetworkInterface, denominata myNic3 e collegata mySubnetBackEnd.The following example creates a virtual NIC with New-AzureRmNetworkInterface named myNic3 that is attached to mySubnetBackEnd. La scheda di interfaccia di rete virtuale viene quindi collegata alla VM denominata myVM in myResourceGroup con Add-AzureRmVMNetworkInterface:The virtual NIC is then attached to the VM named myVM in myResourceGroup with Add-AzureRmVMNetworkInterface:

    # Get info for the back end subnet
    $myVnet = Get-AzureRmVirtualNetwork -Name "myVnet" -ResourceGroupName "myResourceGroup"
    $backEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetBackEnd'}
    
    # Create a virtual NIC
    $myNic3 = New-AzureRmNetworkInterface -ResourceGroupName "myResourceGroup" `
        -Name "myNic3" `
        -Location "EastUs" `
        -SubnetId $backEnd.Id
    
    # Get the ID of the new virtual NIC and add to VM
    $nicId = (Get-AzureRmNetworkInterface -ResourceGroupName "myResourceGroup" -Name "MyNic3").Id
    Add-AzureRmVMNetworkInterface -VM $vm -Id $nicId | Update-AzureRmVm -ResourceGroupName "myResourceGroup"
    

    Schede di interfaccia di rete virtuale primariePrimary virtual NICs

    Una delle schede di interfaccia di rete in una VM con più schede di interfaccia di rete deve essere primaria.One of the NICs on a multi-NIC VM needs to be primary. Se una delle schede di interfaccia di rete virtuale esistenti nella VM è già impostata come primaria, è possibile saltare questo passaggio.If one of the existing virtual NICs on the VM is already set as primary, you can skip this step. L'esempio seguente presuppone che due schede di interfaccia di rete virtuale siano ora presenti in una VM e che si voglia aggiungere la prima scheda di interfaccia di rete ([0]) come primaria:The following example assumes that two virtual NICs are now present on a VM and you wish to add the first NIC ([0]) as the primary:

    # List existing NICs on the VM and find which one is primary
    $vm.NetworkProfile.NetworkInterfaces
    
    # Set NIC 0 to be primary
    $vm.NetworkProfile.NetworkInterfaces[0].Primary = $true
    $vm.NetworkProfile.NetworkInterfaces[1].Primary = $false
    
    # Update the VM state in Azure
    Update-AzureRmVM -VM $vm -ResourceGroupName "myResourceGroup"
    
  4. Avviare la VM con Start-AzureRmVm:Start the VM with Start-AzureRmVm:

    Start-AzureRmVM -ResourceGroupName "myResourceGroup" -Name "myVM"
    

Rimuovere una scheda di interfaccia di rete da una VM esistenteRemove a NIC from an existing VM

Per rimuovere una scheda di interfaccia di rete virtuale da una VM esistente, si dealloca la VM, si rimuove la scheda di interfaccia di rete virtuale, quindi si avvia la VM.To remove a virtual NIC from an existing VM, you deallocate the VM, remove the virtual NIC, then start the VM.

  1. Deallocare la VM con Stop-AzureRmVM.Deallocate the VM with Stop-AzureRmVM. L'esempio seguente dealloca la VM denominata myVM in myResourceGroup:The following example deallocates the VM named myVM in myResourceGroup:

    Stop-AzureRmVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Ottenere la configurazione esistente della VM con Get-AzureRmVm.Get the existing configuration of the VM with Get-AzureRmVm. L'esempio seguente ottiene le informazioni relative alla macchina virtuale denominata myVM in myResourceGroup:The following example gets information for the VM named myVM in myResourceGroup:

    $vm = Get-AzureRmVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. Ottenere informazioni sulla rimozione della scheda di interfaccia di rete con Get-AzureRmNetworkInterface.Get information about the NIC remove with Get-AzureRmNetworkInterface. L'esempio seguente ottiene informazioni su myNic3:The following example gets information about myNic3:

    # List existing NICs on the VM if you need to determine NIC name
    $vm.NetworkProfile.NetworkInterfaces
    
    $nicId = (Get-AzureRmNetworkInterface -ResourceGroupName "myResourceGroup" -Name "myNic3").Id   
    
  4. Rimuovere la scheda di interfaccia di rete con Remove-AzureRmVMNetworkInterface e quindi aggiornare la VM con Update-AzureRmVm.Remove the NIC with Remove-AzureRmVMNetworkInterface and then update the VM with Update-AzureRmVm. L'esempio seguente rimuove myNic3 ottenuta da $nicId nel passaggio precedente:The following example removes myNic3 as obtained by $nicId in the preceding step:

    Remove-AzureRmVMNetworkInterface -VM $vm -NetworkInterfaceIDs $nicId | `
        Update-AzureRmVm -ResourceGroupName "myResourceGroup"
    
  5. Avviare la VM con Start-AzureRmVm:Start the VM with Start-AzureRmVm:

    Start-AzureRmVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    

Creare più schede di interfaccia di rete con i modelliCreate multiple NICs with templates

I modelli di Azure Resource Manager offrono un modo di creare più istanze di una risorsa durante la distribuzione, come ad esempio la creazione di più schede di interfaccia di rete.Azure Resource Manager templates provide a way to create multiple instances of a resource during deployment, such as creating multiple NICs. I modelli di Resource Manager usano i file JSON dichiarativi per definire l'ambiente.Resource Manager templates use declarative JSON files to define your environment. Per altre informazioni, vedere Panoramica di Azure Resource Manager.For more information, see overview of Azure Resource Manager. È possibile usare copy per specificare il numero di istanze da creare:You can use copy to specify the number of instances to create:

"copy": {
    "name": "multiplenics",
    "count": "[parameters('count')]"
}

Per altre informazioni, vedere Creazione di più istanze con copy.For more information, see creating multiple instances by using copy.

È anche possibile usare copyIndex() per aggiungere un numero a un nome di risorsa.You can also use copyIndex() to append a number to a resource name. È quindi possibile creare myNic1, MyNic2 e così via.You can then create myNic1, MyNic2 and so on. Il codice seguente illustra un esempio di aggiunta del valore di indice:The following code shows an example of appending the index value:

"name": "[concat('myNic', copyIndex())]", 

È possibile consultare un esempio completo di creazione di più schede di interfaccia di rete tramite i modelli di Resource Manager.You can read a complete example of creating multiple NICs by using Resource Manager templates.

Passaggi successiviNext steps

Vedere Dimensioni per le macchine virtuali Windows se si deve creare una VM con più schede di interfacce di rete.Review Windows VM sizes when you're trying to create a VM that has multiple NICs. Prestare attenzione al numero massimo di schede di interfaccia di rete supportato per ogni dimensione della macchina virtuale.Pay attention to the maximum number of NICs that each VM size supports.