华为交换机的堆叠说难不难说简单也真不简单。我见过不少同行把堆叠当成“把两台设备的堆叠口用线一连就完事”结果业务一跑就出幺蛾子也见过有人在排障时对着脑裂告警无从下手最后只能靠重启设备硬扛。这篇文章不打算重复官方配置手册里那些干巴巴的步骤而是把我实际开局、排障过程中踩过的坑、总结的规律以及华为盒式交换机堆叠从规划到落地的完整思路一次梳理清楚。无论你是刚接触堆叠的新人还是已经在现网里维护堆叠设备的老手这里面都有一些值得参考的东西。堆叠这个东西本质上就是用一组线缆把多台交换机虚拟成一台逻辑设备。对运维来说好处是管理面收窄了——配置一份设备多台坏处是一旦堆叠链路出问题故障半径可能比单台设备宕机还大。所以搞清楚堆叠的工作原理知道它哪些地方会出问题比背几条配置命令重要得多。接下来我会从设计规划、参数理解、实际操作、故障排查这几个维度展开尽量把每一个“为什么”讲透。1. 堆叠的本质一套配置管多台设备1.1 堆叠和集群不是一回事华为交换机的堆叠分为iStack和CSS两种形态。iStackIntelligent Stack主要用于S系列盒式交换机比如S5720、S5735、S6730这些常见的接入、汇聚设备CSSCluster Switch System则用于框式核心交换机比如S12700系列。两者底层思路相通都是通过专用的堆叠链路把多台设备从控制平面、数据平面、管理平面三个维度统一起来但实现细节和配置方式有区别。这篇文章主要聚焦盒式交换机的iStack因为它在园区网和数据中心边缘用得最多大家遇到的问题也最集中。堆叠之后整个系统里会有一个主交换机Master、一个备交换机Standby其他成员就是普通的从交换机Slave。主交换机负责管理整个堆叠系统运行控制面协议生成全局的表项备用交换机在主交换机故障时接替它的工作。对外这台“虚拟交换机”只有一个管理IP、一套全局配置所有成员设备的端口在逻辑上都归属同一个交换机。对内成员之间通过堆叠链路同步配置和状态信息一台设备的配置变化会实时同步到其他成员这就是堆叠“配置一份、处处生效”的根源。1.2 堆叠能带来的实际收益用堆叠组网最直接的收益是简化运维。举个例子两台接入交换机堆叠后上联到两台汇聚交换机原来需要在两台接入设备上分别配置VLAN、端口、链路聚合堆叠后只需要在一台设备上操作另一台自动同步。日常巡检、批量下发配置、故障替换时操作对象从“多台设备”变成了“一台设备”。收益更明显的是可靠性。堆叠配合跨设备链路聚合Eth-Trunk可以将成员设备上的物理端口捆绑成一个逻辑链路。当其中一台交换机故障时聚合链路自动切换到另一台成员设备上继续转发业务几乎无感知。这种能力在双上联组网里非常实用相当于用堆叠实现了设备级的冗余而不只是链路级的冗余。带宽扩展是容易被忽略的第三个收益。堆叠把多台设备的端口资源合并到一个转发平面上接入设备从24口扩展到48口甚至更多时不需要新购框式交换机只需再堆叠一台盒式设备成本和灵活性都更好。遇到端口数量不够的扩展场景堆叠是一个很现实的解法。1.3 什么场景不建议上堆叠但堆叠不是万能的有些场景我建议你谨慎使用。第一跨机房、跨楼宇的设备不要堆叠。堆叠依赖成员之间的高速链路做状态同步链路距离越远物理层抖动和故障的概率越高。一旦堆叠链路不稳定整个堆叠系统频繁出现分裂、合并对业务的冲击远大于单台设备故障。第二如果现网对“故障爆炸半径”极其敏感比如核心业务链路上的设备堆叠的风险要单独评估。堆叠虽然提供设备级冗余但控制面是统一的一台设备的异常配置、异常进程可能波及整个堆叠系统。第三设备型号差异过大的场景不要强行堆叠。不同型号、不同芯片平台的设备即便能堆叠成功也可能出现能力差异、端口资源不对齐的问题。注意堆叠最怕的不是设备故障本身而是堆叠链路故障引发的大脑分裂。这一点在后面会详细展开。2. 开局前必须订好的几个参数2.1 成员ID、优先级、域ID怎么定堆叠的规划应该从参数开始而不是从连线开始。三个参数必须提前定好成员IDMember ID、优先级Priority、堆叠域IDDomain ID。成员ID是每台设备在堆叠系统里的唯一标识范围一般是1到9。它决定了设备在堆叠系统中的“槽位号”比如成员ID为1的设备它的物理端口在堆叠后显示为“GE1/0/1”这样的格式。规划成员ID时建议把核心角色比如计划做主设备的排在前面其他成员依次递增保持整个网络里设备编号的统一习惯。优先级用于主备选举范围是1到255数值越大越优先。设备启动后通过比较优先级选主优先级相同则比较MAC地址。如果你希望某台设备稳定作为主交换机就把它的优先级设高比如200以上。需要注意优先级只在堆叠建立和主备切换时起作用运行中不会因为优先级变化自动触发主备切换。堆叠域ID是不同堆叠系统之间的隔离标识。如果同一个二层网络里存在多套堆叠系统域ID必须不同否则可能发生跨系统的错误感知和干扰。域ID的规划要在全网层面统一设计别每套堆叠都默认用0。2.2 链形还是环形堆叠拓扑的选择华为盒式堆叠支持两种物理拓扑链形堆叠和环形堆叠。链形是首尾不连接的一串设备堆叠链路的冗余性较差——任意一条堆叠链路故障整个堆叠就会分裂成两段业务影响很大。环形堆叠将最后的设备与第一台设备之间再增加一条堆叠链路形成环路任意一条堆叠链路中断堆叠系统仍然可以保持完整可靠性明显更高。我个人的建议是三台及以上的堆叠优先使用环形拓扑两台设备的小规模堆叠如果成员设备的堆叠口数量允许也建议环起来。当然环形拓扑要求每台设备至少有两个堆叠口参与并且布线规划时要把“首尾相连”考虑进去。堆叠链路的带宽同样影响稳定性。堆叠成员之间不仅要同步配置还要转发跨成员的业务流量堆叠口带宽不足会成为瓶颈。常见的堆叠口有10GE、40GE高端框式交换机会用到100GE。实际选型时要估算跨成员流量的峰值再决定堆叠口速率。一般接入场景用10GE堆叠足够但如果汇聚层存在大量南北向流量建议直接上40GE避免后期扩容的麻烦。2.3 堆叠口与线缆的选型华为盒式交换机上堆叠口并不是一个独立存在而是把高速光口通过逻辑配置映射到堆叠口。比如一台S5720-56C-PWR它的SFP口既可以用作普通业务光口也可以配置为堆叠口。配置堆叠口之后物理口就不再承担普通业务转发只负责堆叠通信。线缆方面常用的是一米到三米的无源高速铜缆DAC也有使用光模块加光纤的方案。DAC线缆成本低、即插即用、功耗小适合机柜内的短距离堆叠如果设备放置在相邻机柜或距离较远则考虑有源光缆AOC或光模块方案。无论哪种线缆我建议在开局前用线缆测试仪测一下光路别等堆叠起不来才排查物理链路。3. 两台交换机完成堆叠的完整配置流程3.1 操作前的检查清单堆叠配置本身并不复杂但操作前的准备决定了排障时的心情。我列一个自己实测下来比较稳妥的清单确认两台设备的软件版本完全一致。不同版本之间的堆叠协议兼容性无法保证合并失败是最常见的问题。确认设备硬件型号一致或至少官方宣称可堆叠的型号组合。记录两台设备的序列号和当前管理IP防止配置过程断连。准备Console线缆和调试终端堆叠配置过程中管理IP可能变化Console是保底的通道。检查堆叠物理端口是否被其他配置占用比如已经被加入某个业务Eth-Trunk的端口不能直接用作堆叠口。3.2 配置成员ID和优先级以两台S5720系列设备为例假设规划成员1作为主设备成员2作为备设备。在设备A上先配置成员ID和优先级system-view stack stack member 1 priority 200 stack member 1 domain 10 quit设备B同样操作但成员ID改为2优先级设默认或比主设备低system-view stack stack member 2 priority 100 stack member 2 domain 10 quit这一步的意图是把两台设备规划到同一个堆叠域中同时设定选举权重。成员ID在堆叠建立前设定堆叠建立后就不会再变化——这一点非常重要不要在堆叠运行中随意修改成员ID否则可能导致设备从堆叠系统中被踢出。3.3 配置堆叠口与建立堆叠接着配置逻辑堆叠口并将物理口加入。设备A上执行system-view interface stack-port 1/1 port interface 10GE1/0/1 enable quit设备B上执行system-view interface stack-port 2/1 port interface 10GE2/0/1 enable quit这里的命名规则是“成员ID/堆叠口编号”。每台设备支持两个逻辑堆叠口比如1/1和1/2。如果采用环形拓扑就把两台设备之间的另一对物理口分别加入第二个逻辑堆叠口。配置完成后用堆叠线缆连接设备A的10GE1/0/1和设备B的10GE2/0/1。如果条件允许设备处于未上电状态下接好线缆再上电堆叠建立过程更干净。设备启动后会进行堆叠协商此时可以通过Console口观察是否出现堆叠合并的日志。3.4 配置跨设备链路聚合堆叠建起来后最实用的配置是跨设备Eth-Trunk。比如两台设备分别用两个上联口在堆叠系统中绑定成一个聚合口system-view interface Eth-Trunk 1 mode lacp-static port member GE1/0/1 port member GE2/0/1 quit interface GE1/0/1 eth-trunk 1 quit interface GE2/0/1 eth-trunk 1 quit比如GE1/0/1是设备A上的上联口GE2/0/1是设备B上的上联口聚合后两台设备之间就有了跨设备的主备负载均衡能力。当设备A故障时聚合口自动将流量切换到设备B的物理口上对上层设备完全透明。3.5 验证堆叠状态配置完成后通过命令验证堆叠是否正常工作display stack输出会显示堆叠的拓扑形态、成员信息、角色等。这个命令应该能看到两台设备均在线角色一主一备。同时建议测试一下Console口在堆叠系统里的表现——堆叠成功后连接任意一台成员设备的Console口进入的都是整个堆叠系统的视图这说明控制平面已经统一。4. 堆叠分裂与脑裂处理实录4.1 一次真实的堆叠分裂排障有一回现网告警两台堆叠的接入设备同时上报“堆叠分裂”的日志下联业务大面积中断。赶到现场查看堆叠线缆的DAC线接头处松动一条堆叠链路断了。因为当时用的是两台设备的单条堆叠链路链路一断堆叠直接裂成两台独立设备每台设备都认为自己应该成为主交换机开始转发业务就出现了网工最头疼的“脑裂”问题。脑裂的破坏性在于两台设备同时作为主设备运行都响应网关ARP都收发组播报文导致网络中出现地址冲突、MAC漂移、环路风险下联设备的流量转发路径变得不可预测。如果没有双主检测机制兜底这个状态会一直持续到人为介入。华为设备堆叠分裂后会通过堆叠分裂告警日志比如“Stack link down”相关的日志提示异常。收到这类告警时先不要急着拔线、重启而是通过MAD检测机制判断哪台设备应该保持工作状态、哪台设备应该主动关闭业务口。4.2 MAD检测配置方法MADMulti-Active Detection就是专门解决脑裂问题的机制。华为盒式交换机常见的MAD检测方式有直连检测、集中检测和增强检测。直连检测要求堆叠成员设备之间用额外链路互联形成一条独立的检测通道然后在Eth-Trunk下配置MAD直连检测。集中检测是把所有堆叠成员通过Eth-Trunk接到一台检测设备上由检测设备感知多主状态。增强检测则是在跨设备Eth-Trunk上直接启用MAD增强模式适合没有额外检测链路的场景。以增强检测为例在堆叠系统的跨设备Eth-Trunk接口下配置system-view interface Eth-Trunk 1 mad detect mode enhanced quit配置完成后设备会通过堆叠系统内部的健康检测报文感知对端状态。如果堆叠分裂设备会在链路恢复正常后尝试合并在分裂期间备侧设备会自动将除保留端口外的业务口置为Down主动放弃转发把流量集中在仍处于主状态的一侧从而抑制脑裂对网络的影响。MAD检测是堆叠组网里必须配置的一环不是可选项。很多堆叠故障之所以扩大就是因为现场没有配置双主检测。这一点希望所有搭建堆叠的同行务必重视。4.3 分裂后恢复操作流程堆叠分裂恢复的流程我建议按下面几步操作先确认堆叠线缆是否松动或者损坏重新插拔并检查连接状态。如果设备已经降为备/从角色业务口被MAD机制关闭等待堆叠合并后会自动恢复转发这个过程不需要人为干预。如果堆叠合并失败检查线缆、光模块、版本一致性必要时重新加载分裂成员的系统软件。在Console口观察“堆叠合并成功”的日志后再做进一步操作。恢复过程中最忌讳的是盲目重启。堆叠合并是自动协商的过程重启只会打断协商甚至因为启动顺序不同导致主备角色变化影响业务连续性。5. 常见问题排查与避坑速查5.1 高频问题速查表我根据过往经验整理了一张高频问题表遇到对号入座可以省不少时间。现象常见原因排查方向新成员加入堆叠失败版本不一致、成员ID冲突、堆叠域ID不一致对比软件版本检查display version检查成员ID是否与已有成员重复堆叠建立后频繁分裂堆叠链路不稳定、光模块故障、单链路无冗余检查堆叠口物理状态和光功率规划环形拓扑跨设备聚合流量不均衡聚合方式配置不当、成员设备转发能力差异检查Eth-Trunk负载分担算法确认成员设备型号一致管理IP无法访问堆叠后管理IP配置在备设备上确认主设备上配置stelanet管理地址确保主备状态稳定堆叠口无法加入物理口物理口已被其他业务占用检查接口是否在Eth-Trunk、业务VLAN中5.2 升级堆叠的正确姿势堆叠升级是一项高风险操作搞不好会把堆叠拆成两半。华为堆叠系统支持快速升级和分批升级两种思路。快速升级适合小规模堆叠通过一条命令触发让所有成员协同跳版本分批升级则是先升级备设备再倒换主备最后升级原主设备。无论哪种方式我都要强调一个原则升级前先备份当前配置确认新版本的软件包和现有硬件型号、板卡兼容并且预留足够的时间窗口。如果升级过程中出现成员设备版本不一致堆叠会处于“版本不匹配”状态。这种状态下设备可能无法正常合并需要手动将版本回退或重新加载软件包。升级后务必核对display stack和display version的输出确认所有成员版本一致。5.3 关于双主检测和日常巡检的建议双主检测是堆叠能安全运行的底线。有些设备默认没有开启MAD配置堆叠建立后必须主动加上。我见过有人在开局时为了省事跳过这个配置结果某次光纤被挖断整个接入区域动荡了大半天。双主检测虽然不能阻止堆叠分裂本身但能把分裂后的影响控制在有限范围内让恢复过程变成“等合并”而不是“救火”。日常巡检中建议把堆叠状态纳入监控项。可以定期检查堆叠成员是否在线、主备角色是否符合预期、堆叠链路有无告警。如果监控系统支持把“堆叠分裂”日志纳入告警规则一旦出现即通知值班人员。很多时候堆叠链路故障在早期是可感知、可预防的比如光模块光功率下降、线缆弯曲半径过大等巡检走得勤故障发生得少。我个人做堆叠开局时习惯把成员ID、IP地址、上联端口、MAD检测方式汇总成一张表贴在运维文档里。堆叠排障时最怕的就是找不到原规划临时回忆“当时怎么配的”。文档虽然不能直接解决问题但能让你在故障时少走弯路。堆叠这套技术配置命令背得再熟也得回到现场去验证、去磨合。每次排障积累下来的经验比任何手册都值钱。
阅读完成 · 觉得有帮助?