前言
建立Azure VM或Azure Cloud Service服務後,服務的Public IP是動態的,當資源關閉時,Public IP就變更了。
有些Application的需求就是讓VM擁有固定IP,然而Azure上面的固定IP分為兩種:
- Azure VM with Static IP (ILPIP – Instance Level Public IP)
- Azure Cloud Service with Static IP (VIP – Virtual IP)
而官網所指的「Reserved IP」就是VIP。
概念
<圖片來自 https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-instance-level-public-ip/>
- ILPIP:就是給VM一組public IP,而非透過Azure Load Balancer去解譯。
- VIP+Endpoint:透過VIP:<port number>的方式存取到VM。
什麼時候要用ILPIP、什麼時候要用VIP呢?
我覺得可以用服務要開的port數、是否已建立Azure VM、每個VM是否需要有固定Outbound IP去想。
最需要注意的一點:當VM解除配置(de-allocated),再將VM開啟,「ILPIP就會改變」,但VIP是永久存在的。
- 若你要利用VM架FTP server,並使用passive mode,會用到動態port,且要開通兩條防火牆規則:
一個規則for control channel、還要有另一規則for data channel。
→若使用Cloud Service - Reserverd IP,除了FTP server要指定FTP動態port外,Windows Firewall和Azure VM Endpoint都是要挖洞的地方。
→若使用Azure VM - ILPIP,可以直接利用Windows Firewall去開動態port的範圍。 - 若你要開的只有TCP 1433 port,當然可以直接用VIP+Endpoint指向VM的SQL Server服務。
→這時使用VIP+<port number>會比較適當,但也要注意Windows Firewall。(用什麼服務就開通那個port就好) - 當我們有一些已建立的VM,在不動到VM環境的情況下要加public IP,就使用ILPIP的方式新增。
- 在一個Cloud Service裡面,我想要每個VM都有個別的Outbound IP,也要使用Azure VM - ILPIP。
(若是使用Cloud Service - Reserved IP,這個Cloud Service內VM的Outbound IP都是這組Reserved IP)
限制
- 您只能針對每個 VM 或角色執行個體指派一個 ILPIP。
- ILPIP 目前不支援多個 NIC 的 VM。
- 一個subscription最多五個ILPIP、二十個VIP(若使用量會超過請洽微軟)
- 一個Cloud Service最多五個VIP。(若使用量會超過請洽微軟)
實作
我們首先在此篇文章實作VIP,目前也只能使用Powershell For Azure來進行。
步驟如下:
- 登入Azure
- 選擇要建立在哪個訂閱底下
Select-AzureSubscription -SubscriptionName "SubscriptionName"
- 新增一組Reserved IP
New-AzureReservedIP –ReservedIPName IP –Location "East Asia"
- 可以check看有沒有建立成功
- 指定好VM所存放的Storage Account
Set-AzureSubscription -CurrentStorageAccountName "StorageAccountName" -SubscriptionName "SubscriptionName"
- 設定Cloud Service與此組Reserced IP相關連
ReservedIP會指派給「已佈署VM的Cloud Service」,因此以下會建立Cloud Service & Azure VM,並使用VIP:
$cloudSvcName = 'CloudServiceName'
$vmname = 'VMname'
$adminPassword = 'adminPassword'
$adminusername = 'adminusername'
$imageFamily = 'Windows Server 2012 R2*'
$imageName = Get-AzureVMImage | where { $_.ImageFamily -like $imageFamily } | sort PublishedDate -Descending
New-AzureVMConfig -Name $vmname -InstanceSize "ExtraSmall" -ImageName $ImageName[0].ImageName |
Add-AzureProvisioningConfig -Windows -AdminUserName $adminusername -Password $adminPassword |
New-AzureVM -ServiceName $cloudSvcName -Location "East Asia" -ReservedIPName IP
- 測試連結
再使用以下指令確認Cloud Service在使用這組IP:
- 接著用VIP:<PortNumber>就可以連到VM囉!
費用
雖說Azure官網表格只有列Reserved IP的價格,但大家可以在上面的文字看到ILPIP的價格,
目前兩者都是以每個IP每小時NT$0.1242元計價,每個月約NT$94元(以官方公布為主):
但有時候我們會新增Reserved IP卻沒使用(忘記指定給Cloud Service或其他狀況),這樣還是會跟使用中的IP算一樣的錢!
相關連結
== 要試用 Azure的朋友,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==