Creare una macchina virtuale (classica) con più schede di interfaccia di rete usando PowerShell
È possibile creare macchine virtuali (VM) in Azure e collegare più interfacce di rete (NIC) a ciascuna delle macchine virtuali. Più schede di interfaccia rete consentono la separazione dei tipi di traffico tra schede di interfaccia di rete. 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. 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.
Importante
Azure offre due modelli di distribuzione diversi per creare e usare le risorse: Resource Manager e distribuzione classica. Questo articolo illustra l'uso del modello di distribuzione classica. Microsoft consiglia di usare il modello di Gestione risorse per le distribuzioni più recenti. Informazioni su come eseguire questi passaggi usando il modello di distribuzione Resource Manager.
In questo documento verrà illustrata una distribuzione che usa più schede di rete nelle macchine virtuali in uno scenario specifico. In questo scenario, si ha a disposizione un carico di lavoro IaaS a due livelli ospitato in Azure. Ogni livello viene distribuito nella propria subnet in una rete virtuale (VNet). Il livello di front-end è costituito da diversi server web, raggruppati in un bilanciamento del carico impostato per una disponibilità elevata. Il livello di back-end è costituito da più server di database. I server di database verranno distribuiti con due schede di rete, una per l'accesso al database, l'altra per la gestione. 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. Nella figura seguente viene illustrata l'architettura di base di questo scenario.
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.
Prima di creare i server di database, è necessario creare il gruppo di risorse IaaSStory con tutte le risorse richieste per questo scenario. Per creare le risorse, seguire questa procedura. Creare una rete virtuale seguendo la procedura riportata nell'articolo Creare una rete virtuale.
Per eseguire i passaggi indicati in questo articolo, è necessario installare e configurare il modulo Azure PowerShell. Assicurarsi di completare tutte le istruzioni. Al termine dell'installazione, accedere ad Azure e selezionare la sottoscrizione.
Nota
Per completare questi passaggi, è necessario un account Azure. Se non si ha un account Azure, è possibile iscriversi per una versione di valutazione gratuita.
Le macchine virtuali di back-end dipendono dalla creazione delle risorse seguenti:
- Subnet back-end. I server del database formeranno parte di una subnet distinta, per separare il traffico. Lo script seguente prevede che questa subnet sia presente in una rete virtuale denominata WTestVnet.
- Account di archiviazione per dischi dati. 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. Verificare la posizione di Azure che viene distribuita per supportare l'archiviazione premium.
- Set di disponibilità. 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.
È possibile scaricare lo script di PowerShell completo utilizzato qui. Attenersi alla procedura seguente per modificare lo script da usare nell'ambiente.
Modificare i valori delle variabili indicate di seguito in base al gruppo di risorse esistente distribuito in precedenza in Prerequisiti.
$location = "West US" $vnetName = "WTestVNet" $backendSubnetName = "BackEnd"
Modificare i valori delle variabili indicate di seguito in base ai valori che si desidera usare per la distribuzione di back-end.
$backendCSName = "IaaSStory-Backend" $prmStorageAccountName = "iaasstoryprmstorage" $avSetName = "ASDB" $vmSize = "Standard_DS3" $diskSize = 127 $vmNamePrefix = "DB" $dataDiskSuffix = "datadisk" $ipAddressPrefix = "192.168.2." $numberOfVMs = 2
È necessario creare un nuovo servizio cloud e un account di archiviazione per i dischi di dati per tutte le macchine virtuali. È inoltre necessario specificare un'immagine e un account amministratore locale per le macchine virtuali. Per creare le risorse, seguire questa procedura:
Creare un nuovo servizio cloud
New-AzureService -ServiceName $backendCSName -Location $location
Creare un account di archiviazione premium
New-AzureStorageAccount -StorageAccountName $prmStorageAccountName ` -Location $location -Type Premium_LRS
Impostare l'account di archiviazione creato in precedenza come account di archiviazione corrente per la sottoscrizione.
$subscription = Get-AzureSubscription | where {$_.IsCurrent -eq $true} Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName ` -CurrentStorageAccountName $prmStorageAccountName
Selezionare un'immagine per la macchina virtuale.
$image = Get-AzureVMImage ` | where{$_.ImageFamily -eq "SQL Server 2014 RTM Web on Windows Server 2012 R2"} ` | sort PublishedDate -Descending ` | select -ExpandProperty ImageName -First 1
Impostare le credenziali dell'account amministratore locale
$cred = Get-Credential -Message "Enter username and password for local admin account"
È 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. Per creare le schede di rete e le macchine virtuali, eseguire questa procedura.
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.for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
Creare un
VMConfig
oggetto che specifica l'immagine, le dimensioni e il set di disponibilità per la macchina virtuale.$vmName = $vmNamePrefix + $suffixNumber $vmConfig = New-AzureVMConfig -Name $vmName ` -ImageName $image ` -InstanceSize $vmSize ` -AvailabilitySetName $avSetName
Eseguire il provisioning della macchina virtuale come macchina virtuale di Windows.
Add-AzureProvisioningConfig -VM $vmConfig -Windows ` -AdminUsername $cred.UserName ` -Password $cred.GetNetworkCredential().Password
Impostare il valore predefinito NIC e assegnare un indirizzo IP statico.
Set-AzureSubnet -SubnetNames $backendSubnetName -VM $vmConfig Set-AzureStaticVNetIP -IPAddress ($ipAddressPrefix+$suffixNumber+3) -VM $vmConfig
Aggiungere una seconda scheda di rete per ogni macchina virtuale.
Add-AzureNetworkInterfaceConfig -Name ("RemoteAccessNIC"+$suffixNumber) ` -SubnetName $backendSubnetName ` -StaticVNetIPAddress ($ipAddressPrefix+(53+$suffixNumber)) ` -VM $vmConfig
Creare dischi di dati per ogni macchina virtuale.
$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
Creare ogni macchina virtuale e terminare il ciclo.
New-AzureVM -VM $vmConfig ` -ServiceName $backendCSName ` -Location $location ` -VNetName $vnetName }
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.
Salvare lo script ed eseguirlo dal prompt dei comandi PowerShell o PowerShell ISE. Verrà visualizzato l'output iniziale, come illustrato di seguito.
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'.
Compilare le informazioni necessarie nella richiesta di credenziali e fare clic su OK. Viene restituito l'output seguente.
New-AzureVM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded New-AzureVM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
Azure DHCP assegna un gateway predefinito alla prima interfaccia di rete (primaria) associata alla macchina virtuale. Azure non assegna un gateway predefinito ad altre interfacce di rete (secondarie) associate a una macchina virtuale. Di conseguenza, per impostazione predefinita, non è possibile comunicare con risorse esterne alla subnet in cui si trova un'interfaccia di rete secondaria. Le interfacce di rete secondarie possono tuttavia comunicare con risorse esterne alla loro subnet. Per configurare il routing per le interfacce di rete secondarie, vedere gli articoli seguenti: