在Windows Azure中,为虚拟机同时提供两种IP:对外公开的虚拟IP,及对内使用的内部IP(Internal IP address, DIP)。
这两个IP都可以在Windows Azure管理门户(Management Portal)中仪表盘(Dashboard)上看到,如下图:

在Windows Azure一个订阅中,虚拟机之间可以通过VIP来互相通讯,这和外部通过internet连接到该虚拟机是一样的。
目前,VIP和DIP的一个主要区别就在于生命期及IP的稳定性。其中,VIP相对稳定,只有虚拟机VM保持活跃状态(Active),或所在同一云服务(Cloud Service)中有至少1台VM处在活跃状态,VIP会保留下来。而与VIP不同的是,在虚拟机停止(后台将其释放资源)后,再重启的虚拟机将重新获得一个随机的可用IP地址。此外,虚拟机实例因为其他某种原因,例如机房中机柜维护等,在Windows Azure中由Fabric Controller搬到其他机柜的时候,都有可能造成DIP发生变化。
另外,当一个虚拟机通过VIP访问同一个订阅中其他虚拟机的时候,也要通过Windows Azure Load Balancer (LB);而虚拟机之间通过DIP来互联,则避免了通过LB来访问。由此,一些用户希望通过使用DIP方式来访问,以便相较于VIP,获得更少的网络延迟,例如大约0.5ms。
对于希望保持虚拟机DIP稳定的IT人士/开发者,这是一个需要面对的问题。解决这一问题有不同的途径。
最新的PowerShell(版本号:PowerShell cmdlets for Windows Azure version 0.7.3)命令增加了四个命令来解决这一问题:
◾Get-AzureStaticVNetIP
◾Set-AzureStaticVNetIP
◾Remove-AzureStaticVNetIP
◾Test-AzureStaticVNetIP
更多信息,可访问:https://github.com/WindowsAzure/azure-sdk-tools/releases/tag/v0.7.3-February2014
具体步骤是:
◾通过执行Test-AzureStaticVNetIP命令,确定所申请的IP是可用的(没有与其他VM冲突)
◾通过执行Set-AzureStaticVNetIP命令,指定IP,并可配合创建虚拟机命令(例如New-AzureVM)来创建新的、拥有该IP的虚拟机;也可以通过Update-AzureVM等命令,来为一个现有的VM指定新的IP(该IP将在虚拟机重启后生效)
具体可参考:http://msdn.microsoft.com/en-us/library/windowsazure/dn630228.aspx
需要额外说明的是,目前还不能通过管理门户来实现,而只能通过PowerShell脚本来实现。
其实,用户还可以通过自己的域控制器(Domain Controller,DC),来为虚拟网络里的虚拟机来提供稳定的内部IP。如下图:

而为了避免单个域控制器虚拟机实例带来的风险,还可以在虚拟网络中额外增加一个域控制器,从而确保内部IP的稳定提供。
可以参考:Install a Replica Active Directory Domain Controller in Windows Azure Virtual Networks
http://www.windowsazure.com/en-us/documentation/articles/virtual-networks-install-replica-active-directory-domain-controller/