3. vSphere分布式交换机架构与初始化

标准交换机(vSS)的配置是“每台主机各管各的”,当集群规模扩大到十几台甚至几十台 ESXi 主机时,端口组名称、VLAN ID、上行链路数量稍有偏差,就会造成虚拟机迁移后网络不通。vSphere 分布式交换机(vSphere Distributed Switch,vDS)正是为解决这一问题而设计的:它把交换机的管理面集中到 vCenter,把转发面下沉到各台 ESXi 主机,从而在集群范围内提供一致的虚拟网络视图。

一、体系结构:控制平面与数据平面分离

理解 vDS 的关键,是理解它的两层结构。

控制平面(Control Plane)位于 vCenter Server 中,由 Distributed Switch 对象承载。它保存的是“应该是什么样”的配置:交换机名称与版本、上行链路端口数、分布式端口组(dvPortGroup)、VLAN/VXLAN 配置、安全与流量整形策略、NetFlow、端口镜像、LACP 与 NIOC 等。这些配置只存在于 vCenter 数据库,并作为“期望状态”下发给主机。

数据平面(Data Plane)位于每台已加入 vDS 的 ESXi 主机上,由主机本地的隐藏交换机(在 ESXi 中体现为 dvSwitch 代理)执行。它负责真正的帧转发:虚拟机 vNIC 发出的以太帧进入分布式端口,按端口组策略打上 VLAN 标签,再经上行链路(Uplink)送往物理交换机。数据平面不依赖 vCenter 在线——即使 vCenter 宕机,已下发的转发规则仍然生效,虚拟机通信不受影响,只是无法再修改配置。

这种分离带来两个直接结论:其一,配置一次、全集群生效,消除了逐主机配置漂移;其二,vCenter 是管理单点而非转发单点,规划时应把 vCenter 自身放在独立的管理网络中,避免“改网络把自己改断”。

在数据平面内部,vDS 还引入了网络资源池的概念。分布式端口组本质上就是一组策略相同的端口集合,可视为“端口资源池”;在其之上,Network I/O Control(NIOC)把物理上行链路带宽抽象为可分配的资源池,按流量类型划分份额:例如 v3 版本中默认提供管理、vMotion、NFS、iSCSI、vSphere Replication、虚拟机流量等系统流量类别,每类可设置份额(Shares)、预留(Reservation)和上限(Limit)。当多条上行链路组成 LAG 或绑定组时,NIOC 按份额比例分配带宽,保证关键流量在拥塞时优先获得转发机会。

vDS 控制平面与数据平面分离架构 控制平面 · vCenter Server 保存期望状态,下发配置,不参与转发 Distributed Switch 版本 / 上行链路数 MTU / LACP 分布式端口组 VLAN / 安全策略 流量整形 NIOC 资源池 份额 / 预留 / 上限 按流量类型分配 高级功能 NetFlow / 端口镜像 健康检查 配置下发(期望状态) 数据平面 · ESXi 主机本地转发 vCenter 离线仍可转发,规则已驻留主机 ESXi-01 dvSwitch 代理(本地) vmnic0 vmnic1 分布式端口 → VLAN 标签 按 NIOC 份额调度上行 ESXi-02 dvSwitch 代理(本地) vmnic0 vmnic1 同一端口组策略 与 ESXi-01 完全一致 ESXi-03 dvSwitch 代理(本地) vmnic0 vmnic1 vMotion / VM 流量 共享同一资源池 物理交换机(上行链路汇聚)

二、创建 vDS 与添加主机成员

创建 vDS 的入口在 vSphere Client 的“网络”清单中。右键数据中心 → 新建分布式交换机,向导会依次询问:名称、版本、上行链路端口数、是否创建默认端口组、是否立即添加主机。

版本选择直接决定可用功能。常见对应关系是:6.5 支持 NIOC v3 与 LACP;6.6 引入 MAC 学习;7.0 支持 NIOC v3 增强与网络卸载;8.0 支持更细粒度的流量标记。若集群中混有旧版本 ESXi,vDS 版本不能高于最低主机版本,否则低版本主机无法加入。

上行链路端口数是逻辑端口数量,不是物理网卡数量。它决定每台主机最多能分配多少条上行链路,通常按“每主机物理上行数 × 主机数”估算,例如 8 台主机、每台 2 条上行,可设 16~32。设置偏小会导致后续主机无法分配上行链路,且该值创建后不能直接调小。

向导中的“创建默认端口组”建议勾选,它会生成一个名为 DPortGroup 的端口组,可作为后续模板。若暂不添加主机,vDS 会处于“未关联主机”状态,此时它只是一个配置容器,不产生任何转发行为。

添加主机成员有两种方式:一是创建向导中直接选择主机并分配物理网卡;二是后续通过“添加和管理主机”批量操作。批量添加时,向导会要求为每台主机指定物理上行链路(如 vmnic0、vmnic1)以及是否迁移 VMkernel 适配器。这里有一个必须谨慎的选项:是否把现有 VMkernel 适配器(管理、vMotion)迁移到 vDS。若迁移管理网络,一旦上行链路分配错误,主机将失联。稳妥做法是先只添加主机、分配上行链路,暂不迁移 VMkernel,待验证连通后再迁移。

三、基本属性设置与验证

vDS 创建完成后,需要设置几项基础属性:

  • MTU:默认 1500。若计划承载 VXLAN、iSCSI 或 vMotion,通常设为 9000(巨型帧),且必须保证物理交换机、上行链路、VMkernel 适配器三处一致,否则会出现大包丢弃、vMotion 卡顿。
  • NIOC:默认启用。可在“资源分配”中查看各流量类型的份额,例如 vMotion 设为 50、虚拟机流量设为 100,表示拥塞时虚拟机流量获得约两倍转发机会。
  • 发现协议:CDP 或 LLDP,用于识别上行链路对端物理交换机端口,排障时非常有用。
  • 网络资源池:通过端口组划分不同业务网络,例如 VLAN 10 管理、VLAN 20 vMotion、VLAN 30 虚拟机业务,每个端口组独立设置安全策略(混杂模式、MAC 更改、伪传输)。

验证是否成功,可按以下顺序检查:在“网络 → 分布式交换机”中确认主机成员数与上行链路分配状态;在每台主机的“配置 → 网络 → 物理网卡”中确认 vmnic 已绑定到 vDS 且链路状态为“已连接”;用 esxcli network vswitch dvs vmware list 查看本地 dvSwitch 代理是否加载;最后从虚拟机 ping 网关,确认 VLAN 与上行链路转发正常。

教学示例:某 3 主机集群,每台 2 张万兆网卡。创建 vDS 名为 vDS-Prod,版本 7.0,上行链路端口数 8,MTU 9000,启用 NIOC。创建三个端口组:PG-Mgmt(VLAN 10)、PG-vMotion(VLAN 20)、PG-VM(VLAN 30)。每台主机分配 vmnic0、vmnic1 为上行链路,先不迁移 VMkernel,验证物理链路 Up 后再迁移 vMotion 适配器。该示例参数为合理假设,实际部署需按物理网络规划调整。

需要特别注意的是,vDS 的配置一致性是它的最大价值,也是它的风险点:一次误改端口组 VLAN,会同时影响所有关联主机上的虚拟机。因此生产环境中建议开启 vDS 配置备份,并在变更前记录端口组与上行链路的当前状态,以便快速回退。