你接手过几台华为交换机,想做成双机堆叠,又不太确定从哪儿下手?或者你已经按手册敲过一圈命令,结果发现堆叠状态没起来、成员口误报、版本不匹配,一头雾水。这篇就按我实际配置 S5700/S6700 系列盒式交换机的经验,把堆叠从原理、选型、连线、配置到排错整个走一遍。无论你是给机房做核心冗余,还是给弱电项目凑两台设备提带宽,这篇都适用。
1. 先说清楚堆叠到底在解决什么问题
1.1 堆叠不是把两台设备“简单连起来”
很多人一听堆叠,第一反应是“两台交换机用网线一连,不就是一个堆叠吗”。这个理解方向对,但离真正的堆叠差得很远。华为盒式交换机的 iStack(Intelligent Stack)是把多台物理设备通过专用的堆叠口(或高速业务口)互联后,在逻辑上虚拟成一台设备来管理和转发。对外呈现一个 IP、一套 MAC、一个管理面;对内通过堆叠协议协商出主交换机、备交换机和从交换机。
堆叠解决的核心痛点有三个。第一是可靠性,主控挂了,备机无缝接管,业务几乎不感知;第二是带宽,跨设备链路聚合后,流量可以在多台成员设备间负载均衡;第三是管理简化,你只需要登录一个管理 IP,就能看到所有成员设备的状态,不用逐台 SSH。对中小型网络来说,堆叠是比“两台独立设备 + VRRP + 双上行”成本更低、效果更好的冗余方案。
1.2 华为 iStack 与其它厂商堆叠的差异点
华为的 iStack 和 H3C 的 IRF(Intelligent Resilient Framework)思路类似,但细节差异要特别注意。华为盒式交换机一般用专用堆叠口(如 S5700 的后面板 Stack 口)或 10GE/25GE 高速口来做堆叠链路,H3C 则更多依赖普通业务口+IRF 物理成员口绑定。配置习惯上,华为用stack命令体系,H3C 用irf命令体系,别混着记。
另外华为不同系列对堆叠规格差异很大:S5700 系列常用 1+1(一主一备)或 2+1 堆叠,S6700 系列支持 2+2 环形堆叠,框式交换机(S12700 等)的集群(CSS)又是另一个概念。配置前一定先确认你手上型号的规格表,别拿框式 CSS 的配置思路套盒式 iStack。
2. 堆叠形态与硬件准备,选错等于白干
2.1 先分清链形和环形拓扑
华为盒式交换机堆叠支持两种物理拓扑:链形和环形。链形就是 A 设备的堆叠口 1 连 B 设备的堆叠口 1,B 设备的堆叠口 2 连 C 设备的堆叠口 2,头尾不闭合。环形就是 A 的另一个堆叠口再连回 C 的堆叠口,形成闭合回环。
我的建议是,能上环形就别用链形。链形拓扑一根堆叠线断了,整个堆叠直接分裂;环形拓扑断一根线只是从环形变链形,业务不中断。代价是多用一个堆叠口和一根线。早期 S5700 可能只支持链形,新的 V200R005 以上版本多数支持环形。配置前先display stack configuration看看当前软件版本支持的拓扑模式。
2.2 堆叠口与线缆的匹配
堆叠口分为两种:一种是交换机后面板上的专用堆叠口,比如 S5700-28X 的后面板有 2 个固定的 Stack 口,这种口只能做堆叠,不能当普通业务口用;另一种是复用模式,比如 S5730 系列可以通过命令把 10GE 口切换为堆叠口。这两种方式的线缆要求完全不同。
专用堆叠口一般用堆叠专用线缆,或者 SFP+ 万兆光模块+光纤;复用口则必须用高速线缆(DAC/ACC 线缆),长度通常 1m/3m/5m。千万注意:手上有 SFP+ 模块和普通 LC 光纤,也不能随便插堆叠口?可以插,但必须保证两端模块波长、速率一致性。实操中最省心的是直接买原厂堆叠线,那种带“Stack”标识的线缆,两端直接插专用堆叠口,通电即识别,不用调模块参数。如果是复用口,得先确认端口速率和协商模式,否则堆叠口会反复 Up/Down。
2.3 堆叠成员的规划:谁当主,谁当备
华为堆叠的主备选举优先级依次是:启动顺序(先启动优先)→ 堆叠优先级(Stack Priority,默认 100)→ MAC 地址大小(小优先)。这里有个新手容易踩的坑:你以为设置了优先级高的设备就一定是主,但如果你先给备机通电,备机先启动完成,它可能已经抢到主角色。
所以规范的初始化流程是:先规划好主备角色 → 先只给主设备通电配置 → 全部配置完成后再给备机通电加入。这样能保证主设备先启动,稳定当选主。如果现场已经乱序启动,可以在堆叠形成后执行stack视图下的master指定命令,或者直接重启不想要的成员设备。
2.4 硬件版本与软件版本一致性检查
堆叠对版本一致性要求很高。不同版本的软件虽然也能堆叠,但可能出现协议协商异常、业务口资源不一致等问题。我配置前一定会做两件事:第一,所有成员设备加载完全相同的系统软件版本,用display version逐个核对;第二,确认 ESN 序列号范围内的硬件型号一致或兼容,华为官方兼容列表里如果不包含你的型号组合,最好别硬组。
我见过一个真实案例:一台 S5720-28X 和一台 S5720-52X 做堆叠,52X 的接口资源和 28X 差异太大,堆叠虽然起来了,但部分接口索引错乱,业务下发时总是找不到端口。最后拆堆叠单独用。所以组堆叠尽量同型号、同板卡、同版本,别给自己找不痛快。
3. 华为交换机堆叠配置实操全过程
3.1 初始化配置前的基本准备
先把每台设备恢复出厂或清空配置,避免旧配置干扰。reset saved-configuration后重启,或者直接进入system-view后用undo startup saved-configuration再重启也行。我的习惯是每台设备单独通电,先确认单台能正常启动、Console 口能登录,再做堆叠配置。
对于管理 IP、设备名这些基础配置,建议在堆叠形成之后再统一下发,避免堆叠建立过程中 IP 冲突。当然如果你用的是 Console 口逐台配置,先配上也无妨,但一定要保证管理 IP 在堆叠完成前不冲突。
3.2 成员设备槽位号与堆叠 ID 规划
华为盒式交换机堆叠中,每台成员设备有一个成员 ID(Member ID),对应逻辑槽位号。默认都是 0 或 1,取决于是不是首次堆叠。改变成员 ID 的命令是:
system-view stack member 1 // 表示本机成员ID为1注意:这个命令在部分版本中是stack member 0,操作前一定看下当前版本参数。修改成员 ID 后,设备配置里的接口编号会变化,比如 GE0/0/1 变成 GE1/0/1,这很正常,别慌。
规划建议:主设备成员 ID 设为 1,备设备设为 2,如果有第三台就设为 3。这个编号会直接体现在堆叠端口标识中,后续排错时看到接口编号就知道是哪台设备。
3.3 配置堆叠域和保留 VLAN
堆叠域(Stack Domain)用于区分不同的堆叠系统,避免同一二层网络里多个堆叠互相干扰。默认域编号是 0,保持默认也行,但如果同机房多组堆叠,建议给每组分不同域号。命令:
system-view stack domain 10还有一个坑是保留 VLAN。华为堆叠系统需要用保留 VLAN 来传输堆叠协商报文,默认保留 4093,一般不用改。但如果你之前手动创建 VLAN 或者把 VLAN4093 删了/用于业务,堆叠协商会失败。检查命令:
display stack configuration这条命令能看见保留 VLAN、域编号、堆叠口绑定情况,比翻配置快得多。
3.4 配置堆叠端口绑定
这是堆叠配置的最核心环节。先把物理堆叠口加入逻辑堆叠口。华为的逻辑堆叠口有两个:Stack-Port 1 和 Stack-Port 2。对应命令如下:
interface stack-port 1 port member-group interface 10GE1/0/1注意:S5700 专用堆叠口的物理接口编号是固定的(比如后面板的 2 个堆叠口是 10GE1/0/1 和 10GE1/0/2,其中 10GE1/0/1 缺省就是口1)。如果是复用 10GE 口,需要先执行port mode stack切换模式,再绑定到 stack-port:
interface 10GE1/0/3 port mode stack quit interface stack-port 2 port member-group interface 10GE1/0/3两台设备之间的连接规则是:本端 stack-port 1 连对端 stack-port 1,本端 stack-port 2 连对端 stack-port 2,交叉连接的环型拓扑则是对端 stack-port 2。连错口会导致堆叠口无法协商。
3.5 配置堆叠优先级和主备角色
在堆叠系统视图下设置优先级,数值越大越优先当选主设备:
stack stack priority 150我习惯给规划中的主设备设 150,备设备保持默认 100。但这只是提高主设备当选概率,并不能 100% 确保主备角色,因为启动顺序才是第一优先级。所以配套操作是:把主设备先配置好并先上电,备机断电,等主设备完全启动、堆叠口状态稳定后,再给备机上电。
如果你用的是stack视图下配置优先级,注意不是全局视图,别敲错了。不同版本stack子命令存在差异,敲之前用?查看一下。
3.6 配置堆叠系统的管理 IP
堆叠形成后,登录任意一个成员设备的 Console 口,进入系统视图配置一个统一的 IP:
interface Vlanif 10 ip address 192.168.1.10 255.255.255.0 quit这个 IP 加在堆叠系统上,对外就是一个管理地址。此后 SSH、SNMP、网管平台都通过这个 IP 访问,不需要再逐台登录。如果堆叠分裂,这个管理 IP 会残留在其中一个成员上,另一个成员会自动用备用的 MAC 地址和 IP 恢复,这也是堆叠系统的设计预期,别慌张。
3.7 保存配置并完成堆叠建立
配置完成后,执行save保存,然后重启所有成员设备。堆叠配置生效是在重启过程中完成的。当然也有部分配置可以在热环境下直接生效,但稳妥起见,我都是全部配置好再统一重启。
save y reboot重启完成后,登录管理 IP 或用 Console 口登录任意设备,执行:
display stack会看到成员数量、角色、堆叠状态。再执行:
display stack topology可以看到堆叠拓扑连接关系,环形还是链形、有没有成环。这两条命令是检查堆叠建成的黄金组合。
4. 堆叠建立后的业务配置与验证要点
4.1 跨设备链路聚合与流量负载均衡
堆叠的最大价值在于可以把两台设备的物理口聚合成一个逻辑链路,同时获得冗余和带宽。比如 A 设备的 GE1/0/1 和 B 设备的 GE2/0/1 聚合成 Eth-Trunk 1 上联核心:
interface eth-trunk 1 mode lacp-static trunkport interface GE1/0/1 trunkport interface GE2/0/1 quit这样即便一台设备宕机,链路也不会断。流量会在两条物理链路间负载均衡。注意:LACP 模式下两端必须都是 LACP 模式,手工负载分担模式也可以,但既然堆叠都做了,我建议直接用 LACP 静态模式,少一点手工维护的代价。
跨设备聚合里有个容易忽略的细节:聚合口下的成员端口必须来自不同成员设备,否则堆叠冗余意义为零。配置后用display eth-trunk 1检查成员口是否分布在两个不同的成员 ID 上。
4.2 堆叠系统上的 VLAN 与三层接口配置
堆叠系统对外是一台设备,VLAN 配置、VLANIF 三层接口、DHCP、ACL 等所有逻辑配置都只需配置一次。比如:
vlan batch 10 20 interface vlanif 10 ip address 192.168.10.254 255.255.255.0设备会自动同步到所有成员。这也是堆叠管理简化的重要体现。如果你发现配置下发后某些成员设备不同步,优先检查堆叠状态是否异常,比如堆叠分裂后各成员处于独立状态,配置不再同步。
4.3 堆叠分裂检测与 MAD 配置
堆叠分裂是最危险的故障之一。如果堆叠线缆断开,两台设备仍以堆叠逻辑状态运行,各自持有相同的 IP 和 MAC,业务出现 IP 冲突、MAC 漂移、环路广播风暴。华为盒式交换机通常用 MAD(Multi-Active Detection)来检测分裂,检测方式有直连检测和代理检测。
我常用直连检测方式,在堆叠系统上专门划分一个保留 VLAN(比如 VLAN 4092),创建 VLANIF,再通过一根直连线缆将两台成员设备的检测口互联,配置 MAD:
interface vlanif 4092 ip address 10.10.10.1 255.255.255.252 mad detect mode direct注意:两条直连线必须从不同成员设备出,且不要复用堆叠链路,否则检测机制失效。MAD 配置是在堆叠系统视图下用mad detect mode direct来开启,具体命令路径依赖版本。配完之后发生分裂,检测方设备会进入 Recovery 状态,所有业务口 Down,从而避免双主冲突。
4.4 堆叠状态检查的最佳实践顺序
我的检查顺序是:先display stack看成员的在线状况和角色,再display stack topology看拓扑是否闭环,接着display stack configuration看堆叠口绑定是否与物理连线一致,最后display mad确认 MAD 检测链路和状态。一套下来 30 秒内就能定位大部分堆叠问题。
如果display stack中状态是 Normal 且只有一个 Active 设备、一个 Standby 设备,基本健康。如果出现多个 Active 或成员状态 Fault,说明堆叠分裂或者有成员异常掉线。
5. 我踩过的坑和排查实录
5.1 堆叠口起不来,链路反复 Up/Down
现象:物理线缆插好,但display stack看不到成员,端口日志里全是 Link Down/Up 抖动。
排查思路:
- 第一步确认堆叠线缆是专用堆叠线还是普通光纤,普通光纤的话检查两端光模块波长是否一致(比如都是 850nm 多模或 1310nm 单模)。
- 第二步查端口有没有被切换成业务模式,复用口默认可能是业务口,必须执行
port mode stack才能加入堆叠口。 - 第三步看两端逻辑堆叠口编号是否错配,A 的 stack-port 1 必须连 B 的 stack-port 1,一旦连成 1 对 2,协商必然失败。
这是个老朋友踩过的问题,最后查出来是其中一台设备的堆叠口被上一个工程师加过业务 VLAN,配置里残留了 trunk 配置,切换模式后旧配置没清干净,导致端口异常。处理办法就是清配置、重启,堆叠口模式相关配置不支持热改。
5.2 堆叠起来了,但跨设备聚合链路流量只走一边
现象:Eth-Trunk 成员口状态正常,但通过display eth-trunk看到的负载分担不均衡,流量基本压在一条链路上。
排查后发现是哈希因子设置不合适。默认的负载分担是基于源目 MAC 的,如果你的业务流量大多是单台服务器到多台客户端的模式,源目 MAC 哈希的随机性不够。解决办法:修改聚合口负载分担方式,比如基于源目 IP:
interface eth-trunk 1 load-balance src-dst-ip改完后再观察流量分布,很多场景下会明显改善。如果还是不均,再看两边是否存在速率不一致(比如一边千兆一边万兆),堆叠成员端口速率不一致也会导致哈希不均衡。
5.3 配置同步异常,备机上查不到配置
现象:主设备下发配置后,备机display current-configuration里看不到对应配置,或者业务表现异常。
可能原因:堆叠处于分裂状态,主备已经失去同步。用display stack看一下成员数量,如果显示只有一台在线,基本就是分裂了。查看 MAD 状态,Recovery 状态设备的所有业务口都会 Down,这是正常的保护动作,恢复堆叠链路后设备会自动回归堆叠系统。
另一个原因是早期版本存在已知 Bug,配置同步会有延迟或丢失。建议将堆叠系统软件升级到稳定版本,升级过程按华为推荐的顺序做:先备后主,逐台升级。所有成员版本不一致时堆叠不一定协商成功,所以升级前一定先备份配置。
5.4 堆叠分裂后的恢复处理步骤
假设堆叠已经分裂,两台设备都处于 Active 状态。恢复步骤:
1. 登录其中一台设备,确认当前堆叠状态,寻找故障点(堆叠口 Down)。 2. 恢复物理链路(换线、换光模块、重新插紧)。 3. 等待两台设备重新协商堆叠,观察 display stack 成员数量恢复。 4. 如果 MAD 检测生效,Recovery 设备会自动重启并回归堆叠。 5. 如果设备没有自动恢复,手动重启分裂后处于 Recovery 状态的成员设备。注意:不要同时登录两台设备做配置,容易两边同时改配置导致冲突。先确认主备角色,再在 Active 主设备上操作。
5.5 升级与替换成员设备的注意点
堆叠升级我建议按“备机→主机”的顺序逐个升级。如果直接重启主设备,堆叠会中断,业务会丢包,不符合“平滑升级”的预期。具体做法:
1. 通过 display stack 确认当前主备角色。 2. 先升级 Standby 设备:将该设备与堆叠系统断开维护(操作前先通知业务窗口)。 3. 升级完成后重新加入堆叠,等待同步。 4. 再执行主备倒换(stack 视图下的 slave switchover 或手动重启主设备),让原备机成为主。 5. 再升级原主设备,完成后恢复主备状态。替换成员设备也是一样逻辑:先把新设备按成员 ID 和版本要求准备好,断电,替换故障设备,上电之后应该能自动加入堆叠。如果新设备无法加入,检查版本号、成员 ID 是否唯一、堆叠口配置是否下发成功。
6. 一些可以加速落地的经验清单
| 事项 | 建议 | 原因 |
|---|---|---|
| 型号一致性 | 同型号、同批次优先 | 不同型号接口资源和版本差异大 |
| 软件版本 | 统一最新稳定版 | 堆叠协议和业务特性一致 |
| 堆叠拓扑 | 能环形不链形 | 环形抗单点断裂故障 |
| 主备优先级 | 主设备 150,备设备 100 | 提高主设备当选概率 |
| 启动顺序 | 主设备先上电 | 启动顺序是选举第一优先级 |
| 保留 VLAN | 保持默认 4093 不占用 | 堆叠协商依赖保留 VLAN |
| MAD 检测 | 务必配置 | 防止堆叠分裂后双主冲突 |
| 跨设备聚合 | 成员口分布在不同设备 | 真正实现冗余和负载均衡 |
| 配置保存 | 堆叠配置完成后 save 再重启 | 堆叠建立依赖重启生效 |
| 业务割接 | 提前做堆叠分裂演练 | 故障时不会手忙脚乱 |
配置完堆叠,别急着收工,花十分钟做一次故障演练:手动拔掉一根堆叠线,观察设备是否进入分裂检测流程、业务是否中断;再插回线缆,确认自动恢复。这一步虽然在项目交付时往往被忽略,但真正遇到故障时,它决定了你是在机房喝着咖啡等恢复,还是满头大汗翻手册。
另外提醒一下,display stack输出里的Stack Port 1/2状态,以及display stack topology里每台成员设备的邻居关系,是日常巡检最该盯的两个点。把这两条命令加进你的巡检脚本,比什么都管用。
我个人的经验是,堆叠配置最大的难点从来不是敲命令,而是规划和细节:拓扑选型、线缆匹配、启动顺序、版本一致性,任何一个环节疏忽,堆叠要么起不来,要么起来了留下隐患。把这套流程沉淀成标准操作清单,任何一台华为盒式交换机到手,半小时内堆叠就能稳稳落地。