如何在 Azure Cloud Services 和 Azure Virtual Machines 上保留對外 IP 位址

感謝北科大劉建昌同學翻譯微軟公司 Microsoft Azure 主管 Mahesh Thiagarajan 所發表的文章 https://azure.microsoft.com/blog/2014/05/14/reserved-ip-addresses/

微軟公司於 2014 年 5 月 12 日宣布正式推出 Microsoft Azure Cloud Services 與 Virtual Machines 保留對外 IP 位址 ( Reserve IP ) 功能。在這篇文章中,我們會介紹保留對外 IP 位址的相關資訊,並且如何在 Microsoft Azure Cloud Services 與 Virtual Machines 使用這項功能。除此之外,也會介紹收費標準和不支援保留 IP 位址的情況。您若想要閱讀關於保留對外 IP 位址 ( Reserve IP ) 的技術文件,可以到這個網站上取得

甚麼是保留對外 IP 位址,我何時需要用到它 ?

隨著最新版的 PowerShell 釋出,Microsoft Azure 允許您在既有的 Azure 訂閱帳戶上使用保留對外 IPv4 位址。您可以無限期的將這些 IP 位址保留您的 Azure 訂閱帳戶上,並用於此帳戶內的 Microsoft Azure Cloud Services 與 Virtual Machines 之服務。本篇文章主要著重於如何保留對外的公開之 IP 位址。至於如何固定虛擬網路 ( Virtual Network ) 內部各虛擬機器的 IP ,相關資料可參閱此篇文章

您可能會需要用到保留對外 IP 位址的原因如下 :

以 A-Record 設定 DNS 時不用擔心 IP 位址改變

Microsoft Azure Cloud Services 或 Virtual Machines 預設在用戶關閉或是刪除一個虛擬機器之後,對外的 IP 位址就會釋出,下次再次啟動虛擬機器時對外 IP 就可能改變,這對 DNS 以 A Record 設定時造成困擾,如果用戶使用保留對外 IP 位址功能,就會持續保留同一個對外 IP 位址。可以避免虛擬機器再次啟動時重新分配新的 IP 位址,造成重新設定 DNS 的問題。

企業內部網路安全考量

有了保留對外 IP 位址功能,企業內部 Proxy 伺服器或防火牆即可針對此一固定 IP 位址進行存取控制 (ACL),而不再需要擔心當您重新啟動或是停止虛擬機器時,內部相關 Proxy 伺服器或防火牆又要新設定。

下圖顯示了 IP 保留對外 IP ( Reserved IP ) 的運作方式,Azure 可以單一區域資料中心的範圍內提供保留對外 IP 位址 ( Reserved IP ) 的功能,在此資料中心的 Cloud Services 都可以運用所保留的 IP 位址。

clip_image002

 

如何在 Microsoft Azure 上保留一個對外的 IP 位址

您可以在您的 Azure 訂閱上使用 Azure PowerShell cmdlets 或是 REST APIs 建立一個保留 IP 位址。您可以在多數微軟 Azure 資料中心使用保留 IP 位址的功能。除了以下地區資料中心 :

  • 巴西
  • 中國東部
  • 中國北部

Azure 團隊會盡快讓這些地區未來也支援此項服務。

請注意,Azure 目前尚未支援透過管理者入口網站直接設定留對外 IP 位址的功能。目前必須使用 PowerShell 或是 REST API,以下為使用 PowerShell cmdlets 建立一個全新並會保留對外 IP 位址的範例 :

New-AzureReservedIP – ReservedIPName “MyWebsiteIP” –Label “WebsiteIP” –Location “Japan West”

對於之前就已經建立好的雲端服務和虛擬機器所配發的 IP 位址,目前無法直接保留該 IP 位址,但相信在不久的將來,Auzre 團隊就會提供這這項功能。

如何使用一個保留的 IP 位址建立虛擬機器

一旦一個保留的 IP 位址已經建立完畢,您就可以使用該保留 IP 位址來建立虛擬機器。以下是運用 PowerShell cmdlet New-AzureVM 來使用保留 IP 位址建立虛擬機器的範例 :

New-AzureVMConfig -Name "WebAppVM" -InstanceSize Small -ImageName $images[130].ImageName | Add-AzureProvisioningConfig -Windows -AdminUsername $username -Password $password | New-AzureVM -ServiceName "MaheshWebApp" -ReservedIPName "MyWebSiteIP" -Location "Japan West"

 

當建立妥保留 IP 位址之後,即便遇到下列的情況,也不會釋放對外 IP 位址。

關閉虛擬機器時

