Azure VM 加上固定IP (part1 - 雲端服務設定固定IP),讓雲端服務內的機器對外擁有一致的Public IP

前言

建立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。

概念

ILPIP 和 VIP 之間的差異

<圖片來自 https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-instance-level-public-ip/>

  1. ILPIP:就是給VM一組public IP,而非透過Azure Load Balancer去解譯。
  2. 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來進行。
步驟如下:

  1. 登入Azure
    Add-AzureAccount
  2. 選擇要建立在哪個訂閱底下
    Select-AzureSubscription -SubscriptionName "SubscriptionName"
  3. 新增一組Reserved IP
    New-AzureReservedIP –ReservedIPName IP –Location "East Asia"
    image_thumb8
  4. 可以check看有沒有建立成功
    Get-AzureReservedIP
    image_thumb14
  5. 指定好VM所存放的Storage Account
    Set-AzureSubscription -CurrentStorageAccountName "StorageAccountName" -SubscriptionName "SubscriptionName"
  6. 設定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
    image_thumb18
  7. 測試連結
    再使用以下指令確認Cloud Service在使用這組IP:
    Get-AzureReservedIP
    image_thumb27
  8. 接著用VIP:<PortNumber>就可以連到VM囉!

費用

雖說Azure官網表格只有列Reserved IP的價格,但大家可以在上面的文字看到ILPIP的價格,
目前兩者都是以每個IP每小時NT$0.1242元計價,每個月約NT$94元(以官方公布為主):

image_thumb2 

但有時候我們會新增Reserved IP卻沒使用(忘記指定給Cloud Service或其他狀況),這樣還是會跟使用中的IP算一樣的錢!
image_thumb5

相關連結

 

== 要試用 Azure的朋友,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==

Loading