ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

华为交换机iStack堆叠配置实战:从原理规划到排错

华为交换机iStack堆叠配置实战:从原理规划到排错 月初帮一家客户的网络做割接两台汇聚交换机准备做成华为交换机的堆叠配置。我原以为这类操作我闭着眼都能敲完结果两台设备堆叠就是建不起来display stack里始终只显示单台设备。排查到最后才发现一台设备的堆叠ID还是默认的1两台都叫1邻居一握手就冲突。改ID、重启前后又多花了一个多小时。这种问题配置命令本身完全没错错在对堆叠机制的理解上。华为iStack堆叠看似只有几条命令但命令背后的选举规则、堆叠ID分配、物理口和逻辑口的关系、拓扑连接方式、以及分裂后的MAD检测每一项都直接决定这个堆叠系统在关键时刻扛不扛得住。这篇文章就围绕华为交换机堆叠配置这件事把从单机状态到多台设备合成一台的完整过程拆开讲包括原理、规划、配置命令、验证方法以及我实测中踩过的坑。打算做网络冗余改造的运维或者第一次在华为设备上碰堆叠的工程师应该能从中少走不少弯路。1. 为什么现网要上堆叠从一次维护窗口说起1.1 堆叠解决的三个核心问题先说那次客户现场的背景。原来的两台汇聚交换机是独立运行的主备关系靠VRRP和STP维持。平时业务跑着看不出问题但每次设备升级、内核补丁、甚至单纯重启一台设备下面挂着的终端直接断网必须赶凌晨维护窗口。问题在于很多客户的业务窗口就两个小时排队重启可能排一个月都轮不完。堆叠iStackIntelligent Stack解决的核心问题就是把多台物理交换机虚拟成一台逻辑交换机。对外表现是一个管理IP、一套配置、一个转发实体对内则是多个成员设备互相冗余。具体到实际收益主要落在三块高可用两台设备堆叠后单台设备重启、掉电、板卡故障时转发面不会中断。配合跨设备Eth-Trunk业务流量可以快速切换到另一台成员上比传统VRRP主备切换更平滑因为链路层面不再是“一根线断了等STP收敛”的逻辑。统一管理堆叠系统只有一个管理面登录主设备就能看到所有成员设备配置下发到哪个成员都清清楚楚。不用再一台一台登录、对比配置、担心两台设备的配置漂移。带宽扩展多台设备的转发能力合并上行链路可以跨设备做链路聚合。比如两台48口接入交换机堆叠后对上可以用4条万兆跨设备聚合总带宽翻倍不再受单台设备物理口的限制。这三点对实际运维很重要。尤其是“统一管理”这一点很多人一开始没意识到等两台设备在角落里各配各的、谁跟谁都对不上号的时候才会明白“单台逻辑设备”的价值。1.2 堆叠不是万能药风险和代价要提前知道但我也得说句实话堆叠不是上了就一劳永逸。堆叠系统本身会引入新的故障域原来两台独立的设备现在多了一条把它们捆在一起的堆叠链路。这条链路一旦出问题整堆叠系统可能分裂成两个“半身不遂”的逻辑系统处理不当就是双主、MAC漂移、广播风暴一起上。另外堆叠改变了运维习惯。堆叠建立后成员设备的配置不再独立存在全部统一在堆叠系统里维护。如果你习惯了“每台设备单独存配置、单独备份”的思路在堆叠上会很不适应。配置同步的覆盖逻辑、接口编号的变化比如GE0/0/1变成GE1/0/1、从设备上原有配置的去向这些都是要重新学的。更现实的问题是升级。堆叠系统升级不像单台设备那么简单直接重启一台就完事需要考虑版本兼容、主备倒换顺序、业务空窗期。我在后面专门写一节讲升级的注意事项。所以选堆叠之前最好先问自己一句我是不是已经把它的故障模型和运维方式都摸清了如果只是觉得“堆叠很高级”就上大概率会在某个凌晨付出代价。2. 堆叠成形前的核心概念主备选举、堆叠口与域编号2.1 角色是怎么选出来的华为iStack堆叠系统里每个成员设备都有明确角色主交换机Master、备交换机Standby、从交换机Slave。主交换机是整个堆叠系统的“大脑”负责配置管理、资源分配、协议状态同步这些事备交换机是主交换机出问题后的接替者其余成员就是从交换机负责转发业务同时接受主设备的统一管理。角色不是随便定的而是通过选举产生。华为的选举规则虽然不同系列略有差异但核心逻辑大体一致堆叠建立时各成员设备会互相比较参数优先级高的更容易成为主交换机。如果优先级也相同比较MAC地址MAC小的占优。还有一些细节比如已经稳定运行的设备会优先保留主角色这也是为什么你在堆叠运行中修改优先级未必会立刻触发主备倒换的原因。理解了选举规则就会明白一件事想让你心里那台设备做主交换机最好在建堆叠之前就把它的优先级调高而不是等堆叠建完再改。很多人在配置堆叠时忽略了“时机”两个字结果总是“明明我设了优先级200怎么主设备还是另一台”——多半是优先级改晚了主设备早早就选完了。2.2 堆叠ID、优先级、域编号这三个参数必须先规划这三个参数我习惯在建堆叠前先用表格列好再动手配。参数作用典型取值备注堆叠ID标识堆叠中的每台设备决定接口编号和逻辑堆叠口编号1~9不同型号范围不同同一堆叠内不能重复配置后通常需重启生效堆叠优先级参与主设备选举值越大越优先默认100建议主设备设大一些修改后一般在下一次选举时生效域编号标识堆叠系统所属的域防止多个堆叠系统互相干扰默认0建议改成统一值多个堆叠并存时尤其重要堆叠ID是最容易出问题的。华为多数盒式交换机的默认堆叠ID是1如果你拿两台全新设备直接做堆叠两台都叫1堆叠根本建不起来。我在开头痛的排错经历根源就在这里。改ID时要特别小心堆叠ID一旦改了该设备上所有接口的编号都会跟着变。比如单机时接口是GE0/0/1堆叠ID改成2之后接口就会变成GE2/0/1。这意味着设备上原有配置里凡是写了固定物理口的业务比如静态路由的出接口、ACL的绑定口、镜像目的口都要重新核对。优先级的作用前面已经说过是参与主设备选举。我的习惯是第一台希望做主的那台设200其他成员保持默认或者统一设100。注意优先级不是越高越好如果备用设备性能弱、位置偏硬把它设成高优先级反而可能导致主备角色和你的预期相反。域编号可能被很多人忽略。如果整个网络里就一套堆叠系统那域编号填0也没关系。但如果现场有多套相互独立的堆叠或者堆叠系统和某些支持域概念的设备对接最好给每套堆叠分配不同的域编号避免报文串扰。2.3 物理堆叠口和逻辑堆叠口别混淆堆叠连接涉及两类“口”很多新手在这里绕晕。第一类是物理堆叠口。它可以是设备上专门的堆叠卡接口也可以是你指定用来堆叠的普通业务口。华为盒式交换机上一般会预留专用的堆叠槽位或者允许你把10GE/40GE这类高速业务口复用为堆叠口。物理口是实实在在的硬件接口光模块插在它上面堆叠线缆连在它上面。第二类是逻辑堆叠口stack-port。每个成员设备通常有两个逻辑堆叠口编号是stack-port 设备ID/1和stack-port 设备ID/2。你需要在逻辑堆叠口视图下把物理成员接口加入进去让这些物理口“变成”堆叠链路的一部分。这一步非常关键如果只配置了逻辑堆叠口但没有把物理口加进来或者加错了堆叠链路就通不起来。打个比方逻辑堆叠口像是公司对外的“总机号码”物理口则是真正接线的分机。总机没绑定分机电话打进来永远没人接。所以排查堆叠问题时我第一件事就是跑到接口视图下看display stack-port和display stack configuration确认物理口到底有没有被正确加入。3. 拓扑规划与物理连线链形和环形到底怎么选3.1 链形省钱但抗不了单点堆叠的物理拓扑有两种基本形态链形和环形。链形拓扑就像把几台设备用一条线串起来设备A的堆叠口连设备B设备B的另一个堆叠口连设备C以此类推首尾不再相连。它的优点是用到的堆叠口少、物理布线省两台设备之间只需要一组堆叠线。对于两台设备、预算紧张的场景链形也够用。但链形的缺点非常明显中间任何一条堆叠链路断了整个堆叠就会被拆成两段系统分裂。所以链形堆叠只适合对可靠性要求不高的场景或者你明确能接受“堆叠链路单点故障会导致分裂”这种后果。在现网里我很少推荐客户用链形除非设备实在没有足够的堆叠口。3.2 环形现网的主流选择交叉连接是重点环形拓扑是华为官方推荐的方式也是现网最主流的做法。它的核心思想是让每台设备的两个堆叠口都参与连接最后首尾相接形成一个环。这样任意一条堆叠链路断了设备之间还有另外一条路可以走整个堆叠系统依然能维持。环形堆叠的连接有一个很容易记错的点相邻设备之间要用不同编号的逻辑堆叠口互相交叉连接。以三台设备A、B、C为例标准的接法是A的stack-port 1/1连 B的stack-port 2/2B的stack-port 2/1连 C的stack-port 3/2C的stack-port 3/1连 A的stack-port 1/2换句话说A的1口对B的2口B的1口对C的2口C的1口对A的2口每个成员的1口和2口都恰好接到相邻设备的不同口上。为什么要交叉因为两个逻辑堆叠口相当于两条独立的堆叠链路交叉连接可以避免单台设备上“1口连出去的线断了导致整个方向都失效”的情况让环形拓扑的冗余价值真正发挥出来。这个交叉规则在不同系列命令上的体现略有不同但思路一致。我在割接时见过不少人拿着现成的拓扑图线却接成了“1对1、2对2”结果设备起来之后堆叠口状态一直不对。所以物理连接这一步一定要画好连线图每一根跳线的去向都标清楚再动手。3.3 堆叠方式选型堆叠卡、业务口还是高速线缆华为盒式交换机堆叠的物理连接方式常见有三种专用堆叠卡设备上预留专门的堆叠口或者插一张堆叠卡。优点是带宽固定、不占业务口线路稳定缺点是要额外采购板卡成本高。适合汇聚、数据中心这类核心位置。业务口堆叠把10GE、40GE甚至100GE业务口复用成堆叠口。优点是灵活不需要额外硬件线缆选择自由缺点是占用高速接口原本这些口可以用来跑业务上行。配置的时候尤其要注意这些口一旦被加入堆叠就不能再当普通业务口用了。高速线缆直连用专用的堆叠线缆或DAC高速线缆把两台设备的堆叠口直连。机架内堆叠非常推荐这种方式短的DAC线部署方便、信号稳定、价格还便宜不用单独插光模块。选型上我的建议是同一机柜内、距离近的场景优先考虑专用堆叠卡或者直接高速线缆稳定不折腾跨机柜、距离远的用光模块转接但无论哪种线缆和光模块的速率、型号一定要匹配。曾经遇到一次堆叠起不来折腾半天发现是一根40GE的DAC线被插到了只有10GE能力的端口上物理层都起不来堆叠自然建不成。所以物理介质检查永远是堆叠排错的第一步。4. 华为iStack配置全流程从单机状态到两台合一4.1 配置前这些检查一定不能省配置命令本身不长但配置前的工作量比重很大。我整理了一个自用的检查清单每次割接前逐项打勾确认设备型号支持iStack。多数华为S系列盒式交换机支持早期一些入门款可能要确认一下。确认软件版本一致或至少兼容。版本不一致是堆叠建不起来的常见原因先在两台设备上分别执行display version核对。备份当前配置。用display current-configuration把每台设备的配置导出来存档。规划堆叠ID、优先级、域编号写进表格里。确认将要作为堆叠口的物理口当前没有承载业务。如果这些口正在跑业务割接前要提前迁移。检查堆叠线缆、光模块确保物理介质完好。这块很多人会跳过去直接敲命令。但以我做过的堆叠项目来看配置前花十分钟做检查能省掉割接现场两个小时的排错时间。4.2 成员参数和堆叠口配置步骤假设我手上有两台S系列交换机A做主B做备物理连接已经按环形交叉规则接好。配置步骤大致如下。第一步配置成员参数。进入系统视图再进入stack配置视图system-view stack stack member 1 priority 200 stack member 1 domain 100 quit第二台设备上把堆叠ID改成2优先级保持默认或设成100system-view stack stack member 1 renumber 2 stack member 2 priority 100 stack member 2 domain 100 quit这里stack member 1 renumber 2是把默认堆叠ID从1改成2。不同版本这条命令的写法可能有差异如果你的设备提示命令不存在先查一下当前软件版本的命令参考不要硬敲。堆叠ID和域编号配置完成后通常需要重启才能生效。第二步配置堆叠口。第一台设备上把物理口加入逻辑堆叠口system-view interface stack-port 1/1 port interface 10GE1/0/1 enable quit interface stack-port 1/2 port interface 10GE1/0/2 enable quit第二台设备同样操作注意设备ID变成了2system-view interface stack-port 2/1 port interface 10GE2/0/1 enable quit interface stack-port 2/2 port interface 10GE2/0/2 enable quit注意这个命令是在逻辑堆叠口视图下把物理口“加”进堆叠口。实际型号上物理接口名可能是10GE、XGE、25GE之类按设备实际情况来。这一步做完后被加入的物理口就属于堆叠链路了不能再当业务口使用。4.3 保存、重启、看结果三招验证堆叠是否成功配置完成后先保存再重启。这两步的顺序不能反配置没保存就重启等于白配save reboot逐台重启过程中我建议先重启备设备再重启主设备。因为主设备起来后如果开始选举备设备还没上线它就先单机运行等备设备上线再通过堆叠链路加入这个过程比较平滑。两台都起来之后用下面几条命令检查状态display stack display stack configuration display stack topology display stack memberdisplay stack能看到堆叠系统的概要信息成员设备列表、各自的角色、主备状态都在这里。display stack topology用来确认堆叠链路的连接关系是不是和规划一致。如果两台设备都出现在成员列表里角色一个主一个备拓扑正常那堆叠就算建成了。堆叠建成的标志性变化是管理平面统一了。你只需要登录主设备的IP就可以同时管理整个堆叠系统接口编号也变成了“堆叠ID/0/端口号”的格式比如第二台设备上的GE口会显示为GE2/0/1。看到这种变化说明两台设备真正“合一”了。5. 实测中最容易翻车的地方排错思路与经验5.1 堆叠建不起来多半是这五个原因我见过太多人在堆叠建不起来的时候一遍遍重启设备运气好碰巧起来了运气不好就一直卡在单机状态。实际上堆叠建不起来的原因通常就集中在下面几个点原因现象处理方式堆叠ID冲突两台设备堆叠ID相同无法互相识别为不同成员修改堆叠ID并重启软件版本不一致堆叠成员之间版本不兼容报文交互异常升级到一致或兼容版本堆叠口没把物理口加进去逻辑堆叠口是空的物理链路虽然连着但不生效检查display stack-port重新配置物理连线接错没有按交叉规则连接堆叠口状态异常核对连线图重新插线光模块/线缆故障堆叠物理层起不来接口一直down更换线缆或光模块排查思路也有固定套路。我会先看display stack configuration确认每台设备上配置的堆叠ID、优先级、域编号、堆叠口是不是和规划一致。没有问题就看display stack port确认物理口是否真的加进了逻辑堆叠口端口状态是不是up。再到物理接口视图下看display interface确认物理层和链路层状态。最后检查线缆插拔和交叉关系。按照这个顺序走多数问题都能定位。5.2 堆叠分裂和双主MAD检测为什么不能省比堆叠建不起来更可怕的是堆叠建起来之后某一天堆叠链路全断了堆叠系统分裂成两台独立的“主设备”。这就是双主场景两个逻辑系统都认为自己才是主同时对外转发报文MAC地址在两个设备之间反复漂移整个网络直接混乱。要避免这种情况就必须配置MAD检测Multi-Active Detection多主检测。它的作用是在堆叠系统发生分裂时通过检测报文感知到对端仍然活着并把其中一台设备置为“恢复模式”或者阻塞其业务端口避免两台设备同时工作。华为MAD检测有直连方式和中间设备方式用的检测机制也不同常见的是BFD MAD。不同系列的具体命令差异比较大这里不贴统一命令以免误导但思路是清晰的在堆叠系统里选一条链路作为MAD检测链路把检测功能使能让设备在堆叠分裂时能快速“发现彼此还活着”。我自己做堆叠项目时无论多赶时间MAD检测一定配这玩意儿平时看着没用关键时刻能救整个网络。5.3 接口编号变化和配置同步两个容易被忽视的坑堆叠建成后接口编号会随着堆叠ID变化这是最容易被忽视的坑。单机时接口是GE0/0/1堆叠后变成GE1/0/1或GE2/0/1。如果设备的静态路由、ACL、端口镜像等配置里写了固定接口堆叠建成后这些配置可能因为接口编号对不上而失效。我见过一次割接后部分流量不通查到最后就是一条静态路由的出接口还写着老编号。所以堆叠建成后一定要把涉及物理接口的配置全部核一遍。另一个坑是配置同步逻辑。堆叠系统的配置统一保存在主设备上从设备的本地配置在入堆叠后一般会被覆盖。如果你在从设备上单独配过东西入堆叠后这些配置可能不生效或者被清掉。所以建堆叠前最好先把从设备的配置还原到接近出厂状态再让它入堆叠。已经运行的堆叠系统里也不要再单独登到某台成员设备上乱配直接在主设备上统一操作才是正解。6. 堆叠只是开始跨设备链路聚合与日常运维6.1 跨设备Eth-Trunk才是堆叠的“正确打开方式”堆叠建好只是第一步真正把堆叠的价值发挥出来靠的是跨设备链路聚合。传统网络里两台设备如果要同时作为网关或者上联核心要么走VRRP要么靠STP阻塞一条路径链路利用率上不去。堆叠之后两条物理链路可以加入同一个Eth-Trunk在逻辑上变成一条大带宽链路而且跨设备冗余。配置也简单以把两台堆叠成员上的万兆口做成一个Eth-Trunk为例system-view interface Eth-Trunk1 mode lacp-static trunkport 10GE1/0/10 trunkport 10GE2/0/10 quit注意这里的10GE1/0/10是第一台成员的接口10GE2/0/10是第二台成员的接口。因为堆叠系统对外是一台设备Eth-Trunk跨成员加端口毫无违和感这在独立设备之间是做不到的。下行到服务器的链路也可以同样处理一边一根线服务器侧配bond两端都冗余这才是堆叠该有的用法。6.2 堆叠升级和扩容操作顺序很关键堆叠系统升级比单台设备讲究得多。我的习惯是“逐台升级、逐台倒换”先升级备设备等它稳定加入堆叠后手动触发主备倒换让原来的备设备接管主角色然后再升级原来的主设备现在已经是备了。这样任何时刻都有一台设备在跑业务升级窗口可以压得很短。扩容新成员更要注意版本匹配。我见过有人把一台版本老得多的设备强行加入新堆叠堆叠起来后各种协议状态不一致排错排到怀疑人生。新成员加入前先核对版本能升级就先升级堆叠ID选一个不冲突的优先级设低一点免得新机器一上线就抢主让存量主设备先稳住。6.3 堆叠还是VRRP我的选型建议最后聊一个实际问题到底该上堆叠还是继续用VRRP加STP我的看法是汇聚层以上、对链路利用率和切换速度有要求的场景优先考虑堆叠加跨设备Eth-Trunk。堆叠能跑出两条上行同时用的效果这是VRRP加STP做不到的。接入层如果设备老旧、数量大、运维人力有限传统VRRP反而更稳至少出问题时排查门槛低。但如果决定上堆叠有一条底线我必须强调MAD检测一定要配。没有MAD检测的堆叠就像一个人没有痛觉神经受小伤也不知道等反应过来可能已经感染了。很多堆叠翻车事故的根源不是堆叠本身不稳定而是分裂后没有检测机制双主、环路、风暴一股脑涌上来。最后再分享一个我自己的习惯无论两台还是三台设备动手之前一定先把设备型号、软件版本、堆叠ID、优先级、域编号、物理接口、堆叠线缆交叉关系列成一张表把连线图画出来。华为交换机堆叠配置的命令本身并不复杂绝大多数翻车都不是命令写错而是规划没到位。条件允许的话先在ensp模拟环境里把这段流程跑一遍等你在模拟器里看到两台设备顺利合成一台的时候再上真机会从容很多。
返回列表