ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

交换机堆叠与集群:从原理到实战的完整指南

2026/9/30 14:01:41 拓冰建站 浏览量
交换机堆叠与集群:从原理到实战的完整指南 前阵子一个老客户半夜打电话过来说办公室网络突然卡得没法用。我远程一看拓扑里核心交换机后面挂着两台接入交换机其中一台离线了业务流量全挤到剩下那一台上面广播域又大环路检测又没做好整个局域网直接半瘫痪。这事其实挺典型的单台交换机跑关键业务不出事怎么都好说一出事就是全网陪葬。后来我过去帮他们把两台接入交换机做了堆叠又顺手整理了上联链路问题才算彻底解决。今天没别的就着这个场景认真聊聊交换机的堆叠与集群。1. 为什么说堆叠和集群是网络运维的“双保险”很多人第一次接触堆叠和集群都是在被领导批评之后核心设备单点故障、链路带宽不够、管理地址太多太乱、配置同步麻烦。堆叠和集群这个名字一听就觉得高端其实本质思路特别朴素把多台交换机变成一台来用。1.1 一个“拿走交换机就卡死”的经典故障热搜里有个问题我一直印象很深为什么从局域网中拿走一个交换机后很卡这个问题如果放在没有堆叠、没有集群的环境里答案基本就一句话——拿走的那台交换机承担了部分网关或汇聚功能或者干脆就是环路被破坏了之后STP重新收敛导致全网广播风暴。但更深层的原因是你的网络设计里压根没考虑设备冗余和链路冗余单台设备死掉流量只能绕路绕路之后带宽或者路径又不对于是卡。我自己踩过的坑是公司有四个部门原来规划是每层楼一台24口接入交换机分别上联到一台核心核心没做双机接入更没做堆叠。结果有一次一台接入交换机因为电源模块老化直接断电整个楼层办公全部断网。修好之后我做了两件事一是把接入交换机全部换成支持堆叠的型号并两两堆叠二是把上联改成双链路到两台核心。从那以后再遇到单台硬件故障用户基本无感知顶多丢一两个包。1.2 我理解的堆叠和集群到底解决什么问题如果非要用一句话概括堆叠解决的是横向扩展和简化管理的问题集群解决的是高可用和负载分担的问题。堆叠把多台物理设备虚拟成一台逻辑设备管理IP只有一个配置可以统一下发跨设备的链路可以捆绑成Eth-Trunk环路被天然消除。集群则更偏重控制层面的协同多台设备之间通过心跳互相备份状态一台挂了另一台立刻接管业务。我举个生活化的例子堆叠就像你雇了好几个员工但他们坐在一起对外只留一个接待窗口客户觉得你是一个人集群呢是开了好几个分店每家店都有人值班一家店出了问题客户走到另一家店照样办事。前者优化的是内部效率和资源利用率后者保障的是服务的连续性。这里我得强调一点堆叠和集群不是替代关系。很多场景下它们会配合使用——接入层用堆叠扩展端口密度和上联带宽核心层用集群或双机热备保障整网稳定。如果你在规划设计阶段把这两件事分开想后面很多麻烦其实都可以避免。2. 堆叠与集群的底层逻辑拆解光知道概念不顶用咱得把原理吃透。交换机的堆叠和集群核心都是虚拟化技术但虚拟化的层面不同。2.1 堆叠是怎么“变一台”的堆叠的底层实现简单说就是把多台交换机的控制平面和转发平面合并成一个。每台参与堆叠的设备叫成员交换机按角色分为主交换机、备交换机和从交换机。主交换机负责整个堆叠系统的管理和协议计算备交换机是主交换机的备份从交换机只做业务转发。三者的角色不是固定的系统运行中会根据角色选举规则动态调整比如主交换机挂了备交换机会自动顶上。堆叠系统的控制平面是合并的对外表现就是一台设备。你登录堆叠系统之后看到的接口会带一个成员编号前缀比如GigabitEthernet 1/0/1和GigabitEthernet 2/0/1分别表示第一台成员和第二台成员上的接口。配置的时候一条命令就能下发到所有成员VLAN、ACL、路由协议这些配置全部全局生效。这里面最关键的是堆叠口。堆叠口是专门用来连接成员设备之间高速链路的口业务数据和控制报文都会走这个口。华为的设备上堆叠口可以是一个物理口也可以把多个物理口捆绑成一个逻辑堆叠口来用目的就是提高堆叠链路的带宽和可靠性。2.2 集群/高可用和堆叠的差异集群这个词在网络里用得挺泛思科叫StackWise和VSS华为叫集群交换机系统Cluster Switch SystemCSSH3C叫IRFIntelligent Resilient Framework锐捷有自己的VSUVirtual Switching Unit。不同厂商的命名不同但核心思想都差不多把两台或多台设备组合成一台逻辑设备统一管理、统一转发。集群和堆叠的区别最容易让人晕的地方在于厂商有时会把这两种技术混着叫。以我实际使用经验来看判断标准很简单——看它对控制平面的处理方式。堆叠通常是把多台设备的控制平面合并成一个逻辑控制平面参与堆叠的设备之间通过堆叠口传输大量的协议报文和表项同步信息集群则更强调独立设备的协同每台设备仍然有自己的控制平面但通过集群协议同步关键状态对外虚拟成一个整体。用华为的iStackIntelligent Stack和CSS来对比更直观iStack一般用于中低端框式或盒式交换机最多支持9台堆叠适合接入层和汇聚层CSS一般用于核心交换机本质是把两台框式交换机虚拟成一台适合数据中心核心或园区网核心。CSS对硬件的要求更高需要专门的集群接口板或集群线缆稳定性也更强。2.3 各厂商堆叠技术命名与定位我在实际项目中接触过不少厂商设备各家堆叠技术能力参差但总体上都挺成熟这里按我自己的经验给个定位参考厂商技术名称典型型号最大成员数我的使用感受华为iStack / CSSS5720、S6720、S12700iStack 9台 / CSS 2台配置直观堆叠口和逻辑口概念清晰适合园区网思科StackWise / StackWise VirtualC9300、C95008台 / 2台Catalyst 9000系列体验很好StackWise线缆即插即用H3CIRFS5130、S6520、S105009台 / 2台IRF老牌稳定配置命令多但资料全锐捷VSURG-S5750、RG-S62202~4台界面友好中专院校和中小项目用得多中兴堆叠R10系列2~4台配置风格接近华为做政企项目时见过表格里这些数字是常规值具体还要看软件版本不要拿老版本的限制套新版本设备。另外我得提醒一句跨厂商堆叠是行不通的堆叠协议是私有的不用想着华为和思科混堆选型的时候就得把品牌统一。3. 华为堆叠配置实战从零到一落地前面聊了原理下面拿华为设备走一遍真实配置。我这边用的示例是两台S5720-52X-SI版本是V200R019C10做的是业务口堆叠。为什么选业务口堆叠而不是专门的堆叠口因为S5720这种盒式交换机大多数没有专门堆叠口直接拿万兆光口或者千兆光口当堆叠口就能用灵活又省钱。3.1 开工前必须确认的硬件条件做堆叠前先检查三样东西缺一样都别开工第一软件版本必须一致。我用华为设备比较多在系统视图下执行display version就能看到版本号参与堆叠的设备版本不一致时系统会提示可能堆叠失败。哪怕小版本号不同也建议先升级再组堆叠不然有的功能会异常。第二堆叠口之间的连线必须做对。华为的堆叠口是有编号的业务口堆叠的时候需要先创建逻辑堆叠口再把物理口加进去。两台设备组堆叠时通常要两根线交叉连接1号设备的堆叠口1连2号设备的堆叠口21号设备的堆叠口2连2号设备的堆叠口1。如果接成直连堆叠会起不来。第三设备启动方式要是堆叠模式。华为很多盒式交换机出厂默认就是堆叠模式不用额外切换但有些型号需要在BIOS里改启动模式。我遇到过一次设备是独立模式怎么配堆叠都不生效后来查文档才发现要改启动方式并重启。3.2 华为堆叠配置从规划到命令行我规划的是两台设备组成一个堆叠系统成员编号分别是1和2堆叠域编号固定为10堆叠优先级1号设为200让它成为主2号保留默认100。这样设计是防止设备同时启动时角色竞争不稳定。先配置1号设备。进入系统视图修改成员编号和优先级再创建堆叠端口system-view sysname SW_Building_A stack stack member 1 priority 200 stack member 1 domain 10 stack-port 1/1 port interface GigabitEthernet0/0/27 stack-port 2/1 port interface GigabitEthernet0/0/28注意这里的stack-port写法第一个数字是成员编号第二个数字是堆叠口编号。比如stack-port 1/1表示给1号成员创建堆叠口1再把物理口27加进去。2号设备同样操作但成员编号改成2优先级保持默认system-view sysname SW_Building_A stack stack member 2 domain 10 stack-port 1/2 port interface GigabitEthernet0/0/27 stack-port 2/2 port interface GigabitEthernet0/0/28然后把两台设备断电用堆叠线缆交叉连接1号设备的物理口27连2号设备的物理口281号设备的物理口28连2号设备的物理口27。接好后先给1号设备上电等它完全启动后再给2号设备上电。这样做的目的是让1号先完成初始化大概率稳坐主角色。两台设备都启动后在1号设备上执行display stack查看堆叠状态。如果显示堆叠成员有2台角色一个是Master一个是Standby那就说明堆叠建立成功。如果只显示1台或者成员角色不对优先检查连线顺序和堆叠口配置。3.3 业务口堆叠的雷区和注意事项业务口堆叠虽然方便坑也不少。第一物理口加入堆叠口之后这个物理口就不能再当普通业务口用了。我见过有人配完堆叠后怎么都ping不通某些业务地址排查半天发现是在堆叠口里加了业务物理口导致那根线被堆叠系统占用了。所以在规划的时候端口预留一定要够别把堆叠口和业务口混在一起。第二堆叠链路的带宽会影响整机转发性能。两台设备之间的流量如果走堆叠口带宽不够就会拥塞。我的建议是堆叠口至少用万兆如果只有千兆口堆叠内跨设备流量大的时候会明显掉速。S5720-SI这种型号自带4个万兆光口优先拿万兆口做堆叠千兆口留给业务。第三跨设备链路聚合很重要。堆叠做完之后一定要把上联口或下联口跨设备捆绑成Eth-Trunk不然堆叠就失去了一半意义。我处理过一个现场堆叠做完了但下联服务器的两根网线分别插在不同成员交换机上没有做链路聚合结果一台成员设备挂了服务器依然断网。跨设备聚合才能让流量在成员间自动切换才能真正利用堆叠的冗余能力。4. 堆叠核心机制选举、分裂与MAD配置做完只是第一步能把堆叠运行机制搞明白后面出问题才能快速定位。堆叠系统里最核心的三个机制角色选举、成员加入、堆叠分裂。这三个机制决定了一旦拓扑变化堆叠表现如何。4.1 堆叠系统的角色选举规则堆叠建立或拓扑变化的时候会触发角色选举。选举规则按顺序比较运行状态已经运行的优先、堆叠优先级数值大的优先、MAC地址小的优先。我前面配置里把1号设备的优先级设成200就是为了保证它稳定当主设备。角色确定后主交换机会负责收集所有成员的拓扑信息计算转发表项然后同步给备机和从机。这里有个细节如果后来新加入一台设备它的配置会和主设备冲突新设备会自动清空自己的配置跟随主设备重新下发配置。所以给堆叠系统加新成员时千万别接上就完事要等它自动同步着急开业务可能会因为配置不一致产生奇怪问题。4.2 堆叠分裂为什么很危险堆叠分裂是运行中最危险的事件没有之一。人为原因最常见有人拔了堆叠线缆或者某台设备的堆叠口光模块坏了。一旦堆叠链路断开原本的一个堆叠系统会变成两个独立的系统而且是两个系统还在转发同一个网段的流量IP地址、VLAN配置完全一样这就形成了事实上的双主冲突。双主冲突之后原来走堆叠口的跨设备流量全部断掉网络广播报文还会在两个系统之间反复横跳严重时直接广播风暴。这时候如果没做MAD检测整个网络会变得极其不稳定想远程登录设备处理都困难。4.3 MAD检测配置与建议MADMulti-Active Detection多主检测就是专门用来解决这个问题的。它通过一条独立于堆叠口的链路检测对方是否存活。常用的MAD方式有直连检测和代理检测。直连检测适合两台成员设备的场景用一根普通网线把两台设备的检测口互连代理检测适合多成员设备通过中间设备进行检测。华为设备配置直连MAD的典型命令system-view interface GigabitEthernet0/0/29 mad detect mode direct我在实际项目中习惯把所有空闲端口也开启mad检测并把堆叠域编号统一规划。要注意MAD检测口不能用来跑业务必须独立占用一个物理口最好是千兆以上端口专门留给堆叠自愈用的。还有一个容易忽略的坑MAD检测配置在成员设备上要写一样的命令。如果只在一台设备上配了另一台没配分裂后检测机制形同虚设。5. 从交换机堆叠看向服务器集群聊了这么多交换机堆叠肯定有不少朋友是搞服务器集群的。其实这两个方向在工程实践中往往是绑定的服务器集群要稳定网络侧必须给力。5.1 服务器集群对网络的新要求我自己搭过Hadoop、Kafka和K8s集群也帮人排查过因为网络问题导致集群不稳定的案例。服务器集群的流量模式和传统办公网差别很大东西向流量占比极高节点之间要频繁通信数据副本同步、任务调度、心跳检测全都在局域网内完成。比如Kafka集群broker之间要复制消息节点一多内网带宽很容易被刷满。这时候如果接入交换机的带宽不够、单台设备转发能力弱就会出现消费者拉取消息延迟、rebalance频繁触发。Hadoop集群跑shuffle的时候多个节点同时拉取中间结果对网络时延非常敏感交换机缓存太小都会拖慢整个任务进度。所以有条件的情况下服务器接入交换机最好也是双机上联堆叠或集群服务器网卡做bond交换机之间做跨设备链路聚合。这样即使一台交换机故障集群通信也不会中断不会因为网络抖动触发节点间心跳超时。5.2 网络侧给集群做保障的几个习惯第一把服务器区域单独划VLAN隔离广播域。办公网的广播报文本来就多如果服务器和办公电脑混在一起集群通信会被击穿。我的习惯是把服务器单独划一个VLAN并关闭不必要组播减少无谓的协议报文干扰。第二给集群业务流量打上高优先级。现在很多交换机支持简单的QoS可以通过简化优先级的配置让集群的心跳、存储同步这些关键流量优先转发。我用华为设备时会做流策略把服务器网段的流量映射到EF队列保证集群流量在网络拥塞时不被丢弃。第三监控交换机的CPU和内存。集群跑大任务的时候交换机如果处理不过来会出现CPU占用率飙升表现为管理面卡顿、协议邻居频繁震荡。遇到这种情况优先检查是不是交换机型号选得小了其次检查有没有被异常广播报文打满。我一般会开启SNMP配合Prometheus或Zabbix监控交换机端口流量、CPU、内存提前发现问题。6. 常见问题与排查技巧实录写了这么多最后来点实践沉淀。我整理了一张速查表全是在现场遇到过的真实问题照着排查能省很多时间。6.1 我整理的一份常见故障速查表现象可能原因排查思路堆叠系统里少了一台成员堆叠线缆松动或光模块故障两端查看端口物理状态重启堆叠口堆叠口配置失败物理口被业务口占用检查端口是否加入其他接口组或Eth-Trunk堆叠建立后业务中断跨设备链路未做聚合配置跨设备Eth-Trunk不要跨成员单链路跑业务堆叠双主网络广播严重MAD未配置或配置错误检查MAD检测链路重新配置mad detect mode堆叠成员配置自动丢失新加入设备配置与主设备冲突确认新设备软件版本一致再组堆叠交换机CPU高管理卡顿被广播报文攻击或网段广播域过大查日志、抓包缩小广播域堆叠后端口速率不达标堆叠口带宽不足万兆堆叠优先跨设备流量避免走聚合单链路交换机之间STP震荡堆叠和STP配置冲突堆叠后跨设备链路做成Eth-Trunk关闭不必要的STP6.2 华为6720堆叠配置踩坑笔记热搜里也有华为6720堆叠我顺手说一下。S6720系列本身是数据中心接入交换机做堆叠和普通S5720思路类似但要注意它的40GE端口用得比较多配置堆叠口的时候需要指定端口类型。配置示例interface Stack-Port 1/1 port interface 40GE1/0/27 interface Stack-Port 2/1 port interface 40GE1/0/28我遇到过一次诡异问题S6720堆叠建好之后display stack显示正常但两台设备之间的三层转发一直不通。后来抓包发现是堆叠系统的虚拟MAC地址在跨设备学习的时候出了岔子最后把MAC地址老化时间调短、同时清空动态表项才恢复正常。这种底层表项问题不好复现真遇到了别慌先从表项查。6.3 锐捷、H3C堆叠的配置习惯锐捷交换机做VSU我习惯先确认设备是否支持因为不是所有型号都支持VSU。VSU配置需要在特定视图下进行先给设备配置域编号再指定成员ID然后创建VSL端口并把物理口加进去。锐捷的VSL端口绑定和华为的逻辑堆叠口类似但它更强调物理口要成对绑定不推荐一根线堆叠。H3C的IRF配置逻辑和华为很像核心命令是irf member、irf-port、port group interface。H3C的坑在于如果设备之前配置过业务重新组IRF时经常出现配置冲突最好的办法是清空设备配置再组。H3C的IRF分裂之后也有irf mad检测包括链路级检测和扩展LACP检测合理使用都能快速感知双主问题。7. 最后分享几个我自己的使用体会写到这里差不多把我的经验和理解都铺开了最后收个尾说几句真心话。堆叠和集群说到底只是网络高可用方案的前半段设备级冗余解决了后面还要考虑链路级、网关级、甚至机房级的冗余。我在实际规划时一般遵循一个原则能成对就成对能聚合就聚合能检测就检测。堆叠解决了设备层面的虚拟化Eth-Trunk解决链路层面的冗余MAD解决分裂后的脑裂问题三者配合才能真正把网络做稳。我个人最深的体会是堆叠和集群不是配完就完事。我见过太多项目堆叠配好了但MAD没开、跨设备聚合没做、堆叠线缆质量差、堆叠口带宽不够整个堆叠系统的价值大打折扣。技术没有银弹关键还是看落地细节。后面如果你也准备给自己的网络加堆叠建议先在小范围测试环境里把配置和故障演练做一遍再上生产这样会踏实很多。