MSDN Flash – Windows Azure 新功能(3): VM Role


微軟的 Windows Azure 正如其名,是以雲端的平台服務(Platform as a Service)為基礎的一系列架構,包含所有的軟體工具與文件資源都是以平台的方式來描述它,對開發人員來說,Windows Azure 是一個很棒的載具,它將微軟全球的資料中心都抽象化,以 VM 的角色供應給開發人員,開發人員可以自由選擇要使用哪一種 VM 的規格,或是設定要使用多少個 VM 以實作 Load Balancing 架構,以支援更多的使用者等等。相較之下,Windows Azure 好像對 IT 人員來說就沒有太強的相關性,所有的 VM 都是由微軟自行預先組態好,再透過自動化的機制(Image Deployment)來發行到特定的伺服器,啟動 VM 以及初始化應用程式等工作,IT 人員基本上是無法涉入其中的。

但有時企業應用雲端環境的需求,可能會需要自行設定某些部份,或是安裝一些特殊軟體再部署到雲端上,早期的 Windows Azure 並未提供給客戶自製環境組態(Custom Configuration)的功能,因此早期企業無法自己客制特殊的環境作為VM的基礎。不過在 PDC 2010 中,微軟宣布了可以由企業自行設定組態影像的功能,同時可以直接將客制的影像掛載於 Windows Azure 資料中心內的機制,稱為 VM Role,它是以 Custom Image(客制化 VM 影像檔)為主的角色,它不像 Web Role 和 Worker Role 是作為應用程式的載具,它有獨立的部署與運行空間,因此 VM Role 不但可以作為企業延伸到雲端上的應用程式環境,它也可以與 Windows Azure 現有的 VPN(即Windows Azure Connect)結合,讓企業可以在安全的環境下使用雲端環境的運算威力。

VM Role 最大的功能,就是各種應用程式所需要的前置環境都可以事先在企業內部設定完畢,包含像 Matlab Runtime 這種應用程式執行期函式庫,然後再上傳到 Windows Azure 內,日後就能直接使用這個 VM 來產生 Web Role 或 Worker Role ,但基於 VM 本身的組態是由企業自己製作,故在 Visual Studio 中它被獨立為一個 Role 以區分,但 VM Role 可以同時作為 Web Role 或 Worker Role ,一般來說都會將這兩種 Role 所需要的 VM 分別製作再上傳。

雖然 VM Role 的架構很貼近雲端運算中的 IaaS(Infrastructure as a Service),但它並不是一個完全的 IaaS 服務,因為 IaaS 服務只有基礎建設會由雲端供應商管理,其他的要求用戶自行管理(包含軟體授權,可用度與負載平衡等),但 Windows Azure 的 VM 卻不是如此,當用戶將自訂的 VM VHD 上傳後,可用度和負載平衡會由 Windows Azure Fabric Controller 來處理,客戶能夠管理的部份是在建置 VHD 以及利用 VM Role 組建應用程式的部份,所以 VM Role 不能算是 IaaS 的服務,但它將平台的客製能力更加的擴大,讓客戶不會再只受限於 Windows Azure 本身的兩個 VM Image。

NOTE

目前(12/13)VM Role 本身是屬於 Beta 階段,和 Windows Azure Connect 和 Extra Small Compute Instance 一樣要申請才可以使用,因此必須要在新管理入口的首頁的 Beta Program 中勾選 VM Role,Windows Azure 在接受試用時,其狀態會改為 Active ,表示已可使用。

若要建立可供 Windows Azure 使用的基礎作業系統影像(base operating system image),你必須要有下列工具:

  • 一台安裝 Windows Server 2008 R2 作業系統的電腦,並且已安裝 Hyper-V 角色(建議使用英文版)。
  • Windows Server 2008 R2 英文企業版作業系統的安裝媒體,可以是試用版。
  • 至少 50GB 以上的可用空間,建議此空間為獨立硬碟,可以是 USB 硬碟,但建置的速度可能會受到影響。
  • 應用程式需要的執行期函式庫,例如 Matlab Runtime Library,Visual C++ Runtime Library 或其他必要的安裝媒體。
  • Windows Azure SDK v1.3。
  • Visual Studio 2010 with Windows Azure Tools。
  • 在 Windows Azure Portal 中登錄管理憑證。

