Azureのクラウドサービスへ固定パブリックIPアドレスを割り当て、Azure仮想マシンにStaticでPublicなIPアドレスを使ってアクセスできるようにする、Reserved IPに関して調べたので書こうと思います。
Azureの仮想マシンへのIP割り当てには色々なパターンがあります。
呼称 | 名称 | Private or Public | 割り当て対象 | 参考LINK |
---|---|---|---|---|
Reserved IP(予約済み IP) | Reserved IP Addresses | Public | Cloud Service | LINK |
ILPIP/PIP | Instance-Level Public IP | Public | VM | LINK |
DIP/static internal IP(静的内部プライベート IP) | Static internal IP address | Private | VM | LINK |
なお、DIPまたはstatic internal IPに関してはこちらに書きました。
ILPIPに関してはこちらで書いてます。
ここでは、Reserved IPに関して書きます。
Reserved IPのイメージ図
通常はクラウドサービスに割当たっているPublic IPアドレスは、該当のクラウドサービスに関連する全ての仮想マシンをシャットダウンしてしまうとリリースされ、変更されてしまいます。
このクラウドサービスに割り当てるPublic IPアドレスを固定できるのがReserved IPという機能です。
イメージ図は以下の通りです。
関連コマンド
関連するコマンドは以下の3つですです。
- Get-AzureReservedIP
- New-AzureReservedIP
- Remove-AzureReservedIP
以下のようにGet-Helpコマンドでも一覧できます。
PS > get-help *reservedIP* Name Category Module Synopsis ---- -------- ------ -------- Get-AzureReservedIP Cmdlet Azure Get the Reserved IP by its name or lists all the Reserved IPs in the subscription. New-AzureReservedIP Cmdlet Azure Create a Reserved IP. Remove-AzureReservedIP Cmdlet Azure Remove the Reserved IP by its name.
Rserved VIPの作成
Rserved VIPは上記の通り、New-AzureReservedIPコマンドで作成します。しかし、いつでもReserved IPを作成できるわけではありません。
Reserved IPはクラウドサービスに対して最初の仮想マシンをデプロイする時にしか割り当てられないようです。(2014/10/06時点では)
言い換えれば、既存のクラウドサービスでReserved IP設定を利用したい場合は、一端全てのデプロイ済みの仮想マシンを削除するか、新しいクラウドサービスを作ってそこに仮想マシンを割り当て直す方法がありそうです。
参考までに既存のクラウドサービスに割り当てられている仮想マシンを新しいクラウドサービスに移行するサンプルスクリプトを書いてみました。
$subscriptionName = "サブスクリプション名" $storageAccountName = "ストレージアカウント名" $sourceServiceName = "現在仮想マシンが配置されているクラウドサービス名" $targetServiceName = "新しいクラウドサービス名" $VMName = "仮想マシン名" $tempVMImageName = "TEMP" $vipName = "Reserved IP名" $vnetName = "仮想ネットワーク名" $vnetSubnetName = "仮想ネットワーク サブネット名" $location = "リージョン(例)Japan East" Add-AzureAccount Select-AzureSubscription $subscriptionName Set-AzureSubscription -SubscriptionName $subscriptionName -CurrentStorageAccountName $storageAccountName #仮想マシンの停止 Stop-AzureVM -ServiceName $sourceServiceName -Name $VMName -Verbose #仮想マシンからVMイメージを生成 #Sysprepはしないので、Specializedを指定 Save-AzureVMImage -ServiceName $sourceServiceName -Name $VMName -ImageName $tempVMImageName -OSState Specialized -Verbose #Reserved IPアドレスを生成 New-AzureReservedIP -ReservedIPName $vipName -Label $vipName -Location $location -Verbose #クラウドサービスの生成 New-AzureService -ServiceName $targetServiceName -Location $location -Verbose #生成した仮想マシンイメージとReserved IPアドレスを利用して新しい仮想マシンを生成 #注)2014/10/06時点ではEndpoint無しではReserved IPを割り当てられないようなのでRDPのポートを空けてます New-AzureVMConfig -Name $VMName -InstanceSize Medium -ImageName $tempVMImageName -Verbose | Set-AzureSubnet -SubnetNames $vnetSubnetName | Add-AzureEndpoint -Name RDP -Protocol tcp -PublicPort 3389 -LocalPort 3389 | New-AzureVM -ServiceName $targetServiceName –ReservedIPName $vipName -VNetName $vnetName -Verbose #VMイメージの削除 Remove-AzureVMImage -ImageName $tempVMImageName -Verbose
Reserved IPの確認
自分の登録したReserved IPはGet-AzureReservedIPコマンドで確認できます。
PS> Get-AzureReservedIP -ReservedIPName "Reserved IP名" ReservedIPName : Reserved IP名 Address : 23.100.100.255 Id : xxxxxxxxxxxxxxxxxxxxxx Label : Reserved IP名 Location : Japan East State : Created InUse : True ServiceName : MYCLOUDSERVICE DeploymentName : MYCLOUDSERVICE