過去當虛擬機器關閉時,對外 IP 位址立即被釋放,當虛擬機器重新開啟之後,Microsoft Azure 會再重新分配一個新的對外 IP 位址給虛擬機器使用。現在若用戶保留對外 IP 位址,當虛擬機器重新開啟仍會使用原本保留的 IP 位址。

刪除虛擬機器時

當您刪除使用保留 IP 位址的虛擬機器後,保留的 IP 位址依然會保存在您的 Azure 訂閱帳戶中,以利您於未來您會再次將虛擬機器佈署在此資料中心時使用該 IP 位址。

您可以參考虛擬機器REST API文件

 

如何使用一個保留的 IP 位址來建立雲端服務 (Web/Worker Roles)?

除了虛擬機器可以使用保留對外 IP 位址之外,同時我們也可以將此功能應用在雲端服務 ( Cloud Services ) 的建置。您需要去下載 2.3 板之後之 Azure SDK 才能夠使用此項功能。

以下為在您的服務定義檔 (.CSCFG) 中使用保留對外 IP 位址的範例 :

<?xml version="1.0" encoding="utf-8"?><ServiceConfiguration serviceName="ReservedIPSample" xmlns="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="4" osVersion="*" schemaVersion="2014-01.2.3">  <Role name="WebRole1">    <Instances count="1" />    <ConfigurationSettings>      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />    </ConfigurationSettings>  </Role>  <NetworkConfiguration>    <AddressAssignments>      <ReservedIPs>       <ReservedIP name="MyWebSiteIP"/>      </ReservedIPs>    </AddressAssignments>  </NetworkConfiguration></ServiceConfiguration>

請注意,當 Web Role / Worker role 被刪除時,保留的 IP 位址還是會被放在您的 Azure 訂閱帳戶中,當下次在同一個區域資料中心要建置新的 Web/Worker Role 時,同樣的也可以使用此保留 IP 位址。

如何將保留的 IP 位址從 Azure 訂閱上取消 ?

若保留的 IP 位址已經沒有使用在任何一台虛擬機器或是雲端服務上時,微軟公司建議您最好將此保留的 IP 位址取消,這樣才不會有額外的費用產生。對於保留 IP 位址的計費方式,詳細資料請參考這裡

以下指令為使用 PowerShell cmdlet 可以將保留的 IP 位址從您的訂閱中取消 :

Remove-AzureReservedIP -ReservedIPName "MyWebSiteIP" –Force

  

保留對外 IP 位址與虛擬網路內的同質群組 (Affinity Group)

目前 Microsoft Azure 尚未支援在虛擬網路內的同質群組 (Affinity Group) 中建立保留對外 IP 位址的虛擬機器或是雲端服務。當您嘗試在虛擬網路內的同質群組中建立虛擬機器,您會得到下列的錯誤訊息

New-AzureVM : BadRequest : The deployment contains VirtualNetwork DemoVNET that belongs to an Affinity Group and ReservedIP that belongs to a region. This combination is not allowed.

  

保留對外 IP 位址與虛擬網路

在這個版本中也支援在同一區域資料中心之虛擬網路 ( Virtual Network ) 中使用保留對外 IP 位址之功能,您可以在此 Blog 中找到更多的詳細資料。Microsoft Azure 支援在虛擬網路中使用保留對外 IP 位址的方式來建置雲端服務或是虛擬機器。

 

保留對外 IP 位址的費用

IPv4 址位是非常稀少的資源,且每個地區分配的數量不定,因此 Microsoft Azure 對於保留對外 IP 位址的收費在不同的地區有不同的定價。費用相關資訊可參閱收費常見問題。請注意雲端服務內至少應要有一個運行中的 Web Role / Worker Role 或虛擬機器實例。

在您的帳單中,您會看到兩個部份是關於保留 IP 位址的 :

保留 IP 位址的時間 :

保留的IP位址在您的訂閱中保留的總時間數 (以小時為單位)

包含 :

  1. 沒有用在任何運作中的雲端服務或是虛擬機器的保留 IP 位址
  2. 訂閱中額外使用的保留 IP 位址

保留 IP 位址的重新映射 :

每當 IP 位址要在一個新的雲端服務上使用時,就會被認為是一個重新映射。您可以在此參考重新映射計價的相關方式

每個訂閱保留 IP 位址的上限 :

每個 Azure 訂閱帳戶最多可以保留到五個 IP位址,但是若您需要在您的訂閱帳戶中使用保留更多的IP位址時,您可以透過點擊這裡申請,並可參考Azure訂閱限額文件