网络虚拟化是 Windows Server 2012 的新功能,可供保留原有内部 IP 地址的情况下将服务器迁往云端。
例如,假设您有三台内部物理服务器,使用了私有 IP 地址 192.168.33.45、192.168.33.46,以及 192.168.33.47,您希望将这些服务器迁移到名为 Fabrikam 的云供应商的数据中心内。这些服务器目前位于 192.168.0.0/16 地址范围内,而 Fabrikam 的数据中心使用了 10.0.0.0/24 作为自己数据中心网络的地址范围。
如果 Fabrikam 在自己的数据中心内部署了Windows Server 2012,那么您就很幸运了,因为您的服务器可以在继续使用原有 IP 地址的情况下将负载迁移到 Fabrikam 宿主机中运行的虚拟机内。这意味着您原有的客户端在分配通过192.168.0.0/16 子网访问服务器时,迁移后依然可以无需修改路由基础架构、管理平台,或网络安全策略,继续访问这些服务器。这就是网络虚拟化的作用。
但如果 Fabrikam 的其他用户在自己虚拟化的负载中使用了完全相同的子网架构会怎样?例如,假设 Northwind Traders 也在自己的私有网络中使用了 192.168.0.0/16,他们的一台迁移到 Fabrikam 数据中心的服务器使用了完全相同的 IP 地址(192.168.33.45),这个地址与您刚迁移到 Fabrikam 数据中心的服务器地址相同,此时会怎样?没问题!Windows Server 2012 中的网络虚拟化技术可以在分属不同客户的虚拟机之间提供彻底的隔离,就算这些虚拟机使用了完全相同的 IP 地址也没问题!
网络虚拟化技术可以让您为 Windows Server 2012 Hyper-V 宿主机上运行的每个虚拟机分配两个不同的 IP 地址。这两个地址分别是:
客户地址,也就是服务器位于客户内部,迁往云端之前使用的 IP 地址。在上文的例子中,客户希望迁往云端的一台服务器的客户地址是 192.168.33.45。
供应商地址,在将服务器迁往供应商的数据中心后,云供应商给服务器分配的 IP 地址。
在上文的例子中,这个地址可能为 10.44.2.133,或可能是 10.0.0.0/24 地址空间内的其他地址。
从客户的角度来看,与被迁移服务器的通讯和服务器位于客户内部时没有任何区别。这是因为运行客户迁移后负载的虚拟机可以看到并使用自己的客户地址,因此也可以被客户网络中的其他宿主机看到并访问。然而虚拟机无法看到或使用自己的供应商地址,因为这个地址只对云供应商网络中的宿主机可见。
这样网络虚拟化技术就可以让云供应商在同一套物理网络上运行多个虚拟网络,这一点类似服务器虚拟化技术,可以让您在一台物理服务器上运行多个虚拟服务器。网络虚拟化技术还可对不同的虚拟网络进行隔离,这样每个虚拟网络在表现上就类似于一套独立的物理网络。这意味着两个或多个虚拟网络可以使用完全相同的地址架构,但不同网络之间依然可以实现彻底隔离,就好像自己是唯一使用这种架构的网络。
为了实现这一切,网络虚拟化技术需要通过一种方式对 IP 地址进行虚拟化,并将其与物理地址进行映射。Windows Server 2012 中的网络虚拟化技术通过两种方式实现这一目标:
IP 重写 这种方法需要在虚拟机发出之前修改数据包的客户地址,随后才将其传往物理网络。
IP 封装 在这种方法中,虚拟机的所有数据包都会首先封装一个新的包头,随后才传输到物理网络。
虽然 IP 封装方式的扩展能力更好,但 IP 重写可以提供更好的性能,因为这种方式可以充分利用一些高端网络适配器所支持的卸载功能将相关的负载进行分摊。
因为网络虚拟化技术主要针对数据中心领域,因此该技术的实施要求您具备虚拟机管理框架。System Center Virtual Machine Manager 2012 Service Pack 1 提供了这样的框架,可供您使用 PowerShell 或 WMI 创建并管理虚拟网络。