Crear una VM (clásica) con varias NIC mediante PowerShell

Puede crear máquinas virtuales (VM) en Azure y asociar varias interfaces de red (NIC) a cada una de ellas. Varias NIC permiten la separación de tipos de tráfico a través de las NIC. Por ejemplo, una NIC podría comunicarse con Internet, mientras que la otra solo se comunica con los recursos internos no conectados a Internet. La capacidad de separar el tráfico de red a través de varias NIC es necesaria para muchos dispositivos virtuales de red, como la entrega de aplicaciones y soluciones para la optimización de WAN.

Importante

Azure tiene dos modelos de implementación diferentes para crear recursos y trabajar con ellos: Resource Manager y el clásico. Este artículo trata del modelo de implementación clásico. Microsoft recomienda que las implementaciones más recientes usen el modelo de Resource Manager. Aprenda a realizar estos pasos mediante el modelo de implementación de Resource Manager.

Escenario

Este documento le guiará a través de una implementación que usa varias NIC en máquinas virtuales en un escenario concreto. En este escenario, tiene una carga de trabajo de IaaS de dos niveles hospedada en Azure. Cada nivel se implementa en su propia subred de una red virtual (VNet). El nivel de front-end se compone de varios servidores web, agrupados en un equilibrador de carga de alta disponibilidad. El nivel de back-end se compone de varios servidores de bases de datos. Estos servidores de bases de datos se implementarán con dos NIC cada uno: una para el acceso a la base de datos y la otra para la administración. El escenario también incluye los grupos de seguridad de red (NSGs) para controlar qué tráfico se permite en cada subred y la NIC de la implementación. La siguiente ilustración muestra la arquitectura básica de este escenario:

Escenario de MultiNIC

En los pasos siguientes se usa un grupo de recursos denominado IaaSStory para los servidores web y un grupo de recursos denominado IaaSStory-BackEnd para los servidores de base de datos.

Requisitos previos

Antes de crear los servidores de base de datos, necesita crear el grupo de recursos IaaSStory con todos los recursos necesarios para este escenario. Para crear estos recursos, complete los pasos siguientes. Cree una red virtual siguiendo los pasos del artículo Create a virtual network (Crear una red virtual).

Requisito previo: instalar el módulo de Azure PowerShell

Para seguir los pasos de este artículo, es preciso instalar y configurar el módulo Azure PowerShell. Asegúrese de completar todas las instrucciones. Una vez finalizada la instalación, inicie sesión en Azure y seleccione su suscripción.

Nota

Para completar estos pasos, tiene que tener una cuenta de Azure. Si no tiene una cuenta de Azure, puede registrarse para obtener una evaluación gratuita.

Crear las máquinas virtuales back-end

Las máquinas virtuales back-end dependen de la creación de los siguientes recursos:

  • Subred de back-end. Los servidores de bases de datos formarán parte de una subred independiente para separar el tráfico. El siguiente script debe tener su subred en una red virtual denominada WTestVnet.
  • Cuenta de almacenamiento en discos de datos. Para mejorar el rendimiento, los discos de datos en los servidores de base de datos usarán la tecnología de unidad de estado sólido (SSD), que requiere una cuenta de almacenamiento Premium. Asegúrese de que la ubicación de Azure que implementa admita el almacenamiento Premium.
  • Conjunto de disponibilidad. Todos los servidores de base de datos se agregarán al conjunto de disponibilidad único para asegurarse de que al menos una de las máquinas virtuales está activa y ejecutándose durante el mantenimiento.

Paso 1: inicio del script

Puede descargar el script de PowerShell completo que ha usado aquí. Siga los pasos siguientes para cambiar el script para que funcione en su entorno.

  1. Cambie los valores de las variables siguientes en función de su grupo de recursos existente implementado anteriormente en Requisitos previos.

     $location              = "West US"
     $vnetName              = "WTestVNet"
     $backendSubnetName     = "BackEnd"
    
  2. Cambie los valores de las variables siguientes según los valores que desee usar para la implementación back-end.

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

Paso 2: creación de los recursos necesarios para las máquinas virtuales

