多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

VLT虚拟链路中继实战:从原理到OS10配置与排障

VLT虚拟链路中继实战:从原理到OS10配置与排障 1. 为什么数据中心里需要VLT从设备冗余聊起先说个场景。你有一台接入交换机下连几十台服务器上连两台核心交换机做链路聚合。平时跑着没事但只要这台接入设备宕机底下所有业务全断这就是典型的单点故障。为了消除这个单点通常的做法是双上连——服务器插两块网卡分别接到两台不同的接入交换机然后靠STP生成树协议把冗余链路堵住一条留一条转发。但STP的代价是冗余链路平时闲着不用利用率撑死50%。而且STP收敛速度再快从链路故障到切换完成总有那么几秒钟业务要中断。等你把堆叠Stacking引入进来问题又变成了管理域扩大、版本耦合、升级维护窗口长。万一堆叠分裂整台逻辑设备直接躺平。Dell EMC的VLTVirtual Link Trunking虚拟链路中继就是冲着这个痛点来的。它的思路很直接把两台物理交换机在控制层面虚拟化成一个整体但数据转发层面仍然是各自独立的。也就是说接入交换机或者服务器可以同时跨两台设备做链路聚合所有链路都是活的利用率100%。任何一台设备宕机流量在毫秒级跳到另一台业务无感知。这套机制在Dell的网络设备体系里已经非常成熟几乎全系列支持而且配置思路上比传统VRRP双活链路的方案要顺手得多。这篇博客我会直接以Dell EMC OS10也就是运行在S系列、Z系列上的操作系统为例把VLT从原理到配置、从验证到排障讲透顺带说一说我踩过的一些坑。1.1 VLT到底是什么一台虚拟交换机两台物理设备VLT的核心概念可以这样理解两台交换机通过一根或多根专用的互联链路VLT Interconnect简称VLTi连起来这两台交换机在二层行为上表现得像一台交换机。对下游设备来说它们看到的是一台逻辑设备因此可以跨两台物理设备做Port-Channel所有成员链路都能转发流量。这里的几个关键点是VLTi必须是物理端口或Port-Channel承载两台VLT节点之间的控制面通信和部分数据面通信一般建议用40G或100G端口至少两根链路做冗余。两台设备各自拥有独立的控制面也就是各自的MAC地址表、路由表、ARP表仍然是独立的。它们之间只是通过VLTi同步一部分必要状态比如MAC地址、ARP表项、IGMP表项而不是像堆叠那样跑一套完全同步的控制面。下游设备服务器、接入交换机、路由器可以跨两台VLT节点做LACP聚合。Dell的VLT支持两种模式一种是下游设备启用LACP另一种是VLT节点自己配置静态聚合。生产环境强烈建议启用LACP收敛更快状态更清晰。VLT域内有一个唯一的虚拟MAC地址两台设备对外表现一致。这样下游设备在做LACP协商时看到的是同一个系统MAC就不会因为两端MAC不同而产生聚合协商异常。用一句话概括VLT是控制面各管各转发面一起扛的设计。相比堆叠它没有跨设备控制面同步的巨大风险相比STP双上连它把冗余链路真正利用了起来。1.2 和堆叠、STP方案放在一起比一比很多朋友一开始会纠结既然有堆叠为什么还要用VLT我把三个方案放在一起对比你就能看清各自的适用场景。方案控制面转发面冗余链路利用率故障域升级维护STP双上连独立独立低约50%单台设备简单堆叠统一主控备控统一跨设备高整个堆叠域需整体升级VLT独立独立互联协作高100%单台物理设备可逐台升级堆叠最大的问题是控制面统一。比如两台交换机堆叠成一台逻辑交换机实际上有主备之分主设备承载控制面备设备热备。一旦堆叠链路异常导致脑裂两台设备同时以为自己是主就会出现MAC地址冲突、全网环路等灾难性后果。很多运维团队被堆叠搞怕了不是没道理。VLT则把控制面故障域控制在单台设备之内。两台VLT节点之间即使VLTi中断两台设备仍然能独立工作只是跨设备聚合链路会退化为单设备工作模式不会产生环路。这个设计在健壮性上比堆叠好很多。代价是需要额外配置VLTi和VLT域参数以及下游设备必须支持跨设备聚合LACP层面的双归。STP方案就不多说了配置最简单但链路利用率低。如果流量模型是南北向为主、东西向带宽需求不大STP双上连其实也够用。但一旦业务对延迟和带宽敏感VLT几乎是必选项。2. 动手之前的整体设计VLT域、VLTi和VLAN的规划配置VLT之前最忌讳的是拿到设备就开干。VLT涉及到的可配置项虽然不多但每一条都关系到最终效果的成败。我通常的习惯是先画一张拓扑图把VLT节点、VLTi链路、下游接入设备、VLAN规划全部标出来然后才进CLI。2.1 VLT域的基本拓扑模型一个标准的VLT部署包含以下组成部分两台VLT节点VLT Peer一般同型号、同软件版本A和B角色没有主次之分所有参数对称配置。VLTi链路连接两台VLT节点的物理链路建议至少两根做成一个Port-Channel。VLTi上面跑的是VLT控制协议和部分数据流量。VLT域VLT Domain给两台设备一个共同的域ID1~1000同时需要配置一个虚拟MAC地址和keepalive管理地址。keepalive走带外管理网络用来在VLTi故障时探测对端存活状态。下游双归设备可以是服务器双网卡绑定、接入交换机两条链路上连、防火墙双口聚合等通过LACP跨两台VLT节点做聚合。上游设备VLT也可以对上游做双归就是两台VLT节点各自上连核心交换机或者同样做跨设备聚合。配置VLT之前还有几个硬性条件要确认。第一两台设备的系统软件版本必须一致否则VLT协议通信可能出现兼容性问题。第二VLTi建议使用独立的高带宽端口10G起步、40G/100G更好不要和业务流量挤在一起。第三keepalive需要规划一个独立的管理VLAN或带外网段确保VLTi故障时keepalive仍然可达。2.2 VLT与VLAN、STP、LACP的耦合关系VLT本身是一个二层的逻辑结构它和VLAN、STP、LACP都有深度耦合。如果这些配套参数不提前规划好后面很可能出现VLT起来但业务不通的尴尬局面。VLAN方面VLT域内的VLAN必须在两台节点上保持一致。Dell OS10支持VLT VLAN自动同步但前提是你在两台设备上配置的VLAN集合必须相同。如果A上有VLAN 100而B上没有那么跨设备聚合成员的流量在B侧就会直接丢掉而且这种问题很难排查。STP方面VLT节点上的STP仍然是独立运行的。VLT本身不依赖STP但下游如果接入的是普通交换机且没有做跨设备聚合STP仍然需要在两台VLT节点上正常启用以避免环路。而如果下游直接通过LACP双归接入VLT那么VLT协议会屏蔽STP对聚合成员端口的阻塞逻辑跨设备聚合端口保持转发状态。LACP方面下游服务器的双网卡绑定要和VLT配合通常要求使用802.3adLACP模式。VLT的虚拟MAC地址确保两台VLT节点在LACP协商中表现为同一个系统这样下游的LACP聚合才能正常建立。如果下游设备不支持LACP只能用静态聚合那么VLT节点上对应的VLT端口也必须配置为静态聚合模式双方要保持一致。3. 一步步配置VLTOS10下的完整可复现步骤理论讲再多不如直接上配置。我以Dell EMC OS10版本为基准两台接入交换机分别命名为Leaf-1和Leaf-2通过40G端口Eth1/1/1和Eth1/1/2互连下游两台服务器分别用两个10G端口双归到Leaf-1和Leaf-2上。3.1 物理端口规划和路径检查配置前先在两台设备上确认端口状态。OS10里查看端口信息用show interface status你需要确认几点VLTi使用的端口状态为up带宽正常双归下游的端口没有被误配到其他VLAN或Port-Channel里管理接口的IP已经配置好keepalive可用。我个人的习惯是给VLTi单独规划一个VLAN比如VLAN 4000把VLTi端口放进去并在这个VLAN的SVI上配置keepalive地址。这样VLTi数据流量和keepalive流量分离两个层面各走各的定位问题也不会云里雾里。3.2 Leaf-1和Leaf-2的VLT参数配置下面是Leaf-1上的关键配置。OS10的配置方式和传统N系列OS6/OS9不同已经不是interface rangeswitchport那一套老写法了而是基于接口配置组Interface Profile和智能VLANSmart VLAN新模型。如果你是从老设备迁移过来这部分最容易栽跟头。先看Leaf-1的配置Leaf-1# configure terminal Leaf-1(config)# interface port-channel 128 Leaf-1(config-if-po-128)# description VLTi-Leaf-1-to-Leaf-2 Leaf-1(config-if-po-128)# switchport mode trunk Leaf-1(config-if-po-128)# exit Leaf-1(config)# interface ethernet 1/1/1 Leaf-1(config-if-eth1/1/1)# description VLTi-Port-1 Leaf-1(config-if-eth1/1/1)# no switchport Leaf-1(config-if-eth1/1/1)# channel-group 128 mode active Leaf-1(config-if-eth1/1/1)# exit Leaf-1(config)# interface ethernet 1/1/2 Leaf-1(config-if-eth1/1/2)# description VLTi-Port-2 Leaf-1(config-if-eth1/1/2)# no switchport Leaf-1(config-if-eth1/1/2)# channel-group 128 mode active Leaf-1(config-if-eth1/1/2)# exit Leaf-1(config)# vlt-domain 1 Leaf-1(config-vlt-1)# discovery-interface port-channel 128 Leaf-1(config-vlt-1)# virtual-mac aa:bb:cc:dd:ee:01 Leaf-1(config-vlt-1)# peer-routing Leaf-1(config-vlt-1)# link-local-ip 2.0.0.1 Leaf-1(config-vlt-1)# keepalive destination-ip 2.0.0.2 Leaf-1(config-vlt-1)# exitLeaf-2上的配置和Leaf-1完全对称唯一差别是keepalive的源地址和目的地址对调Leaf-2# configure terminal Leaf-2(config)# interface port-channel 128 Leaf-2(config-if-po-128)# description VLTi-Leaf-2-to-Leaf-1 Leaf-2(config-if-po-128)# switchport mode trunk Leaf-2(config-if-po-128)# exit Leaf-2(config)# interface ethernet 1/1/1 Leaf-2(config-if-eth1/1/1)# description VLTi-Port-1 Leaf-2(config-if-eth1/1/1)# no switchport Leaf-2(config-if-eth1/1/1)# channel-group 128 mode active Leaf-2(config-if-eth1/1/1)# exit Leaf-2(config)# interface ethernet 1/1/2 Leaf-2(config-if-eth1/1/2)# description VLTi-Port-2 Leaf-2(config-if-eth1/1/2)# channel-group 128 mode active Leaf-2(config-if-eth1/1/2)# exit Leaf-2(config)# vlt-domain 1 Leaf-2(config-vlt-1)# discovery-interface port-channel 128 Leaf-2(config-vlt-1)# virtual-mac aa:bb:cc:dd:ee:01 Leaf-2(config-vlt-1)# peer-routing Leaf-2(config-vlt-1)# link-local-ip 2.0.0.2 Leaf-2(config-vlt-1)# keepalive destination-ip 2.0.0.1 Leaf-2(config-vlt-1)# exit几个参数我解释一下。discovery-interface port-channel 128是让VLT协议通过VLTi来发现对端这个Port-Channel同时也承担了keepalive之外的VLT控制报文传输。virtual-mac两台设备必须配置相同的值下游LACP协商才能成功。peer-routing是开启VLT对等路由功能这个建议统一打开否则跨VLT的路由流量会强制走VLTi转发效率大打折扣。link-local-ip和keepalive destination-ip分别配置本端keepalive源地址和对端目的地址注意不是配管理IP而是VLT keepalive专用地址。3.3 给VLT节点配置业务VLAN和双归接入端口VLT域配置保存后接下来是把业务VLAN和双归端口加入VLT。我在Leaf-1上配置业务VLAN 100服务器网段和VLAN 200存储网段并把双归服务器的两个端口做成Port-Channel 10加入VLTLeaf-1(config)# interface vlan 100 Leaf-1(config-if-vlan-100)# description Server-Network Leaf-1(config-if-vlan-100)# exit Leaf-1(config)# interface vlan 200 Leaf-1(config-if-vlan-200)# description Storage-Network Leaf-1(config-if-vlan-200)# exit Leaf-1(config)# interface port-channel 10 Leaf-1(config-if-po-10)# description Dual-homed-Server-A Leaf-1(config-if-po-10)# switchport access vlan 100 Leaf-1(config-if-po-10)# vlt-port 10 Leaf-1(config-if-po-10)# exit Leaf-1(config)# interface ethernet 1/1/10 Leaf-1(config-if-eth1/1/10)# description ServA-NIC1 Leaf-1(config-if-eth1/1/10)# channel-group 10 mode active Leaf-1(config-if-eth1/1/10)# exitLeaf-2上需要做的是完全对称配置Leaf-2(config)# interface vlan 100 Leaf-2(config-if-vlan-100)# description Server-Network Leaf-2(config-if-vlan-100)# exit Leaf-2(config)# interface vlan 200 Leaf-2(config-if-vlan-200)# description Storage-Network Leaf-2(config-if-vlan-200)# exit Leaf-2(config)# interface port-channel 10 Leaf-2(config-if-po-10)# description Dual-homed-Server-A Leaf-2(config-if-po-10)# switchport access vlan 100 Leaf-2(config-if-po-10)# vlt-port 10 Leaf-2(config-if-po-10)# exit Leaf-2(config)# interface ethernet 1/1/10 Leaf-2(config-if-eth1/1/10)# description ServA-NIC2 Leaf-2(config-if-eth1/1/10)# channel-group 10 mode active Leaf-2(config-if-eth1/1/10)# exit这里的关键是vlt-port 10这条命令。它把Port-Channel 10声明为VLT端口编号必须和实际Port-Channel号一致。两台Leaf上配置的VLT端口号必须相同这样VLT控制面才认为它们是同一个跨设备聚合。如果两端的VLT端口号不一致一般不会报错但下游LACP聚合状态会异常链路起不来。3.4 配置保存和基础状态验证配置完成后保存配置并重新加载验证。OS10的保存命令是write memory注意和旧版OS9不一样不要敲copy running-config startup-config虽然也能用但建议统一用新命令。重新加载后执行以下命令验证VLT状态Leaf-1# show vlt Leaf-1# show vlt role Leaf-1# show vlt mac-in-mac-table Leaf-1# show vlt keepaliveshow vlt是核心命令输出中你会看到Domain ID、Roleprimary/secondary这个角色是自动选举的两台设备没有手动主备之分、VLTi链路状态、对端MAC地址等。Role为primary的VLT节点负责处理VLT控制信息但这不影响数据转发不要误以为primary承担全部流量。show vlt role会显示当前节点在VLT域中的角色。show vlt keepalive用来检查keepalive链路是否正常如果显示destination unreachable说明keepalive配置有问题需要检查管理地址和路由。到这里VLT的基本配置已经完成了。接下来我详细说一下业务流量是怎么走的以及遇到问题时应该从哪里查起。4. 流量走向和VLT协议原理搞懂这几个机制排障就赢了一半配置能敲出来是一回事真正遇到故障能定位是另一回事。VLT的流量模型和协议机制如果只停留在两台设备虚拟成一台这个层面排障时你会非常痛苦。我把自己觉得最关键的几个机制拆开讲。4.1 单播流量本地优先转发Local Bias是关键VLT域内单播流量遵循本地优先原则。比如服务器A双归接入Leaf-1和Leaf-2它发出的单播帧到达两台设备后Leaf-1负责转发它本地的流量Leaf-2负责转发它本地的流量两台设备之间不会因为跨设备聚合而出现大量流量绕行VLTi。但在某些特殊场景下如果Leaf-1收到去往服务器A的流量而服务器A的MAC表项只在Leaf-2上学到Leaf-1会通过VLTi链路把流量送到Leaf-2由Leaf-2从本地的物理端口转发出去。这种情况下流量会绕行VLTi但VLT协议会自动学习对端设备的MAC表项正常情况下不会出现转发黑洞。VLTi还有一个特殊机制VLTi只转发必要的流量不做普通二层的全量转发。如果Leaf-1收到广播帧它只会在本地端口和VLTi上泛红Leaf-2收到VLTi上的广播帧后会检查本地是否有对应VLT端口如果本地VLT端口存在才向外转发。这个机制避免了很多无谓的广播风暴。4.2 广播/组播流量VLT的特殊处理方式广播帧在VLT域内的处理很特殊。Leaf-1收到一个广播帧会把它从所有本地非VLT端口转发出去同时通过VLTi送到Leaf-2。Leaf-2收到后会判断这个广播帧是不是已经被VLTi转发过一次的帧如果是则只从Leaf-2本地的VLT端口转发不再从Leaf-2的普通端口泛洪。这个机制的好处是下游服务器收到广播帧不会收到两份完全相同的重复帧。如果VLT没有这个去重机制双归服务器会因为收到重复广播帧而产生协议异常比如VRRP报文抖动、DHCP租约异常等。组播流量特别是IGMP Snooping在VLT域内也有特殊同步。VLT节点之间会同步IGMP Snooping表项确保组播流量不会从两台设备重复发出。在OS10上VLT域内默认开启了IGMP Snooping同步你不需要额外配置但如果下游有组播业务务必确认show ip igmp snooping groups里表项是否正确。4.3 ARP和MAC地址同步VLT域的记忆共享VLT节点之间通过VLTi同步MAC地址表项和ARP表项。比如Leaf-1学到了一条服务器A的MAC地址它会把这个表项同步给Leaf-2。反之亦然。这个同步机制有几个细节需要特别注意。第一同步不是实时的全量同步而是基于增量更新也就是说新学到的表项同步老表项在一定时间后老化。第二两台设备各自的MAC地址表容量独立计算如果同步的表项超过了设备表容量多余的表项不会同步过去在某些极端的流量模型下可能出现转发失败。实际使用中如果发现VLT域内存在间歇性丢包或偶发不通优先检查MAC地址表同步状态Leaf-1# show mac address-table Leaf-1# show vlt mac-in-mac-tableshow vlt mac-in-mac-table输出的是VLT域内的同步表项。如果你看到大量应该同步的表项缺失那么问题大概率出在VLTi的链路质量或VLT协议状态上。4.4 VLTi中断后的行为两台设备如何避免脑裂VLTi中断是VLT最危险的故障场景。一旦VLTi链路断开两台VLT节点无法通信但keepalive仍然正常keepalive走独立管理网络于是两台设备会进入双活状态。OS10的处理机制是当VLTi中断且keepalive仍然可达时VLT节点会检测到对端仍然存活。此时两台设备之间虚拟MAC地址不再对外统一而是各自使用本地的MAC地址。下游LACP聚合端口会保持活跃但每台设备只处理自己本地的VLT端口不再把流量转发到对端。这个机制叫独立转发模式Standalone Mode它的关键是不会产生二层环路。因为跨设备聚合端口在VLTi中断后等效于两台设备各自的下联端口而VLT协议会屏蔽对端的VLT端口禁止通过非VLTi链路相互转发。但要注意VLTi中断期间LACP聚合会退化。下游设备的LACP看到两个不同的系统MAC地址聚合状态会变为单成员可用或独立链路流量只会从某一台设备的物理口进出。对于服务器双网卡绑定来说这意味着带宽减半但不至于断网。如果是接入交换机双归上连STP会重新收敛可能出现短暂中断。遇到VLTi中断最优先的任务是尽快恢复VLTi而不是重启设备。恢复VLTi后两台设备会自动重新同步MAC地址表VLT端口重新聚合业务流量自动回到双活状态。5. 实际部署中的注意事项和避坑指南VLT配置不算复杂但生产环境部署时会遇到很多文档上没写的细节。这些细节是我自己在多次部署和排障中积累下来的分享出来希望帮你少踩几个坑。5.1 端口设置、OS10版本差异和线缆检查VLTi端口模式和业务端口区分开。VLTi端口建议使用no switchport三层模式这样VLT协议报文不会受到二层VLAN的影响。有同事曾经把VLTi端口配成access vlan 1结果VLT发现总是失败排查了很久才找到原因。OS10版本差异需要特别注意。早期OS10版本10.4.x之前的VLT配置语法和现在的有差异。比如老版本用vlt-domain下的peer-info来配置对端信息新版本改成了discovery-interface和link-local-ip。如果你参照网上旧教程配置命令可能直接敲不进去或者配置成功但状态异常。用show version确认系统版本然后对应版本的配置指南去查命令。线缆问题也很常见。VLTi如果是用光模块光纤务必在部署前做好光功率测试。VLT协议对链路误码率比较敏感如果误码率高VLT控制报文会频繁重传导致MAC同步异常、LACP聚合抖动。我曾经遇到过一次VLT端口状态正常但流量时通时断最后定位到是光纤接头脏了重新插拔后解决。5.2 双归设备和VLAN集合的一致性检查下游双归设备使用LACP时注意检查LACP超时时间。服务器双网卡绑定如Linux的bond4、Windows的NIC Teaming默认使用短超时3秒而交换机VLT端口默认LACP超时是长超时90秒。如果两端配置不一致LACP可能出现频繁切换状态。更常见的是VLAN集合不一致的问题。两台VLT节点上的VLAN集合必须严格一致否则会出现VLT域内某VLAN流量不通。检查方法是Leaf-1# show vlan Leaf-2# show vlan把两台设备的VLAN输出对比确认每台设备上都创建了相同的VLAN并且这些VLAN的端口成员关系也一致。OS10的VLT并不强制同步VLAN配置它同步的只是MAC地址和ARP表项VLAN配置依然需要你在两台设备上手工保持一致。另外注意如果你在Leaf-1上把VLAN 100的端口成员改成untagged那么在Leaf-2上也必须改成untagged否则VLAN 100的流量在Leaf-2上可能无法正常从VLT端口转发。5.3 常见故障排查速查表以下是我在实际运维中遇到过的VLT故障和对应的排查思路整理成一张速查表方便你遇到问题时快速定位。故障现象可能原因排查命令VLT域状态downVLTi端口配置错误或链路中断show vlt、show interface port-channel 128keepalive显示不可达keepalive地址配置错误、管理路由缺失show vlt keepalive、ping 2.0.0.2下游LACP聚合起不来虚拟MAC地址配置不一致、VLT端口号不一致show vlt检查virtual-mac、对比两台设备配置跨设备聚合流量时通时断VLTi链路误码率高、LACP超时参数不一致show interface ethernet 1/1/1检查CRC错误计数单VLAN不通两台VLT节点VLAN集合不一致show vlan对比广播风暴VLTi中断后下游STP未收敛show spanning-tree、检查VLTi物理链路组播流量重复IGMP Snooping同步异常show ip igmp snooping groups排查时我习惯从底层往上层看先看物理层端口状态、光模块、线缆再看VLT协议层show vlt然后看VLAN/STP层最后看LACP层。跳层排查效率很低而且容易被表象迷惑。5.4 升级维护时VLT如何操作生产设备升级是每个运维都躲不开的活儿。VLT最大的优势在于可以逐台升级业务不中断。升级流程是先在一台设备上关闭VLT域vlt-domain 1下执行shutdown让流量全部切到另一台设备。然后升级这台设备重启完成后重新开启VLT域确认VLT域状态恢复正常再对另一台设备执行相同操作。这里有个细节关闭VLT域后当前设备上的VLT端口会变为普通Port-Channel下游LACP聚合状态会变化。如果你的下游设备比如服务器bond4配置了miimon而不监控LACP状态那么流量切换是平滑的。如果下游配置了arp_interval或对LACP状态敏感可能出现短暂中断需要提前和业务方确认。我试过在凌晨窗口期对一对VLT节点完成滚动升级整个过程大约40分钟业务无感知。前提是你得有第二个人在旁边盯监控万一第一台升级后VLT域没恢复能立刻回滚。6. 从一个真实案例看VLT排障跨设备聚合端口起不来分享一个我处理过的真实案例帮助你理解前面讲的这些机制怎么用在实战中。某数据中心新上线一批服务器双网卡绑定到两台ToR交换机Leaf-1/Leaf-2VLT已经配置完成。服务器端的bond4模式也配置好了但ip link里bond0显示只有一个slave up另一个slave状态是down。第一反应是查物理层。登录Leaf-1show interface ethernet 1/1/10端口up没有错误计数。登录Leaf-2看对应的1/1/10端口up。物理链路没问题。接着查VLT。show vlt显示Domain状态为upRole为primaryVLTi链路正常虚拟MAC也正常。VLT域本身没大问题。再看LACP状态show lacp port-channel 10Leaf-1侧能看到对端系统IDLeaf-2侧也对端系统ID能看到但Leaf-2的状态里LACP flags没有显示AggregationA位。这就很说明问题了。最后比对两台Leaf上的VLT配置发现Leaf-1上vlt-port 10配置了Leaf-2上漏掉了这条命令。没有vlt-port声明Leaf-2认为Port-Channel 10只是一个本地聚合端口不是跨设备VLT端口。LACP协商时Leaf-2认为自己没有参与VLT于是拒绝了对端的聚合请求只保留一条链路。修复很简单在Leaf-2上补上vlt-port 10再执行一次channel-group重新协商bond4两个slave都变为up。前后不到五分钟。这个案例说明两件事第一VLT配置最容易出错的地方恰恰不是VLT域本身而是VLT端口声明第二LACP状态输出里的详细信息比对往往比show vlt更能反映问题。7. 最后分享几个我在实际维护中的心得VLT配置本身难度不大真正难的是对VLT工作机制的理解和日常运维中的精细化管理。基于我自己的长期操作经验有几点特别想强调。第一给VLTi做好监控告警。VLTi链路是整个VLT域的中枢一旦中断双活带宽变单活业务体验下降但不会完全中断。如果监控没有覆盖VLTi链路这种降级运行可能持续数周不被发现。建议在监控系统里加上show vlt输出中的关键字段或者通过SNMP Trap监控VLT域状态变化。第二把两台VLT节点的配置模板化。VLT设备必须对称配置手工敲命令难免漏掉某条。建议把两台Leaf的配置模板提前准备好只用变量替换IP和端口号。部署时直接用模板生成配置能显著减少人为失误。第三每一次变更前备份配置。OS10的配置备份直接用show running-config输出保存即可。但注意VLT的配置变更牵一发动全身比如在Leaf-1上新增一个VLAN就要立刻在Leaf-2上同步。如果变更后出现异常有备份就能快速回滚。第四跨设备聚合端口的下游设备建议全部使用LACP。静态聚合虽然也能配但故障感知和收敛速度都差很远。生产环境我始终坚持LACP active模式宁可在服务器端多花几分钟配置也不愿留隐患。VLT是一个成熟且稳定的一层冗余技术掌握它以后你会发现自己对设备冗余的理解会更立体不再只是两台设备都活着就行而是能精确知道链路断了流量走哪、设备挂了流量走哪、带宽折损多少。这种确定性恰恰是生产环境最需要的。
返回列表