Reserva de IPs en Microsoft Azure

Una de las nuevas características que se anunció recientemente es la posibilidad de reservar IP públicas para los servicios de computación (Cloud Services y Virtual Machines) en la plataforma Microsoft Azure.

VIP Reservation

En el post sobre la parada de las máquinas virtuales se comentaba que cuando todas las máquinas alojadas dentro de un cloud service se paraban, es decir que pasaban a un estado Stopped (Deallocated), la IP pública se perdía. Con la reserva de IPs podremos mantener de manera gratuita hasta 5 IPs por suscripción (Más información sobre precios aquí). Estas reservas pertenecen a la suscripción, no a un Cloud Service en particular, lo cual quiere decir que si eliminamos el Cloud Service, ya sean Web/Worker roles o VM, la reserva no se perderá.

Reserva de IPs

Para realizar la reserva de una IP, a día de hoy es necesario hacer uso Windows Azure PowerShell.

$ReservedIP = "FTPServerIP"

New-AzureReservedIP -ReservedIPName $ReservedIP -Label $ReservedIP -Location "North Europe"

Básicamente lo único que debemos elegir para la reserva es un nombre identificativo y la localización (debe estar en el mismo datacenter que el servicio que la va a utilizar). Una vez confirmada la misma, ya podremos hacer uso de ella para un Cloud Service que aloje Web/Worker roles o máquinas virtuales.

Asociar a máquinas virtuales

En el caso de las máquinas virtuales, durante la creación de la primera de ellas (puedes ver más información sobre la creación de VMs desde PowerShell en este otro post) podemos añadir la IP reservada anteriormente, a través del parámetro -ReservedIPName:

$image = (Get-AzureVMImage | Where-Object {$_.Label -like "Windows Server 2012 Datacenter, June 2014"}).ImageName
$adminUserName = "gis"
$pwd = "Passw0rd!"
$serviceName = "myfarmscv"
$location = "North Europe"
$vm = "mygisvm2"

New-AzureVMConfig -Name $vm -InstanceSize Small -ImageName $image  |
Add-AzureProvisioningConfig -windows -AdminUsername $adminUserName -Password $pwd |
New-AzureVM -ServiceName $serviceName -Location $location -ReservedIPName $ReservedIP

Asociar a un Cloud Service con Web/Worker roles

Si queremos asociar una IP ya reservada a un despliegue de Web/Worker roles, basta con indicar el nombre elegido en el archivo ServiceConfiguration, en el apartado NetworkConfiguration:

  <NetworkConfiguration>
    <AddressAssignments>
      <ReservedIPs>
        <ReservedIP name="WebServerIP"/>
      </ReservedIPs>
    </AddressAssignments>
  </NetworkConfiguration>

IPs reservadas

Para comprobar el listado de IPs que tenemos reservadas para una suscripción, podemos hacer uso del comando Get-AzureReservedIP.

Get-AzureReservedIP

También podemos recuperar únicamente una reserva, si utilizamos el parámetro -ReservedIPName:

Get-AzureReservedIP -ReservedIPName "FTPServerIP"

Si comprobamos un servicio desplegado en Azure que tenga una de las IPs asociadas, comprobaremos que efectivamente ha tomado dicha IP como pública:

quick glance reserved ip

A partir de ahora, podremos apagar todas las máquinas ubicadas en el mismo Cloud Service, con el fin de ahorrar costes, sin necesidad de perder la IP pública que teníamos asignada.

Eliminar una reserva de IP

Si quisiéramos eliminar una de las reservas, debemos utilizar Remove-AzureReservedIP seguido del nombre que le dimos a la misma.

Remove-AzureReservedIP FTPServerIP

Espero que sea de utilidad.

¡Saludos!