Necesita crear un servicio en la nube y una cuenta de almacenamiento para los discos de datos de todas las VM. Asimismo, también debe especificar una imagen y una cuenta de administrador local para las máquinas virtuales. Para crear estos recursos, complete los siguientes pasos:

  1. Cree un nuevo servicio en la nube.

     New-AzureService -ServiceName $backendCSName -Location $location
    
  2. Cree una cuenta de Almacenamiento premium.

     New-AzureStorageAccount -StorageAccountName $prmStorageAccountName `
     -Location $location -Type Premium_LRS
    
  3. Establezca la cuenta de almacenamiento creada anteriormente como la cuenta de almacenamiento actual para la suscripción.

     $subscription = Get-AzureSubscription | where {$_.IsCurrent -eq $true}  
     Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName `
     -CurrentStorageAccountName $prmStorageAccountName
    
  4. Seleccione una imagen para la máquina virtual.

     $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. Establezca las credenciales de la cuenta de administrador local

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

Paso 3: crear máquinas virtuales

Debe usar un bucle para crear tantas máquinas virtuales como desee y así poder crear las NIC y las máquinas virtuales dentro del bucle. Para crear las NIC y las máquinas virtuales, realice los siguientes pasos.

  1. Inicie un bucle for para repetir los comandos que se usarán para crear una máquina virtual y dos NIC tantas veces como sea necesario, según el valor de la variable $numberOfVMs.

     for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
    
  2. Cree un objeto VMConfig especificando la imagen, el tamaño y el conjunto de disponibilidad para la máquina virtual.

     $vmName = $vmNamePrefix + $suffixNumber
     $vmConfig = New-AzureVMConfig -Name $vmName `
     	-ImageName $image `
     	-InstanceSize $vmSize `
     	-AvailabilitySetName $avSetName
    
  3. Aprovisione la máquina virtual como una máquina virtual de Windows.

     Add-AzureProvisioningConfig -VM $vmConfig -Windows `
     	-AdminUsername $cred.UserName `
     	-Password $cred.GetNetworkCredential().Password
    
  4. Establezca la NIC predeterminada y asígnela a una dirección IP estática.

     Set-AzureSubnet			-SubnetNames $backendSubnetName -VM $vmConfig
     Set-AzureStaticVNetIP 	-IPAddress ($ipAddressPrefix+$suffixNumber+3) -VM $vmConfig
    
  5. Agregue una segunda NIC para cada máquina virtual.

     Add-AzureNetworkInterfaceConfig -Name ("RemoteAccessNIC"+$suffixNumber) `
     -SubnetName $backendSubnetName `
     -StaticVNetIPAddress ($ipAddressPrefix+(53+$suffixNumber)) `
     -VM $vmConfig
    
  6. Cree dos discos de datos para cada máquina virtual.

     $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. Cree cada máquina virtual y finalice el bucle.

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

Paso 4: ejecución del script

Ahora que ha descargado y cambiado el script según sus necesidades, ejecute el script para crear las máquinas virtuales de la base de datos de back-end con varias NIC.

  1. Guarde el script y ejecútelo desde el símbolo del sistema PowerShell o desde PowerShell ISE. Verá el resultado inicial, tal como se muestra a continuación.

     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. Rellene la información necesaria cuando le soliciten las credenciales y haga clic en Aceptar. Se devuelve el siguiente resultado.

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

Paso 5: configuración del enrutamiento en el sistema operativo de la máquina virtual

Azure DHCP asigna una puerta de enlace predeterminada a la primera interfaz de red (principal) conectada a la máquina virtual. Azure no asigna una puerta de enlace predeterminada a las interfaces de red adicionales (secundarias) conectadas a una máquina virtual. Por lo tanto, de manera predeterminada, no es posible comunicarse con recursos externos a la subred en la que se encuentra una interfaz de red secundaria. Sin embargo, las interfaces de red secundarias pueden comunicarse con recursos que están fuera de su subred. Para configurar el enrutamiento para interfaces de red secundarias, vea los siguientes artículos: