Windows Azure Virtual Machines 之 Virtual Network 設定
2012 年6 月 Windows Azure 釋出了 2012 Spring Release,這次版本更新中最重要的就是提供了 Virtual Machines 服務,用戶可以把一組虛擬機器部署於微軟公司的資料中心,由於可以佈署多台虛擬機器,衍伸而來的虛擬網路就變成必要的功能,許多用戶面對的第一個問題就是,我如何將 Web Application 與 Database Server 一同佈署於 Windows Azure Virtual Machines 服務中,並且兩台伺服器分屬於不同的 Subnet,而兩者間又要能彼此能夠相互連接呢?接下來示範如何啟用兩個隸屬於不同 Subnet 的虛擬機器。假設我心中期望架構出如下圖的般的虛擬網路環境,將資料庫與 Web 應用程式分隔在兩個獨立的 subnet,目前兩個 subnet 中各僅有一台虛擬伺服器
我們需要透過新的 Windows Azure 管理介面 https://manage.windowsazure.com 建立虛擬網路,首先點選左下方選單的 NETWORKS
接下來依照原先的規劃將虛擬網路如下圖般命名為 MyVNET,並建立一個名為 MyAffinityGroups 同質群組 (Affinity Group),我將此虛擬網路佈署於微軟東亞的資料中心。
接著依照原先規劃,將我的虛擬網路的位址空間設定為 192.168.0.0/16, 斜線後面的 16 代表 Netmask 等同於 255.255.0.0,意味著這個虛擬網路允許的 IPv4 Address 可從 192.168.0.1 分配至 192.168.255.254 。另外加入兩個 Subnet,第一個名為 web-subnet 虛擬網路的位址空間設定為 192.168.1.0/24,斜線後面的 24 代表 Netmask 等同於 255.255.255.0,意味著這個 web-subnet 虛擬網路允許的 IPv4 Address 可從 192.168.1.1 分配至 192.168.1.254,設定完成後再加入第二個名為 db-subnet,其虛擬網路的位址空間設定為 192.168.2.0/24,代表者此 Subnet 的 IPv4 Address 可從 192.168.2.1 分配至 192.168.2.254,Windows Azure 管理介面會貼心位用戶檢查輸入的位址是否正確。
接下倘若我沒有自己網路內部的 Domain Name Server (DNS),可以留下空白,不用輸入任何 DNS 網址結束設定。
按下勾勾的圓形按鈕後就完成了虛擬網路設定。
緊接著我們可以按下左方選單 Virtual Machines,接著按下下方 "+" 按鈕, 準備增加一個放置 Microsoft SQL Server 的虛擬機器。
為了節省時間,我直接挑選 Galley 內微軟準備好的 Virtual Machine Image。
選取已經預裝妥 Microsoft SQL Sever 2012 Evaluation Edition (64-bit) 的 Windows Server 2008 R2 的 Virtual Machine Image,請用戶特別注意,在虛擬機器內安裝任何軟體,請自行備妥相關合法軟體授權,自行安裝 Microsoft SQL Server 是需要合法的軟體授權的,這與使用 Windows Azure SQL Database (舊名 SQL Azure) 這類以量計價的雲端服務是不同的,此 Virtual Machine Image 雖然已經裝好的 Microsoft SQL Sever 2012,但仍需要額外採購軟體授權。
接下來如同原先規劃,將此裝了 Microsoft SQL Server 的虛擬機器名稱定為 MyDBServer,設定妥系統管理員密碼與選定虛擬機器規格,即可按下右箭頭按鈕。
接下來可以設定對外的 DNS 名稱設定為 MyDBServer.cloudapp.net,並選定該虛擬伺服器為 MyVNET 虛擬網路的成員 ,Windows Azure 會對此 Domain Name 配置一個對外固定的 IP Address,只要用戶不刪除這個虛擬機器,此對外的 IP Address 就不會變,而在虛擬網路之內,MyDBServer 也會透過 DHCP 配置一個內部的 IP Address,Windows Azure 雲端服務的負載平衡器 (Load Balancer) 會自動將所有外部網路封包,轉傳至內部虛擬網路。
MyVNET 虛擬網路之前設定了兩個 Subnet,既然這個虛擬伺服器是安裝了 SQL Server,就如原先的規劃隸屬於 db-subnet。
篇幅有限,我就不在這示範設定 SQL Server 2012 的完整過程。但提醒用戶一定要如下圖建立一個新的虛擬磁碟,來放置 SQL Server 2012 的資料庫檔案,千萬不要將資料庫檔案置於作業系統與 SQL Server 所在的 C: 磁碟, C: 磁碟為了增加效率,預設將讀取與寫入之磁碟快取開啟,由於開啟了寫入快取,將資料庫置於 C: 磁碟有遺失寫入資料的風險,更不要將資料庫檔案放置在暫存用途的 D: 磁碟,D: 磁碟是本機硬碟,沒有自動資料備份三分,更嚴重的是當虛擬機器重新啟動後,D: 磁碟的內容都會遺失。
建立放置資料的虛擬硬碟很簡單,只需要指定 Windows Azure Storage 帳號與硬碟空間即可,目前 Windows Azure Virtual Machines 允許掛載多個虛擬硬碟,每個硬碟最大空間為 999 GBytes。
接下來我們可以透過遠端桌面連進 MyDbServer,當我們下達命令 ipconfig 可以看到 DHCP 果然依照我們 Subnet 的設定,將此伺服器的 IPv4 網址配置在192.168.2.1 – 192.168.2.254 之間 ,結果分配到 192.168.2.4。
接下來我們重複前述動作,按下左方選單 Virtual Machines,接著按下下方 "+" 按鈕, 準備增加一個 Windows Server 2008 R2 SP 1 來放置 Web Application 的虛擬機器。
我們將此新建立的虛擬伺服器命名為 MyWebServer ,這是未來準備放置 Web Application 的虛擬機器。
虛擬機器名稱與對外的 DNS 名稱不一定要一樣,這個虛擬伺服器我將 DNS 名稱選為 My-WebServer.cloudapp.net,同樣將他隸屬於 MyVENT 的虛擬網路。
MyVNET 虛擬網路之前設定了兩個 Subnet,既然這個虛擬伺服器是放置 Web Application,就如原先的規劃隸屬於 web-subnet。
篇幅有限,我就不在這示範設定 IIS 的完整過程,以及增加對外的 End Point 。但是為確保兩個不同 subnet 彼此能相互透過 TCP/IP 順利連接,我想透過 ICMPv4 的 Ping 來確認連線。如果您對於 Windows Server 2008 R2 不熟悉,您或許不知道為了安全理由 ICMPv4 預設是關閉的,因此想要 Ping 到之前建立好的 MyDBServer 的內部 IPv4 網址 192.168.2.4 ,我們還必須先將之前 MyDBServer 虛擬機器內 Windows Server 的防火牆內的 ICMPv4 開啟。您可以在開始選單內選取系統管理工具中的 Windows Firewall with Advanced Security,點選防火牆進入規則 Inbound Rules,在如下圖畫面中 File and Printer Sharing (Echo Request – ICMPv4-In) 項目上按下滑鼠右鍵,點選 Enable Rule。
當 MyDBServer 的防火牆開放 ICMPv4 之後,我們就可以回到剛建立的 MyWebServer,我們開啟命令列下達 ipconfig 可以看到 DHCP 依照我們 Subnet 的設定,將此伺服器的 IPv4 網址配置在192.168.1.1 – 192.168.1.254 之間 ,結果分配到 192.168.1.4。為了要確認 MyWebServer (192.168.1.4) 可以連接到 MyDBServer (192.168.2.4) ,接下來在 MyWebServer 命令列鍵入
ping 192.168.2.4
畫面上我們可以看到兩個 Subnet 如原先規劃順利連通了。
Windows Azure Virtual Machines 提供了完整的 Virtual Network 功能,能夠依照我們既有資料中心的規劃,搬移到雲端微軟的資料中心,而不是只是單純在微軟資料中心放了一堆伺服器而已,希望這篇簡單的操作步驟有助於您了解 Windows Azure Virtual Network 基本功能。