关于Windows Server的虚拟化网络,前文描述了在操作系统层面上的出现的配置变化。其中的一些配置通过Windows Server提供的小工具即可实现,如网卡组的配置,而有些需要安装Windows Server的服务器角色,如Hyper-V,然后通过Hyper-V Manager或者其命令行工具来配置虚拟交换机。但是要进行全局配置管理和实现一些高级功能,就需要接下来介绍的主角System Center Virtual Machine Manager(SCVMM)。关于SCVMM的安装和部署可以参考另一篇博文——Windows Server 2012 虚拟化实战:SCVMM的安装和部署。下面图给出SCVMM在我们数据中心部署的情况。
如图右侧是处于SCVMM管理下的所有物理服务器和物理集群,所有物理机器上都安装了Windows Server 2012 R2的操作系统,安装了Hyper-V服务器角色,同时也安装了与SCVMM服务器通信的SCVMM Agent。而左上的3台服务器构成SCVMM网络架构的核心。SCVMM Database是用于存储了所有配置信息和状态信息的Sql Server数据库。为实现高可用,该Sql Server也可以配置成Sql Server故障转移物理集群。SCVMM其实是一个后台服务,主要负责将Console控制台管理的配置信息通过SCVMM Agent应用到被管理的物理机器上,并实时更新物理服务器及其上虚拟机的状态。SCVMM Console则是用户界面,SCVMM Console可以与SCVMM服务部署在一起也可以分开在不同服务器部署。SCVMM的架构与其他其他任何一个分布式网络架构类似,有集中的地方,SCVMM及其Database作为核心,需要特别保护,避免崩溃。而每个被管理的物理节点崩溃与否却不是那么至关重要。
以上简单介绍了SCVMM的网络架构,大家有个总体的印象,接下来我们回到本文的主题,继续讨论使用SCVMM相关功能实现网络的虚拟化。
三、SCVMM中的网络虚拟化实战
1、物理网络拓扑
通过SCVMM的Console控制台和命令行工具,可以对网络中独立的服务器和故障转移集群(Failover Cluster)的进行统一的配置和管理,其中最重要的功能即是在这些物理服务器上实现网络虚拟化,为搭建一个完整的虚拟化平台奠定基础。下图为我们数据中心2014年建设初期的物理网络拓扑图:
在建设初期,所有物理机器都安装Windows Server 2012 R2并加入域。在上图中蓝色Network01、绿色Network02、红色Network03、紫色Network04分别代表4个不同的物理网络。为什么是4个物理网络,因为我们的服务器都有4个网卡,我们希望都利用上,并实现负载均衡。
2、网络虚拟化的目标
我们初步考虑其中蓝色与绿色绑定为网卡组用于内部网络,名称定为Internal Network,红色和紫色绑定为网卡组用于外部网络,名称定为Public Network,也就是说我们计划在这两个网卡组的基础上进行网络的虚拟化。
在Internal Network上要建立4个虚拟网络:
(1) Management Network 用于域和管理,配置给所有物理服务器和部分虚拟机,内网地址192.168.0.0/24
(2) Cluster Network 用于集群心跳,配置给建立集群的物理服务器,内网地址192.168.10.0/24
(3) Migration Network 用于虚拟机迁移,配置给所有成为宿主的物理服务器,内网地址192.168.20.0/24
(4) Application Network 用于虚拟机之间自定义网络,配置需要自定义网络的那些虚拟机,这个是网络虚拟化最彻底的部分,稍后将解释,内网地址192.168.30.0/24
在Public Network上要建立2个虚拟网络:
(1) Cernet Network 用于教育网,配置给所有需要教育网的虚拟机,公网地址121.192.x.x/26
(2) Datacenter Network 用于反向代理的内部网络,配置给所有需要从外部通过非教育网连接的虚拟机,内部地址172.16.8.0/24。这个网络比较特殊,如果电信网络或者移动网络需要连接虚拟机,需要通过反向代理服务器即如上图的cloud-pm-ag01进行方向代理,以实现多种外网接入虚拟化平台上的虚拟机。
如上面描述并不是每个物理服务器或者虚拟机都将接入上面所有虚拟网络,而是可以进行非常灵活的配置,那么我们就来看看如何在SCVMM中实现。
3、SCVMM中网络虚拟化的关键概念
在SCVMM中有些功能的名称看起来并不是那么合理,许多配置项容易使人误解,因而带来了许多困扰。
在Windows 2012 R2中的网络虚拟化小节中,我们提到了在操作系统层面发生的关于网络配置的改变包含:网卡组、虚拟交换机,虚拟网卡。很容易发现这些配置其实只针对某个物理服务器或者某个虚拟机(虚拟网卡可用于虚拟机),那么这些物理服务器和虚拟机的虚拟网卡如何算是连接在同一个网络中,其实非常容易想到的就是我们必须在物理网络的基础上,为这些物理服务器和虚拟机进行相同的配置,让他们拥有同样的虚拟交换机和虚拟网卡的配置,那么整个虚拟化平台就能正常工作了。因而在SCVMM上所做所有工作其最终目的就是为了在多个物理服务器和虚拟机之间实现配置的一致性,当然最终也带来的配置的便捷性。
其实在SCVMM中关于网络虚拟化最重要的概念有以下几个,我来看看他们本质上对应到操作系统层面将改变什么?
(1) Logical Networks逻辑网络和VM Networks虚拟机网络
可以简单的认为就是上文中我们需要创建的虚拟网络。这里需要注意的是一个逻辑网络(虚拟网络)并不代表只有一个子网,例如上文中我们的目的之一是创建Management Network,并标识使用内网地址192.168.0.0/24,原因是我们并没有超过255台的机器。倘若我们的确有那么多机器需要接入Management Network,并且它们分布在不同地方,例如在不同的楼栋,不同的楼层或只是不同的房间,那么在可能我们会遇到它们不仅仅使用同一个子网的情况。我们可以简单的扩大子网来容纳更多的机器,但是倘若它们之间能够路由,那么就不用在同样的子网里。也就是说逻辑网络代表了可以路由的所有子网的集合,例如在楼栋A有子网192.168.0.0/24,在楼栋B有子网172.16.0.0/24,倘若它们可以路由,那么它们可以划入同一个的逻辑网络中,实现同一个目的。因而逻辑网络的配置与Network Site站点(可以理解为物理上部署在一起的服务器构成一个站点)一起配置,也是为了这个原因。同一个逻辑网络中的所有机器是可路由的,也即是可以相互连接的,而不同的逻辑网络是相互隔离的。
上图是创建逻辑网络的第1个界面,这里有3个选项,代表的是3个不同的物理网络环境。其中VLAN-baseed independent networks和Private VLAN network表示两种不同的基于VLAN的物理网络环境,如果的确有就选,但是一般情况下,我们不会在数据中心内使用VLAN,因而我们重点关注第1个选项One connected network,就是一般的情况下直接通过交换机路由器连接,而没有做VLAN配置的物理网络。
其中有两个复选框:Allow new VM networks created on this logical network to use network virtualization,这个需要特别注意VM network并不是虚拟网络的意思,而是虚拟机网络。该选项的意思是在这个逻辑网络的基础上允许自定义虚拟机网络,也就是第二层虚拟化。第二层虚拟化是我想的,不是官方概念,下图表示虚拟机网络的示意图。
由于SCVMM是支持多租户的,也就是说在同一个逻辑网络上(逻辑网络由管理员确定,租户无法更改),允许租户自定义自己的网络,租户可以控制自己的虚拟机,也可以控制自己的虚拟机网络,这样可以满足了租户的个性需求。
Create a VM network with the same name to allow virtual machines to access this logical network directly,则允许创建一个同名的虚拟机网络,以便用于虚拟机接入该逻辑网络。
虚拟机必需连接虚拟机网络,而虚拟机网络与逻辑网络关联。第一个复选框允许对逻辑网络做第二层虚拟化,那么随后还可以在该逻辑网络上再创建多个虚拟机网络,并自定义虚拟机网络IP池;第二复选框则允许默认创建一个同名的虚拟机网络,并且使用逻辑网络相同的IP池。如果以上两个复选框都不选择的话,那么该逻辑网络将毫无用处。虚拟机网络并不只用于虚拟机,而是用于虚拟网卡。物理服务器上创建的虚拟网卡也需要接入虚拟机网络,所以默认创建一个同名的虚拟机网络,并且使用逻辑网络相同的IP池的选项是非常重要的。
微软的官方文档中,逻辑网络之间是绝对隔离的,但是对于实现第二层虚拟化的虚拟机网络(非默认创建,这里容易混淆)之间却不是,那仅仅是便于租户对网络进行管理而已。
(2) Port Profiles端口配置文件
端口配置文件是为虚拟交换机的各类接口提供配置的,有两种端口的配置文件,我们参照一个物理交换机来理解会简单的多。物理交换机上的端口按照网络结构可以分为两种:一种是普通端口即连接下行设备的,例如连接每个服务器;另一种是上行端口即连接上行设备,例如连接上级交换机或路由器。端口配置文件也是为这两类在虚拟交换机上的端口而生。
Virtual Port Profile普通端口配置文件,可以规范下行端口的行为,例如该端口在Offload减负载,Security安全和Bandwidth带宽上的配置。其中网络领域Offload技术是蓬勃发展的,其主要目的都是为了减少网络I/O对CPU的消耗,提高效率,因而将CPU的负载转移到网卡上,那么可能就需要物理网卡的支持。另一个在带宽配置上,一个虚拟交换机可能连接多个逻辑网络(虚拟网络),那么可以配置它们之间的带宽如何分配。
Uplink Port Profile上行端口配置文件,配置虚拟交换机将连接那些逻辑网络(虚拟网络)。这里Network configuration可以详细到站点与逻辑网络的组合,本质上是决定哪些物理服务器参与连接逻辑网络,哪些逻辑网络参与连接虚拟交换机。
(3) Logical Switch逻辑交换机
Logical Switch逻辑交换机在操作系统层面上将对应创建一个虚拟交换机,并且围绕该虚拟交换机进行配置,也可以认为是一个虚拟交换机的配置中心。其配置的本质就是组合普通端口配置和上行端口配置,以方便在物理服务器和虚拟机上的配置。
如上图,我们将把蓝色与绿色标识的物理网络绑定为网卡组用于内部网络Internal Network,并通过Internal Logical Switch进行统一管理。将其上关联目标中的4个逻辑网络(虚拟网络)。其中有个选项SR-IOV单根虚拟化,如图中说明,即允许虚拟机直接使用某个物理网卡,简单可认为即某个物理网卡直接当做虚拟机的虚拟网卡,以提高网络I/O性能。那么该选项不符合我们的期望,因为我们希望创建网卡组做负载均衡,与SR-IOV是矛盾的。
另外两个配置项Uplink和Virtual Port即使分别配置关联哪些上行端口配置文件和普通端口配置文件。其中普通端口配置文件并不是直接一对一的配置,而是通过Port Classifications端口分组进行关联。因而我们中心的总体的配置逻辑如下图:
4、SCVMM中网络虚拟化配置
结合上文我们的网络虚拟化目标和SCVMM的相关配置功能,我们大体上需要完成如下图配置:
上图中的配置是一个完全的配置,也就是说并不是所有物理机器都需要4个Physical Network物理网络,也并不是每个虚拟机都需要接入所有的VM Network虚拟机网络,实际应用中,要根据实际需要。
(1) 创建Logical Network逻辑网络
我们利用每个物理机器上的4个物理网卡两两组合成网卡组,并在其上创建6个逻辑网络(虚拟网络),因为物理环境中没有VLAN配置,都选择One connected network方式。站点分为两个,一部分服务器在Buliding A,一部分服务器在Buidling N。这6个逻辑网络的配置如下:
逻辑网络 | 基于网卡组 | 站点 | IP地址池 | 第二层虚拟化 | 同名虚拟机网络 | 虚拟机网络 |
Management Network | Internal | Building ABuidling N | 192.168.0.0/24 | 否 | 是 | Management Network |
Cluster Network | Internal | Buidling N | 192.168.10.0/24 | 否 | 是 | |
Migration Network | Internal | Buidling N | 192.168.20.0/24 | 否 | 是 | |
Application Network | Internal | Buidling N | 192.168.30.0/24 | 是 | 是 | App NetworkDatabase Network |
Cernet Network | Public | Building ABuidling N | 121.192.x.x/26 | 否 | 是 | Cernet Network |
Datacenter Network | Public | Building ABuidling N | 172.16.8.0/24 | 否 | 是 | Datacenter Network |
完成后如下图:
(2) 创建Port Profile端口配置文件
每个物理网卡或者网卡组虚拟化后,可以在其上创建多个逻辑网络,但是这句话在SCVMM却不是显而易见的。你需要事先配置好逻辑网络,端口配置文件和逻辑交换机,而后在配置每个物理服务器的时候,将这些配置与物理机器的某个网卡或者多个网卡(自动构成网卡组)关联。也就是说你在进行逻辑网络,端口配置文件和逻辑交换机配置时是与硬件无关的,但是你需要知道你的目的是最终要与硬件网卡关联。
上行端口配置文件的配置方式是非常灵活的,有时让人难以把握。我们需要回到上行端口配置文件的本质,是为了统一配置物理服务器和逻辑网络的连接。这时你可能还需要明白处于不同地理位置的服务器,如不同楼栋或楼层的服务器可能配置会又不一样,那么上行端口配置文件就不会一样。也就是说上行端口配置文件出于需要关联的逻辑网络有关外还与站点有关。与站点关联的目的是规定该上行端口配置文件可以被应用到哪些物理服务器上。
我们以Internal Uplink Port- Building N为例看看上行端口配置文件的属性。Internal Uplink Port- Building N主要关联内部的逻辑网络,并且选择的服务器位于在Building N。
普通端口配置文件本质上是为了控制端口的行为,在不同逻辑网络间调配负载。SCVMM内置了一些,我们根据不同的逻辑网络也分别创建了一些。我们以Management Port Profile为例,Security暂不选,其他配置如下图,其中带宽权重为10,即不要超过总带宽的10%。
(3) 创建Logical Switch逻辑交换机
逻辑交换机的目的在于组合以上配置。需要特别注意的是对于普通端口配置文件,我们需要创建Port Classifications端口分组,而后通过端口分组关联普通端口配置文件。如下我们针对两个网卡组分别创建了两个逻辑交换机,其中Internal Logical Switch关联4个逻辑网络:Management Network、Cluster Network 、Migration Network和Application Network;Public Logical Switch关联2个逻辑网络:Cernet Network和Datacenter Netwrok。
接下来我们来看看Internal Logical Switch的配置。在Uplink选项卡中关联所有域Internal有关的上行端口配置文件。这样就让Internal Logical Switch关联上所有相关位置和所有属于Internal的逻辑网络。
在Virtual Port选项卡中关联相关的普通端口配置文件。
(4) 为物理服务器配置虚拟网络
所有的配置都准备好了,那么最后的步骤就是让物理服务器应用这些配置。我们通过在物理服务器上右键属性的Virtual Switches选项卡中来实现。如下图我们为名称为cloud-pm-cn01的物理服务器加入了如下两个Logical Switch(Virtual Switch),Internal Logical Switch和Public Logical Switch,每个Logical Switch都使用两张物理网卡,并在在其下加入需要该物理服务接入的逻辑网络所需要的Virtual Network Adapter虚拟网卡。
这里需要特别注意,每台物理服务器配置需保持一致,并且划归某个Logical Switch的物理网卡在物理链路上必须在同一个网络中。如果加入的物理网卡多于一个,将自动组成网卡组。在Uplink Port Profile列中需要选择该物理服务器物理位置相同的那个上行端口配置文件,以便与其所处物理位置相同的物理服务器通讯。
对其中每个虚拟网卡的配置如下图。需要特别注意的是Management虚拟网卡的配置。在完成物理服务器操作系统安装后,将物理机器加入域中,这时物理网卡Ethernet 01会配置域网络,当我们配置Management虚拟网卡时注意勾选This virtual network adapter inherits settings from the physical manangement adapter。这样Management虚拟网卡将获得Ethernet 01的配置(这时域网络会短暂断开)。VM Network选择对应的虚拟机网络,Port Profile选择对应的普通端口分组,以应用相关端口配置策略。
其实上图中对虚拟网卡的配置界面与虚拟机的虚拟网卡是相同的,接下来我们也看看虚拟机中如何应用虚拟网卡配置。
(5) 为虚拟机配置虚拟网络
我们对需要配置网络的虚拟机右键,选择Hardware Configuration选项卡,并为其添加虚拟网卡Network Adapter 1,如下图可见对该虚拟网卡的配置。
至此我们大体了解了Windows Server 2012 R2下通过SCVMM进行网络虚拟化配置流程,及其中的难点。接下来我会继续总结更多SCVMM搭建虚拟化平台的知识,请大家继续关注。