Creare una VM (classica) con più schede di interfaccia di rete usando l'interfaccia della riga di comando 1.0 di AzureCreate a VM (Classic) with multiple NICs using the Azure CLI 1.0

È 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 l'interfaccia della riga di comando di AzurePrerequisite: Install the Azure CLI

Per eseguire i passaggi in questo articolo, è necessario installare l'interfaccia della riga di comando di Azure per Mac, Linux e Windows (interfaccia della riga di comando di Azure) ed è necessario accedere ad Azure.To perform the steps in this article, you need to install the Azure Command-Line Interface for Mac, Linux, and Windows (Azure CLI) and you need to log on to Azure.

Nota

Se non si dispone di un account Azure, è necessario procurarsene uno.If you don't have an Azure account, you need one. Usare la versione di valutazione gratuita.Go sign up for a free trial here. Inoltre, per completare l'operazione è necessario aver installato una libreria o uno strumento di analisi jq o JSON di altro tipo.In addition, to follow along completely you need to have either jq or some other JSON parsing tool or library installed.

Distribuire le macchine virtuali di back-endDeploy 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:

  • Account di archiviazione per i 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 che la posizione di Azure distribuita supporti l'archiviazione premium.Make sure the Azure location you deploy to support premium storage.
  • Schede di rete.NICs. Ogni macchina virtuale ha due schede di rete, una per l'accesso al database e una per la gestione.Each VM will have two NICs, one for database access, and one for management.
  • 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 bash completo utilizzato qui.You can download the full bash script used here. Per modificare lo script da usare nell'ambiente, seguire questa procedura:Complete the following steps 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="useast2"
    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"
    image="0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.1"
    avSetName="ASDB"
    vmSize="Standard_DS3"
    diskSize=127
    vmNamePrefix="DB"
    osDiskName="osdiskdb"
    dataDiskPrefix="db"
    dataDiskName="datadisk"
    ipAddressPrefix="192.168.2."
    username='adminuser'
    password='adminP@ssw0rd'
    numberOfVMs=2
    

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

  1. Creare un nuovo servizio cloud per tutte le macchine virtuali di back-end.Create a new cloud service for all backend VMs. Si noti l'utilizzo della $backendCSName variabile per il nome del gruppo di risorse e $location per l'area di Azure.Notice the use of the $backendCSName variable for the resource group name, and $location for the Azure region.

    azure service create --serviceName $backendCSName \
        --location $location
    
  2. Creare un account di archiviazione premium per i dischi dati e del sistema operativo da usare mediante le macchine virtuali.Create a premium storage account for the OS and data disks to be used by yours VMs.

    azure storage account create $prmStorageAccountName \
        --location $location \
        --type PLRS
    

Passaggio 3 - creare macchine virtuali con più NICStep 3 - Create VMs with multiple NICs

  1. Avviare un ciclo per creare più macchine virtuali, in base alle numberOfVMs variabili.Start a loop to create multiple VMs, based on the numberOfVMs variables.

    for ((suffixNumber=1;suffixNumber<=numberOfVMs;suffixNumber++));
    do
    
  2. Per ogni macchina virtuale, specificare il nome e l’indirizzo IP di ciascuna delle due schede di rete.For each VM, specify the name and IP address of each of the two NICs.

    nic1Name=$vmNamePrefix$suffixNumber-DA
    x=$((suffixNumber+3))
    ipAddress1=$ipAddressPrefix$x
    
    nic2Name=$vmNamePrefix$suffixNumber-RA
    x=$((suffixNumber+53))
    ipAddress2=$ipAddressPrefix$x
    
  3. Creare la macchina virtualeCreate the VM. Si noti l'utilizzo del parametro --nic-config, contenente un elenco di tutte le schede di rete con nome, subnet e indirizzo IP.Notice the usage of the --nic-config parameter, containing a list of all NICs with name, subnet, and IP address.

    azure vm create $backendCSName $image $username $password \
        --connect $backendCSName \
        --vm-name $vmNamePrefix$suffixNumber \
        --vm-size $vmSize \
        --availability-set $avSetName \
        --blob-url $prmStorageAccountName.blob.core.windows.net/vhds/$osDiskName$suffixNumber.vhd \
        --virtual-network-name $vnetName \
        --subnet-names $backendSubnetName \
        --nic-config $nic1Name:$backendSubnetName:$ipAddress1::,$nic2Name:$backendSubnetName:$ipAddress2::
    
  4. Per ogni macchina virtuale, creare due dischi dati.For each VM, create two data disks.

    azure vm disk attach-new $vmNamePrefix$suffixNumber \
        $diskSize \
        vhds/$dataDiskPrefix$suffixNumber$dataDiskName-1.vhd
    
    azure vm disk attach-new $vmNamePrefix$suffixNumber \
        $diskSize \
        vhds/$dataDiskPrefix$suffixNumber$dataDiskName-2.vhd
    done
    

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 macchine virtuali del database di back-end con più schede di rete.Now that you downloaded and changed the script based on your needs, run the script to create the back end database VMs with multiple NICs.

  1. Salvare lo script ed eseguirlo dal terminale Bash .Save your script and run it from your Bash terminal. Verrà visualizzato l'output iniziale, come illustrato di seguito.You will see the initial output, as shown below.

     info:    Executing command service create
     info:    Creating cloud service
     data:    Cloud service name IaaSStory-Backend
     info:    service create command OK
     info:    Executing command storage account create
     info:    Creating storage account
     info:    storage account create command OK
     info:    Executing command vm create
     info:    Looking up image 0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.1
     info:    Looking up virtual network
     info:    Looking up cloud service
     info:    Getting cloud service properties
     info:    Looking up deployment
     info:    Creating VM
    
  2. Dopo alcuni minuti, l'esecuzione verrà terminata e il resto dell'output verrà visualizzato come mostrato di seguito.After a few minutes, the execution will end and you will see the rest of the output as shown below.

     info:    OK
     info:    vm create command OK
     info:    Executing command vm disk attach-new
     info:    Getting virtual machines
     info:    Adding Data-Disk
     info:    vm disk attach-new command OK
     info:    Executing command vm disk attach-new
     info:    Getting virtual machines
     info:    Adding Data-Disk
     info:    vm disk attach-new command OK
     info:    Executing command vm create
     info:    Looking up image 0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.1
     info:    Looking up virtual network
     info:    Looking up cloud service
     info:    Getting cloud service properties
     info:    Looking up deployment
     info:    Creating VM
     info:    OK
     info:    vm create command OK
     info:    Executing command vm disk attach-new
     info:    Getting virtual machines
     info:    Adding Data-Disk
     info:    vm disk attach-new command OK
     info:    Executing command vm disk attach-new
     info:    Getting virtual machines
     info:    Adding Data-Disk
     info:    vm disk attach-new command OK
    

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. Di conseguenza, per impostazione predefinita, non è possibile comunicare con risorse esterne alla 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.