雲端運算:將您的虛擬機器帶往雲端
在 Windows Azure 上執行虛擬機器兼具了虛擬化與雲端運算的優點。
Joshua Hoffman
常變是 IT 產業的支柱。新技術、軟硬體和通訊協定每天推陳出新。這一波波的新技術創造了不斷演變的景象,改善了我們執行業務、彼此通訊,以及分享知識的方式。在這一股多變的旋風之中,我們近年來在 IT 世界中看到的兩個最重大的轉變,就是虛擬化和雲端運算。
虛擬化有助於企業更有效地利用硬體資源。它促使軟體環境從其硬體更進一步抽離。伺服器現在可以單一檔案的形式存在。您可以輕鬆在硬體間移動並隨意複製它們,以及建立擴充性更高且更富彈性的基礎結構。
雲端運算則是將虛擬化所實現的效率和靈活性進一步發揚光大。雲端運算透過集區資源、多元的地理位置和通用連線能力,更便於提供裝載軟體、平台和基礎結構即服務。它同時兼具新技術平台和新商業模型的作用。
隨著虛擬機器 (VM) 角色融入 Windows Azure 平台,這些有力的概念於是能夠結合,一起在雲端內裝載虛擬基礎結構。您不久就能夠針對 Windows Azure 建置 VM,並將它們部署到雲端,進而運用雲端運算盛名的彈性、可調整的基礎結構和成本節約。
目前,Windows Azure VM 角色仍處於 Beta 測試階段。您可以瀏覽 Windows Azure 運算網站進一步了解 Beta 測試計畫的詳細資訊。您可以瀏覽 Windows Azure 管理入口網站的 Beta 測試計畫部分申請參加 Beta 測試。由於 VM 角色仍屬於 Beta 測試狀態,因此此處所含的相關資訊日後可能有所異動。
針對雲端建置
Windows Azure 的 VM 角色與其他伺服器角色類似。Windows Azure 上的 VM 執行的是 Windows Server OS 版本。VM 角色的差異在於,您可以根據您的需要和規格建立、自訂和管理伺服器映像。
與內部部署的硬體比起來,在 Windows Azure 上執行 VM 有幾項操作上的差異您應該要注意。首先,部分網路相關功能有限。舉例來說,若要使用使用者資料包通訊協定 (UDP),您必須同時使用 Windows Azure Connect 才行。另外,在 Windows Azure 內執行的 VM 角色執行個體沒有保存狀態。
建議您使用 Windows Azure 儲存服務將它寫入 Blob 或 Windows Azure 磁碟來保存狀態。如需相關做法的詳細資訊,請參閱<如何在 Windows Azure 中針對 VM 角色開發介面卡>。
寫入本機儲存資源目錄的資料在重新製作伺服器執行個體的映像時會保存下來。不過,您可能會在 Windows Azure 要求您將 VM 角色執行個體移到不同硬體而發生短暫失敗的情況下遺失此資料。
只要留意這些狀況,其實針對 Windows Azure 建置 VM 的程序跟建置其他任何 VM 類似。開始先建置基底虛擬硬碟 (VHD),您可以透過 Hyper-V Manager 建立空白的 VHD、修改現有 VHD,或是將實體伺服器安裝轉換成 VHD (如需詳細資訊,請參閱新虛擬機器的來源)。
基礎映像包含 OS (必須是 Windows Server 2008 R2)、對 OS 的任何自訂,以及您所需的任何應用程式。您應該從伺服器管理員啟用 Hyper-V 角色,以及安裝 Windows Azure SDK (內含 Windows Azure 整合元件)。將 Windows Server 2008 R2 安裝媒體 (一般是 ISO 檔案) 包含在基礎映像內也是不錯的主意,萬一有需要,就可以用它來進行安裝其他元件等工作。
接下來是安裝 Windows Azure 整合元件。每個伺服器映像都需要安裝這些元件,才能將映像上載到 Windows Azure。每次 OS 啟動這些元件就會跟著啟動,它們會將 VM 角色 OS 與 Windows Azure 整合。
該些元件會與負載平衡器搭配運作,溝通執行個體的狀態。它們還會根據服務定義設定安裝憑證並建立本機資源目錄來初始化 VM。您可以在<如何安裝 Windows Azure 安裝元件>找到安裝元件的詳細步驟。
建置映像程序的下一步是開發「介面卡」,這是選擇性的步驟。當您開發和上載自訂伺服器映像時,您是安裝和設定軟體在 Windows Azure 的動態環境內執行。您可能需要為在開發階段還無法使用的應用程式提供設定資訊。您需要在執行階段收集此資訊。建議您編寫一個介面卡與 Windows Azure 互動並準備和執行您的應用程式,透過這種方法針對動態環境來設定您的應用程式。
編寫介面卡時,您有兩個選擇:
- 您可以編寫一個在特製化階段執行的介面卡。這是發生在設定 OS 時,將伺服器映像首次上載到 Windows Azure 或在重新製作執行個體的映像之後。有兩種方法讓您不必編寫程式碼就可以編寫此介面卡,您可以擇其一使用。執行來自回應檔或是來自為系統準備工具 (sysprep) 撰寫的提供者的指令碼。如需詳細資訊,請參閱<如何在 Windows Azure 中針對 VM 角色開發介面卡>MSDN Library 頁面的<為介面卡建立安裝專案>一節。
- 您可以將介面卡編寫成 Windows 服務 — 每次 OS 啟動就自動跟著啟動的服務。您可以使用 Managed 或原生程式碼來編寫這類的介面卡。它會使用 Windows Azure 服務執行階段 API 從 Windows Azure 環境收集動態資料。如需詳細資訊,請參閱<如何在 Windows Azure 中針對 VM 角色開發介面卡>MSDN Library 頁面的<定義當介面卡啟動時會發生什麼動作>一節。
將系統映像準備好上載到 Windows Azure 的其中最後一個步驟,是評估您的 Windows 防火牆設定。當應用程式在 Windows Azure 內的 VM 角色執行個體上執行之後,您應該開啟它所需的任何連接埠。您的裝載服務應該使用固定的本機連接埠。您可以為您針對任一 Windows Azure 角色 (無論是 Web、工作者或 VM) 定義的端點指定連接埠號碼。
完成安裝和設定程序之後,建置映像的最後一步,就是將它準備好上載到 Windows Azure。您將使用 sysprep 工具來進行此步驟。Sysprep 工具會將映像「一般化」,移除任何唯一的安全性識別元 (SID),好讓 Windows Azure 能夠在部署機器時根據每個執行個體重新建立它們。若要完成最後的映像準備工作:
- 以系統管理員的身分開啟命令提示字元視窗。
- 將目錄變更為 %windir%\system32\sysprep,然後執行 sysprep.exe。
- 在 [系統準備工具] 對話方塊中,選取 [進入系統全新體驗 (OOBE)] 做為 [系統清理動作]。
- 確定已選取 [一般化]。
- 選取 [關機] 做為 [關機選項]。
- 按一下 [確定]。
Sysprep 作業完畢後,VM 就會關機。您現在可以準備開始部署了。
部署 VM 到 Windows Azure
部署系統映像的第一步是設定管理和服務憑證。當您上載 .vhd 檔案到 Windows Azure 時,它會使用 x.509 憑證,並另存為 .cer 檔案以進行驗證 (在 Windows Azure 管理入口網站內稱為管理憑證)。如果您打算從遠端存取 VM 角色執行個體,也需要一個另存為 .pfx 檔案的個人資訊交換憑證 (在 Windows Azure 管理入口網站內稱為服務憑證)。
您可以自我簽署這些憑證。換句話說,您不需要向協力廠商提供者購買憑證,而可以自行使用 makecert.exe 工具來建立憑證。<如何為角色建立憑證>中有建立您的憑證的詳細指示。
一旦建立好憑證之後,就可以將它新增到 Windows Azure 管理入口網站。請選取 [裝載服務、儲存帳戶與 CDN (Hosted Services, Storage Accounts & CDN)],再按一下 [管理憑證 (Management Certificates)] 或 [裝載服務 (Hosted Services)] (用於服務憑證)。
您需要訂閱識別碼才能上載 VHD。您可以從管理入口網站將該資訊複製並貼到命令列。若要尋找訂閱識別碼和憑證指紋:
- 登入管理入口網站。
- 按一下 [裝載服務、儲存帳戶與 CDN (Hosted Services, Storage Accounts & CDN)],再按 [管理憑證 (Management Certificates)]。
- 您可以在 [內容 (Properties)] 窗格中的 [憑證指紋 (Thumbprint)] 下找到憑證指紋。訂閱識別碼位於 [訂閱識別碼 (Subscription ID)] 下。
找到憑證指紋和訂閱識別碼之後,就可以上載 VHD 了。
若要上載映像:
- 以系統管理員的身分開啟 Windows Azure SDK 命令提示字元視窗。
- 將目錄變更為您儲存 VHD 映像的目錄。
- 使用下列命令設定連接字串,以訂閱的值取代 SubscriptionId 和 CertThumbprint:
csupload Set-Connection "SubscriptionId=SubscriptionId; CertificateThumbprint=CertThumbprint"
- 使用下列命令上載 VHD,並取代 VHD 檔名和顯示名稱:
csupload Add-VMImage –LiteralPath VHDName.vhd –Location LocationValue –Name DisplayedNameInPortal
如此會顯示 Windows Azure VHD 驗證工具的對話方塊。這項工具會驗證 OS 確實處於適當狀態,並且準備好上載到 Windows Azure。按一下 [確定 (OK)] 繼續上載程序。
請注意您必須提供 –LiteralPath 和 –Location (或 –AffinityGroup) 參數。–Name 參數則是選擇性的。位置或相似性群組必須與針對相對應的裝載服務所定義的位置或相似性群組相符。
建立服務模型是部署的最後一個步驟。為了讓 VM 角色執行個體能夠在 Windows Azure 內執行,您必須建立服務定義和服務設定檔來定義服務模型。如需詳細指示,請參閱 MSDN Library 文章<如何建立和部署 VM 角色服務模型>。
您的 VM 可以在 Windows Azure 內順利運作後,您應該在本機保留一份原始 VHD 的副本,做為安全的備份。如果您想要在未來對 VHD 進行變更,例如套用更新或升級應用程式,您可以使用差異磁碟來進行。您可以在此處找到使用差異磁碟提供 VM 服務的詳細指示:<在 Windows Azure 中為 VM 角色變更伺服器映像入門>。
Joshua Hoffman是《TechNet Magazine》的前任主編。他現在是一名獨立的作家和顧問,為客戶提供技術與觀眾導向市場行銷的建議。Hoffman 同時也擔任 ResearchAccess.com 的主編,這個網站旨在培養和豐富市調社群。他現居美國的紐約市。