En varias conversaciones sobre el estado de las máquinas en Microsoft Azure, siempre queda la duda sobre qué ocurre realmente y cuál es el sistema para evitar cargos adicionales a nuestra cuenta.
Cuando creamos una nueva máquina virtual, el estado natural es Running, con el que tenemos la máquina funcionando. Sin embargo, nos está permitido dentro de la plataforma reiniciar e incluso parar las máquinas, a través del menú inferior, desde el propio SO, PowerShell, ectétera.
En cuanto al apagado de la máquina, existen tres formas de llevarlo a cabo: a través del botón del portal, desde el propio SO de la máquina o a través de la API REST, usando por ejemplo Powershell.
Cuando hacemos clic en el botón SHUT DOWN, la VM es apagada de manera segura y desasigna los recursos asociados. Esto significa que actualmente no está haciendo uso de los recursos del datacenter, como CPU, memoria y red. En cuanto al coste por computación, en este estado no se está facturando por la máquina. Un dato importante a tener en cuenta es que cuando pasamos una máquina a un estado Stopped (Deallocated) la DIP y VIP no se mantendran.
La máquina aparecerá con el estado Stopped (Deallocated):
Y en el quick glance podremos ver que no hay asignados un host name, DIP y VIP.
Esto puede significar que la próxima vez que la máquina se inicie reciba una DIP y una VIP diferente. Para que esto se de, pueden ocurrir varios escenarios: Si hay más de una VM en un Cloud Service, la VIP se mantiene siempre y cuando haya una VM iniciada (se perderá cuando todas las VM estén apagadas en el mismo momento). La DIP se pierde cuando apagas la máquina e inicias/creas una nueva que ocupe su lugar.
Si damos la orden de apagado desde dentro del SO, la máquina se apagará pero no desasignará los recursos asociados a la misma, es decir que mantendra la misma DIP y VIP obtenidas en el último inicio y seguirá suponiendo un gasto de computación:
En este caso, como podemos comprobar en el quick glance, las IPs y el host name se mantienen para la máquina:
Un último caso, es llevar a cabo la parada del servicio desde PowerShell a través de Stop-AzureVM.
Stop-AzureVM -ServiceName "shutdowntesting" -Name "sql2014testing"
A través del comando anterior, conseguimos que el servicio pase a un estado Stopped (Deallocated). La consola nos mostrará un cuadro de diálogo de confirmación, ya que esta acción desasignará los recursos:
Si quisiéramos mantener los recursos ligados al servicio, basta con añadir la opción -StayProvisioned, con lo que la VM pasará solamente a un estado Stopped.
Stop-AzureVM -ServiceName "shutdowntesting" -Name "sql2014testing" -StayProvisioned
Actualización 01/07/2014: A día de hoy existe la posibilidad de reservar IPs públicas, evitando así la pérdida de la IP asignada cuando se paran las máquinas de un Cloud Service. Más información en el siguiente post: Reserva de IPs en Microsoft Azure.
¡Saludos!