VMware网络原理

VMware网络纳管原理介绍

VMware是一个虚拟化平台,如果不采用NSX网络虚拟化插件,则只提供二层网络交换的功能,不具备完整的网络管理能力。云联壹云 为VMware补足网络管理的能力,提供IP地址和网络配置信息管理的能力。

基本概念

VMware中有以下基本网络概念:

虚拟交换机 (vSwitch)

每台ESXi宿主机内可以配置多个虚拟交换机,实现虚拟机之间以及虚拟机和外部物理网络的网络交换。

分布式虚拟交换机(Distributed vSwitch)

被vCenter纳管的多台宿主机之间可以定义共享的分布式虚拟交换机,实现跨ESXi的虚拟机之间的二层网络交换。

端口组(Port Group)

端口组是虚拟交换机或分布式虚拟交换机下的逻辑概念,对应一个VLAN网段。

基本原理

简单地说,VMware中的虚拟交换机或者分布式虚拟交换机和 云联壹云 中的二层网络对应。但是由于不同的虚拟交换机有可能对接的是同一个三层物理设备,因此有可能多个虚拟交换机对应的是一个二层网络。

VMware中的端口组和 云联壹云 的IP子网对应。端口组和对应的IP子网之间通过VLAN ID关联。同样也有可能多个端口对应一个IP子网的情况。

下面总结了VMware相关概念和 云联壹云 相关概念的关联关系。

VMware概念云联壹云 概念如何关联关联关系
虚拟机虚拟机通过UUID关联一对一
端口虚拟网卡通过IP地址关联一对一
端口组IP子网通过VLAN ID关联多对一
虚拟交换机二层网络通过端口组关联多对一

纳管 VMware 云账号时,平台可以获得每台宿主机的IP地址。如果虚拟机正在运行,并且其内部vmtools正常运行,则平台也能获得虚拟机的IP地址。根据宿主机以及宿主机上虚拟机的IP地址信息,平台会自动判断ESXi宿主机和哪个二层网络关联。从而确定ESXi宿主机的网络拓扑。

在 云联壹云 中创建VMware虚拟机时,平台会自动从虚拟机对接的IP子网中为虚拟机分配一个IP地址。在VMware平台创建该虚拟机时,平台会在VMware中的ESXi宿主机上找到一个跟该IP子网的VLAN ID匹配的端口组(如果有多个,则选择其中一个),为虚拟机分配一个端口。并且为该端口配置上为虚拟机分配的IP地址以及子网掩码,网关,DNS等配置信息。

VMware网络配置

纳管VMware云账号时,平台内应该有VMware对应的二层网络和IP子网配置。这些二层网络和IP子网可以提前配置好,也可以在纳管时,由平台自动生成一部分,再时候补足一部分。

提前配置

推荐提前配置。但前提是对待纳管的VMware集群的网络拓扑比较了解。

配置原则如下:

  1. 确定VMware对接的广播域。比较常见的是一个广播域,但是对于比较大的集群,则可能有多个。同时也有的场景为了区分虚拟机的业务和管理流量,为一个较小规模的VMware集群配置两个广播域的。为每个广播域创建一个二层网络(wire)。
  2. 确定每个广播域内的IP网段,以及每个网段的VLAN ID,网关,子网掩码等信息。在对应的二层网络(wire)下为每个网段创建一个IP子网,并且配置VLAN ID,网关,子网掩码等信息。

事后配置

云联壹云 纳管一个VMware账号后,会自动地扫描VMware账号中ESXi宿主机的虚拟交换机,分布式虚拟交换机,以及物理网卡对接的端口组的信息。如果宿主机的IP地址在平台中没有对应的IP子网,则会按照二层网络对应虚拟交换机或分布式虚拟交换机,IP子网对应端口组的原则,自动地创建二层网络和IP子网,并且创建的IP子网包含了宿主机的IP地址。因为平台不清楚具体的三层网络拓扑,会用最保守的算法,为每个虚拟交换机单独创建一个二层网络,并且把对应的ESXi宿主机和对应的二层网络关联。因此,创建出来的二层网络可能跟实际不想符合。此时,需要根据实际的三层网络拓扑来合并二层网络。例如,已知几台ESXi宿主机实际对接的同一个三层交换机,则需要将这些宿主机对接的二层网络进行合并。

同时,平台会获得虚拟机的IP地址(通过vmtools获得)。如果这个IP地址在平台有对应的IP子网,并且连接关系符合网络约束(也就是虚拟机所在的宿主机对接的二层网络和IP子网的二层网络一致),则会自动将虚拟机对接到该IP子网,并且将该IP占住。否则,会将该IP地址保存在虚拟机的标签中,标签key为“sync_ips”。此时,用户在平台的web控制台可以看到这台虚拟机关联了这个IP,但是会看到提示”该IP地址无归属IP子网!请添加包含该IP地址的IP子网并重新同步云账号“。管理员应该在平台上找到该虚拟机对应的ESXi宿主机关联的二层网络,在该二层网络上创建合适的IP子网,该IP子网包含该虚拟机的IP地址。创建后,重新同步云账号,则虚拟机会自动跟新建的IP子网管理,并且占住这个IP地址。