4. Nexus 底层高可用基础

在 Nexus 数据中心互联场景中,vPC(virtual Port Channel)是接入层与汇聚层之间实现链路冗余与带宽叠加的核心技术。它让两台独立的 Nexus 交换机在控制平面各自独立、在数据平面表现为一台逻辑设备,从而让下游服务器或交换机可以用普通静态 EtherChannel 或 LACP 同时上联两台设备,既避免 STP 阻塞,又获得跨设备的链路冗余。理解 vPC 的高可用,必须从四个相互咬合的机制入手:vPC 域、Peer-Link、Peer-Keepalive、角色选举与故障切换。

一、vPC 域:逻辑设备的“身份证”

vPC 域(vPC Domain)是两台 vPC 对等体(vPC Peer)组成的逻辑边界,用 domain-id 标识,取值范围 1~1000。同一域内两台交换机必须配置相同的 domain-id,并各自拥有唯一的 vPC 系统 MAC 和 vPC 系统优先级。域内所有 vPC 端口共享同一套角色与转发状态,因此域是故障切换的最小作用范围。

配置示例(两台设备对称):

feature vpc
vpc domain 10
  peer-switch
  peer-keepalive destination 10.0.0.2 source 10.0.0.1 vrf management
  role priority 100
  system-priority 32667
  peer-gateway
  ip arp synchronize

其中 peer-switch 让两台设备使用相同的 STP 桥 ID,避免下游看到两个根桥;peer-gateway 允许对等体代答对方网关 MAC 的 ARP,减少跨 Peer-Link 转发;ip arp synchronize 用于加快故障切换后的 ARP 收敛。这些参数都服务于同一个目标:让“两台设备像一台”这件事在故障时依然成立。

二、Peer-Link:数据平面的主干通道

Peer-Link 是两台 vPC 对等体之间的二层聚合链路,通常由 2~4 条 10G/25G/40G/100G 接口组成 Port-Channel。它承担三类流量:一是 vPC 成员端口收到的、需要发往对端成员端口的单播流量;二是广播、未知单播、组播(BUM)流量;三是故障切换期间的临时转发流量。Peer-Link 必须使用独立的物理端口,不能与 vPC 成员端口复用,也不建议承载普通业务 VLAN 的三层流量。

Peer-Link 的健康状态直接决定 vPC 是否“双活”。一旦 Peer-Link 全部成员 down,vPC 会进入 Primary/Secondary 分裂状态:Primary 侧继续转发,Secondary 侧关闭所有 vPC 成员端口,防止双活脑裂导致 MAC 漂移和转发环路。

三、Peer-Keepalive:控制平面的心跳线

Peer-Keepalive 是一条独立于 Peer-Link 的三层连通性通道,通常走管理口或带外网络,源/目的地址为两台设备的稳定 IP。它只用于传递心跳和角色协商消息,不承载业务数据。其核心价值在于:当 Peer-Link 故障但设备本身仍存活时,Keepalive 仍能维持,从而让系统区分“链路故障”与“设备故障”。

如果 Peer-Link 和 Peer-Keepalive 同时失效,两台设备会各自认为对方已死,双双进入 Primary 状态并同时转发,形成双活脑裂。因此工程上要求 Keepalive 必须与 Peer-Link 物理路径分离,且建议配置 peer-keepalive destination ... source ... vrf management 明确指定 VRF,避免路由波动影响心跳。

vPC 域高可用机制:Peer-Link、Peer-Keepalive 与角色选举 vPC Domain 10 Nexus A(Primary) role priority = 100 system-priority = 32667 vPC 成员端口:Eth1/1 Nexus B(Secondary) role priority = 200 system-priority = 32667 vPC 成员端口:Eth1/1 Peer-Link Po10(2×25G) 承载 BUM 与跨设备单播 Peer-Keepalive Mgmt VRF 心跳 10.0.0.1 ↔ 10.0.0.2 下游服务器 / 接入交换机 LACP EtherChannel(跨设备双活) vPC 成员链路 vPC 成员链路 角色选举:先比 role priority(小者优),再比系统 MAC(小者优);Peer-Link 全断时 Secondary 关闭 vPC 端口

四、角色选举:谁主谁备

vPC 域内两台设备通过角色选举确定 Primary 与 Secondary。选举顺序为:先比较 role priority,数值小者优先;若相同,再比较系统 MAC,MAC 小者优先。角色优先级默认 32667,工程上通常把希望成为 Primary 的设备设为 100,另一台设为 200,使角色稳定可预期。

角色并非“主备转发”关系。在 Peer-Link 正常时,Primary 和 Secondary 都转发流量,Secondary 只是不响应某些控制协议(如 STP 根桥、HSRP/VRRP 的 Active 角色通常由 Primary 侧承担)。只有在 Peer-Link 故障时,Secondary 才会关闭 vPC 成员端口,退化为单侧转发。

五、故障切换:三种典型场景

场景一:Peer-Link 单条成员链路故障。Port-Channel 自动收敛,剩余成员继续承载,vPC 状态不变,业务无感知。此时应检查 show vpc brief 中 Peer-Link 状态仍为 up,show port-channel summary 确认成员数减少但聚合仍 up。

场景二:Peer-Link 全部故障,Keepalive 正常。系统判定为“链路故障”,Secondary 关闭所有 vPC 成员端口,Primary 继续转发。下游 LACP 会感知到一侧链路 down,流量全部切到 Primary 侧。恢复 Peer-Link 后,Secondary 重新加入,vPC 成员端口重新 up,流量恢复双活。这是最常见的故障切换路径。

场景三:Peer-Link 与 Keepalive 同时故障。两台设备互相认为对方已死,双双进入 Primary 并同时转发,形成双活脑裂。此时下游可能看到两个根桥、两个网关 MAC,导致 MAC 漂移、ARP 异常、流量黑洞。恢复后需要通过 show vpc 检查是否有 peer-link down 与 keepalive down 同时出现的记录,并排查管理网络与 Peer-Link 的物理分离是否到位。

六、工程检查要点

  • Peer-Link 使用独立物理端口,建议 2 条以上成员,跨不同线卡/不同上行模块,避免单点。
  • Peer-Keepalive 走管理 VRF 或带外网络,与 Peer-Link 物理路径分离,避免共因故障。
  • role priority 显式配置,避免默认值相同导致角色随机。
  • 启用 peer-switch、peer-gateway、ip arp synchronize,缩短故障切换收敛时间。
  • 定期用 show vpc brief、show vpc consistency-parameters 检查域内参数一致性,类型 1 参数不一致会直接导致 vPC 成员端口 down。
判断 vPC 是否健康的三个关键输出:show vpc brief 中 Peer-Link 与 Keepalive 均为 up;show vpc role 中角色稳定且与规划一致;show vpc consistency-parameters 中无类型 1 不一致项。

掌握 vPC 域、Peer-Link、Peer-Keepalive 与角色选举的配合关系,就能在 Peer-Link 抖动、Keepalive 中断、设备重启等场景下快速判断系统处于双活、单活还是脑裂状态,并据此选择恢复顺序与排查方向。这是 Nexus 底层高可用最基础、也最容易被忽视的一环。