Windows Azure上的IP地址有以下幾種:
- 公網IP地址
- VIP
- ILPIP
- Reserved IP
- 內網IP地址
- DIP
- Static IP
VIP是動態分配的公網IP,VIP可以被分配到雲服務、負載均衡器、VPN網關和應用網關等實例。當實例(雲服務、負載均衡器、VPN網關和應用網關)被銷毀后,VIP即刻被回收。用戶不能永久有用某個特定的VIP。因此務必不用將域名解析的A記錄指向到VIP,也盡量不要使用VIP來訪問雲服務。理論上只要用戶不銷毀重建實例,VIP就不會發生改變。但是,如果遇到Windows Azure平台問題導致的實例銷毀重建(例如:因宿主機物理硬件故障導致的實例漂移),VIP也是會發生變化的。一旦VIP被回收,就找不回來了(已經分配給其他用戶了)。VIP是池化的公網IP地址資源。每個雲服務默認分配一個VIP,可以為一個雲服務分配多個VIP,即:Multiple VIP:
- 一個雲服務可以綁定多個VIP,但網絡出口IP地址是創建雲服務時默認分配的那個VIP。
- 每個VIP必須關聯到一個endpoint(終結點)才會生效,若某個VIP上沒有定義任何endpoint,則該VIP僅僅是一個“占位符”,即:不會被分配IP地址。
- 每個VIP上的endpoint所對應的local port必須是其所在雲服務內唯一的:一個虛擬機上的一個端口只能對應一個VIP的endpoint。
- Multiple VIP是針對雲服務的,Multiple VIP不能直接分配給虛擬機。
- 在Service Management模式中,只能通過PowerShell或者CLI來管理Multiple VIP。
如果需要使用固定的公網IP地址,那么就需要使用Reserved IP。Reserved IP地址一旦被分配,則在整個Windows Azure訂閱中都是有效的,而且不會發生變化。用戶可以將指定的Reserved IP關聯到某個雲服務。當綁定Reserved IP的雲服務被刪除后,與之對應的Reserved IP並不會被回收,僅僅是狀態變成“未使用”。用戶可以將Reserved IP作為域名解析的A記錄來使用。如果客戶的某些應用需要使用固定的IP地址來進行訪問控制,則使用Reserved IP是正確的選擇。每個雲服務只能綁定一個Reserved IP。結合前文對VIP的描述, 我們總結為:一個雲服務除了默認分配的VIP之外,可以綁定一個Reserved IP和多個輔助VIP(Multiple VIP)。
除了VIP和Reserved IP之外,還有一種能直接綁定到虛擬機上的Instance Level Public IP (ILPIP)。用戶通過ILPIP訪問虛擬機時,將不再經過雲服務和負載均衡器,因此在ILPIP上也不存在endpoint,所有的端口都是直接暴露在公網上的。在Service Management模式中,endpoint的數量是有限制的,如果要在虛擬機上運行需要開放大量端口的服務,例如:socket通訊,passive FTP等,使用ILPIP就可以解決問題。
Windows Azure上的內網IP地址與用戶創建的虛擬網絡中的地址段是相關聯的,無論是DIP或是Static IP,都是虛擬網絡的地址段中進行分配。DIP是通過一個隱藏的DHCP服務分配出來的,用戶目前還無法對DHCP服務的屬性和行為進行任何設置。只有虛擬機中第一個網卡上的內部IP會通過NAT映射到雲服務的默認VIP上,其他網卡和內部IP地址則只能用於內部通訊。若手工在虛擬機中修改內部IP地址(或者MAC地址),則會造成虛擬機無法連接。DIP的分配和釋放原則與VIP類似。在此就不再贅述了。
在做集群的時候(例如:LVS),需要指定一個虛擬的內部IP地址來對外提供服務。通常這一類集群是依賴VRRP協議的,但目前Windows Azure還不支持VRRP,因此也就無法創建需要使用虛擬IP對外提供服務的集群了。SQL Server Always-on集群除外(微軟自家的產品有特殊待遇)。總之,Windows Azure上的內部IP地址都必須是受Windows Azure管理的,用戶無法像在物理環境中那樣隨便就可以在操作系統或者軟件中隨意的設置一個內部IP地址出來。
有關Windows Azure中IP地址的PowerShell操作可以參考這里。