При использовании виртуальных машин Microsoft Azure по схеме IaaS, с целью экономии средств неиспользуемые ВМ можно выключать. При выключении, виртуальная машина Azure может находится в одном из двух режимов.
- Stopped (StayProvisioned)
- Stopped (Deallocated)
При выключении ВМ из гостевой ОС, или с помощью командлета Stop-AzureVM с параметром StayProvisioned , она выключается в режиме StayProvisioned. Все виртуальные устройства и ресурсы, выданные ВМ, остаются презентованными ей (в том числе сетевая карта).
Stop-AzureVM -ServiceName "Service1" -Name "VM1" -StayProvisioned
В таком режиме, IP адрес машины, выданный ей DHCP сервером будет назначен ей при следующем включении. В общем все здорово, если бы ресурсы ВМ в выключенном состоянии не продолжали бы учитываться биллингом Azure.
Если выключить ВМ с помощью кнопки SHUT DOWN в портале Azure или с помощью командлета Stop-AzureVM без ключа StayProvisioned, она перейдет в состояние Deallocated.
Stop-AzureVM -ServiceName "myservice1" -Name "MyVM"
В таком случае, ресурсы ВМ не резервируются и возвращаются в фабрику Azure и не учитываются биллингом. При включении такой ВМ, все ресурсы (в том числе сетевая карта), назначаются ей заново, а сама ВМ получает новый IP адрес.
В релизе командлетов PowerShell для Windows Azure (0.7.3 от 12 февраля 2014), появилась возможность закрепить за ВМ статический IP адрес. Таким образом, после включения ВМ из состояния Deallocated, она получит ранее назначенный IP адрес.
Проверим, не используется ли данный IP в текущий подсети.
Test-AzureStaticVNetIP -VNetName "My Virtual Network" -IPAddress 10.0.1.8
Назначим ВМ статический IP адрес:
Get-AzureVM -ServiceName Service1-Name MyVM | Set-AzureStaticVNetIP -IPAddress 10.0.1.8| Update-AzureVM
Удалить статический IP адрес:
Get-AzureVM -ServiceName Service1 -Name MyVM | Remove-AzureStaticVNetIP | Update-AzureVM
Следующая команда PowerShell выведет список ВМ и закреплённых за ними статическими IP адресами:
Get-AzureVM | Select-Object -Property Name, ServiceName, @{Name='ReservedIP';Expression={(Get-AzureStaticVNetIP -VM $_ ).IPAddress}} | Format-Table -AutoSize