建置 VM Role 所需要的流程,大概可以分為:

  1. 建立一個固定大小(fix-length)的磁碟檔案,不同的大小會決定可以使用的 compute instance 有哪些。
    • 如果只要給 Extra Small Compute Instance 使用,則大小可設 15GB。
    • 如果只要給 Small Compute Instance 使用,則大小可設 35GB。
    • 如果要給 Medium, Large 與 Extra Large Compute Instance 使用,則大小必須要 65GB。
  2. 在 Hyper-V 管理員中建立虛擬機器,以準備安裝 Windows Server 2008 R2 Enterprise ,記憶體組態可設為 2048MB ,硬碟則是使用前一步驟所建立的 VHD 硬碟檔。
  3. 安裝 Windows Server 2008 R2 Enterprise ,若使用的 ISO 檔案內含多個版本,請選擇 Enterprise (Full installation)。
  4. 安裝完成後,將 Windows Update 的自動更新選擇設為「永遠不會檢查更新」(Never check for Updates)
  5. 安裝 Windows Azure VM Role Integration Components ,這個套件內含了 Windows Azure Fabric Controller 和 VM Role 溝通所需的各式元件(iso 檔可以在 Windows Azure SDK 的安裝路徑中找到)。
  6. 使用 sysprep 工具將影像一般化(Generalize)處理,sysprep 會自動移除使用者相關的設定,讓這個 VHD 內容會更乾淨(sysprep 的選項請參考下圖)。

當 VHD 準備好後,即可準備上傳,此時請準備一台安裝英文版的 Windows Vista 或 Windows Server 2008 或更新作業系統的電腦(也要安裝有 Windows Azure SDK v1.3),透過指令的方式來傳送 VHD 到 Windows Azure 資料中心內:


csupload.exe Add-VMImage -Connection "SubscriptionId=[訂閱的ID];CertificateThumbprint=[管理憑證的拇指紋]" -Description "[VHD的說明]" -LiteralPath "[VHD的本機完整路徑]" -Name "[在Windows Azure上的檔案名稱]" -Location "[要上傳的資料中心位置]"


CSUpload.exe 是專門負責將 VHD 上傳到微軟資料中心的工具,它會再呼叫位於 bin\vhdtools 目錄中的 csvhdverify.exe 以及 csvhdprep.exe 兩支程式進行 VHD 驗證程序(檢查虛擬硬碟的大小,作業系統以及 Windows Azure VM Role Integration Components)與準備程序(壓縮 VHD 檔案)。當這兩支程式完成後,CSUpload.exe 即會正式開始上傳,由於 VHD 的大小都很大,因此可以預期要花費五個小時以上的上傳時間。

當 VHD 上傳到 Windows Azure 資料中心後,就可以使用 Visual Studio 來部署 VM Role 了。

NOTE

現階段在 Windows Azure 上,VM Role 仍然不是一個開放服務,因此在預設的 Windows Azure Tools 中,並沒有可以新增 VM Role 的功能,這個會在 Windows Azure Management Portal 的 Beta Programs 中開放註冊,若你尚未註冊,你必須要先註冊 Request 後,當你的註冊狀態變為 Active 時,才可以使用 VM Role ,同時 Windows Azure Team 會寄發一個設定教學檔的信件讓你啟用 Visual Studio 中的 VM Role 功能,若註冊狀態已啟用卻未收到此信時,可向 Windows Azure Support 尋求支援,同時要附上已 Active 的截圖作證明。

當 Visual Studio 已開啟 VM Role 的功能時,即可在新增角色中看到虛擬機器角色(即 VM Role):

同時可以選擇要使用哪一個 VHD 作為 VM Role 使用的環境:

設定相關的屬性以後,直接發行 VM Role 即可。

NOTE

  1. VM Role 雖然是由企業自行客制,但微軟仍會以 SLA 來保證其高可用度,不過使用者必須要設置兩個 compute instance 以上,才會受到 SLA 的保障。
  2. VM Role 中的作業系統部份不會計費,以 compute instance 執行的時數來計費,但若有安裝其他的軟體,則該軟體部份的授權要由企業自行負擔。