在之前的 vSphere虚拟网络01中,提到了vSphere中的两种虚拟交换机类型:标准交换机和分布式交换机。这篇里就虚拟交换机的知识进行一些深入的了解。
首先,虚拟交换机就是从软件层面来模拟一个Layer2的交换机。在物理网络中,交换机在Layer2利用它维护的CAM表来做点到点的数据包传输。在虚拟网络中,虚拟交换机检测到连接到它的虚拟端口的虚拟机,然后用MAC来转发流量到正确的目的地(点到点)。虚拟交换机基本上是用来在虚拟网络和物理网络之间建立连接的。
这里可以再看一下上一篇中用到的示意图
在ESXi安装之后,默认的配置有一个标准虚拟交换机,一个叫VM Network的端口组和一个作为ESXi管理口的叫vmk0的VMkernel port。这个默认配置可以用来实现基本的虚拟网络和物理网络的连通,如果你有更复杂的虚拟网络需求,我们就要自己来创建额外的VMkernel port,端口组或者虚拟交换机。
那么我们来查看下vSphere7版本的虚拟网络的一些限制https://configmax.vmware.com/guest?vmwareproduct=vSphere&release=vSphere%207.0&categories=2-0
从中我们能看到,ESXi主机支持最多4096个端口,其中8个作为预留口,但是最多活动端口是1024,其中8个作为预留口,那么最多可用并且活动端口就是1016。
关于隔离
在之前的vSphere虚拟网络01中提到了虚拟网络中的隔离,可以通过一个虚拟交换机的不同端口组设置不同VLAN ID来隔离,如下图
那么也可以通过多个虚拟交换机来直接做“物理隔离”,如下图
两种方式都可以做到隔离,但有什么不同呢?
首先,虚拟交换机是通过软件来模拟物理交换机的行为。那么在ESXi上创建越多的虚拟交换机就应该需要越多的资源来做交换功能。
其次,如果我们想做流量隔离,在单虚拟交换机上就需要配置VLAN,或者不用VLAN,用多虚拟交换机来“物理隔离”。因为在很多网络中,可能物理网络中也没有配置VLAN来做隔离,比如部门1连接物理交换机01,部门2连接物理交换机02,这样的物理隔离,那么我们就可以把部门1要用的虚拟资源连在虚拟交换机01上并且通过上行链路->物理网卡连接到物理交换机01上,然后部门2要用的虚拟资源连在虚拟交换机02上并且通过上行链路->物理网卡连接到物理交换机02上,这样部门1和部门2所需要的虚拟资源就“物理隔离”了,同时,Management和vMotion连接不同的物理交换机也可以实现管理和迁移的“物理隔离”。从整体上来说,我们也做到了业务部门的流量(部门1和部门2)和IT管理的流量(Management和vMotion)隔离。
最后我们看到图中每个虚拟交换机我们都设置了2个上行链路(冗余),这样单虚拟交换机需要2个物理网卡,4个虚拟交换机就需要8个物理网卡,这时候我们就要考量这台服务器是否有能力通过PCI插槽来接入这么多网卡了,因为PCI插槽还可能有连接阵列卡等设备的需求。
Tips:
不要因为你能创建多个虚拟交换机就去创建,要根据实际需求和硬件设备来具体分析,建议通过尽量少的虚拟交换机来实现需求。
标准交换机
标准交换机是通过ESXi主机来创建和管理的,这就意味着当你有多台ESXi主机时,你就要分别去每一台ESXi上创建标准交换机里的端口组等设置,可能这个工作量还不算什么,但是当一年之后你要去修改端口组,或者扩展端口组呢?(这种需求应该可以叫做Day2 operation吧)。
因为标准交换机不能集中管理,也许我们可以通过一些自动化脚本来实现,但自动化脚本也要适应上面提到的Day2 operation, 所以管理员的开销还是挺大的。
通过创建或者编辑标准交换机的操作界面,我们大致能了解到一些它的功能:
Layer2交换
IPv6
VLAN
网卡绑定
出口流量整形
安全策略
绑定和故障切换策略
总的来说,标准交换机可以解决大部分小型部署中的虚拟网络需求,我们应该避免在中型或大型部署中使用标准交换机,或者可以保留的使用有限的功能。更多的虚拟网络需求通过分布式交换机或者NSX来实现。
分布式交换机
分布式交换机在标准交换机的基础上,增加了一些额外的功能,而且提供了集中管理的接口。
比如:
入口流量整形
网卡绑定和故障切换策略中基于负载的绑定
端口洪泛控制
私有VLANs
以端口为单位的策略设置
端口镜像
NetFlow监控
端口状态监控
如图是个基于2台ESXi主机设置的分布式交换机示意图
所谓的集中管理,分布式交换机不是在ESXi主机上创建的,而是vCenter。在vCenter中在数据中心的Actions菜单中可以选择分布式交换机,然后创建或者导入。分布式交换机上的流量并不会通过vCenter来转发,来看一个分布式交换机的架构图。
从图中我们可以看到,vCenter上是分布式交换机的一个模板,设定了端口组,上行链路的个数。需要把ESXi主机加入分布式交换机,这时候就把交换机的模板推送到了加入的ESXi主机上,并且可以指定ESXi上的哪个物理网卡为分布式交换机的上行链路使用。ESXi主机上有一个Host proxy switch,它用来接收vCenter推送的模板,这样交换功能其实还是在ESXi主机上实现的。Day2 operation需要的设置可以在vCenter的模板上修改,就会推送到各个连接该分布式交换机的ESXi主机上,这就是集中管理。
这种架构,在vCenter上的分布式交换机实例被叫做控制平面/Control plane,交换机的管理是在这里实现的。在ESXi上的Host proxy switch被叫做数据平面/Data plane,交换机的数据交换是在这里发生的。
最后,来看一个多台ESXi所连接的分布式交换机的拓扑图吧。
左侧为端口组,我把vCenter自己单独放了一个端口组,把VMkernel放在一个端口组,剩余VM放在一个端口组。因为没有设置VLAN,实际上这几个端口组是可以互通的。
右侧为上行链路,这里我每个ESXi主机只设置了一个上行链路,对应一个ESXi上的vmnic。
如果win10这台虚拟机在esxi01这台主机上,u2004这台虚拟机在esxi02这台主机上,两台同在一个端口组的虚拟机,从拓扑图看来,直接在虚拟交换机就能交换数据,实际上,还是要通过各自的上行链路走到物理交换机才能交换数据的。