堆疊與集群:從原理到實(shí)戰(zhàn)的完整指南)
前陣子一個(gè)老客戶半夜打電話過(guò)來(lái)說(shuō)辦公室網(wǎng)絡(luò)突然卡得沒(méi)法用。我遠(yuǎn)程一看拓?fù)淅锖诵慕粨Q機(jī)后面掛著兩臺(tái)接入交換機(jī)其中一臺(tái)離線了業(yè)務(wù)流量全擠到剩下那一臺(tái)上面廣播域又大環(huán)路檢測(cè)又沒(méi)做好整個(gè)局域網(wǎng)直接半癱瘓。這事其實(shí)挺典型的單臺(tái)交換機(jī)跑關(guān)鍵業(yè)務(wù)不出事怎么都好說(shuō)一出事就是全網(wǎng)陪葬。后來(lái)我過(guò)去幫他們把兩臺(tái)接入交換機(jī)做了堆疊又順手整理了上聯(lián)鏈路問(wèn)題才算徹底解決。今天沒(méi)別的就著這個(gè)場(chǎng)景認(rèn)真聊聊交換機(jī)的堆疊與集群。1. 為什么說(shuō)堆疊和集群是網(wǎng)絡(luò)運(yùn)維的“雙保險(xiǎn)”很多人第一次接觸堆疊和集群都是在被領(lǐng)導(dǎo)批評(píng)之后核心設(shè)備單點(diǎn)故障、鏈路帶寬不夠、管理地址太多太亂、配置同步麻煩。堆疊和集群這個(gè)名字一聽就覺(jué)得高端其實(shí)本質(zhì)思路特別樸素把多臺(tái)交換機(jī)變成一臺(tái)來(lái)用。1.1 一個(gè)“拿走交換機(jī)就卡死”的經(jīng)典故障熱搜里有個(gè)問(wèn)題我一直印象很深為什么從局域網(wǎng)中拿走一個(gè)交換機(jī)后很卡這個(gè)問(wèn)題如果放在沒(méi)有堆疊、沒(méi)有集群的環(huán)境里答案基本就一句話——拿走的那臺(tái)交換機(jī)承擔(dān)了部分網(wǎng)關(guān)或匯聚功能或者干脆就是環(huán)路被破壞了之后STP重新收斂導(dǎo)致全網(wǎng)廣播風(fēng)暴。但更深層的原因是你的網(wǎng)絡(luò)設(shè)計(jì)里壓根沒(méi)考慮設(shè)備冗余和鏈路冗余單臺(tái)設(shè)備死掉流量只能繞路繞路之后帶寬或者路徑又不對(duì)于是卡。我自己踩過(guò)的坑是公司有四個(gè)部門原來(lái)規(guī)劃是每層樓一臺(tái)24口接入交換機(jī)分別上聯(lián)到一臺(tái)核心核心沒(méi)做雙機(jī)接入更沒(méi)做堆疊。結(jié)果有一次一臺(tái)接入交換機(jī)因?yàn)殡娫茨K老化直接斷電整個(gè)樓層辦公全部斷網(wǎng)。修好之后我做了兩件事一是把接入交換機(jī)全部換成支持堆疊的型號(hào)并兩兩堆疊二是把上聯(lián)改成雙鏈路到兩臺(tái)核心。從那以后再遇到單臺(tái)硬件故障用戶基本無(wú)感知頂多丟一兩個(gè)包。1.2 我理解的堆疊和集群到底解決什么問(wèn)題如果非要用一句話概括堆疊解決的是橫向擴(kuò)展和簡(jiǎn)化管理的問(wèn)題集群解決的是高可用和負(fù)載分擔(dān)的問(wèn)題。堆疊把多臺(tái)物理設(shè)備虛擬成一臺(tái)邏輯設(shè)備管理IP只有一個(gè)配置可以統(tǒng)一下發(fā)跨設(shè)備的鏈路可以捆綁成Eth-Trunk環(huán)路被天然消除。集群則更偏重控制層面的協(xié)同多臺(tái)設(shè)備之間通過(guò)心跳互相備份狀態(tài)一臺(tái)掛了另一臺(tái)立刻接管業(yè)務(wù)。我舉個(gè)生活化的例子堆疊就像你雇了好幾個(gè)員工但他們坐在一起對(duì)外只留一個(gè)接待窗口客戶覺(jué)得你是一個(gè)人集群呢是開了好幾個(gè)分店每家店都有人值班一家店出了問(wèn)題客戶走到另一家店照樣辦事。前者優(yōu)化的是內(nèi)部效率和資源利用率后者保障的是服務(wù)的連續(xù)性。這里我得強(qiáng)調(diào)一點(diǎn)堆疊和集群不是替代關(guān)系。很多場(chǎng)景下它們會(huì)配合使用——接入層用堆疊擴(kuò)展端口密度和上聯(lián)帶寬核心層用集群或雙機(jī)熱備保障整網(wǎng)穩(wěn)定。如果你在規(guī)劃設(shè)計(jì)階段把這兩件事分開想后面很多麻煩其實(shí)都可以避免。2. 堆疊與集群的底層邏輯拆解光知道概念不頂用咱得把原理吃透。交換機(jī)的堆疊和集群核心都是虛擬化技術(shù)但虛擬化的層面不同。2.1 堆疊是怎么“變一臺(tái)”的堆疊的底層實(shí)現(xiàn)簡(jiǎn)單說(shuō)就是把多臺(tái)交換機(jī)的控制平面和轉(zhuǎn)發(fā)平面合并成一個(gè)。每臺(tái)參與堆疊的設(shè)備叫成員交換機(jī)按角色分為主交換機(jī)、備交換機(jī)和從交換機(jī)。主交換機(jī)負(fù)責(zé)整個(gè)堆疊系統(tǒng)的管理和協(xié)議計(jì)算備交換機(jī)是主交換機(jī)的備份從交換機(jī)只做業(yè)務(wù)轉(zhuǎn)發(fā)。三者的角色不是固定的系統(tǒng)運(yùn)行中會(huì)根據(jù)角色選舉規(guī)則動(dòng)態(tài)調(diào)整比如主交換機(jī)掛了備交換機(jī)會(huì)自動(dòng)頂上。堆疊系統(tǒng)的控制平面是合并的對(duì)外表現(xiàn)就是一臺(tái)設(shè)備。你登錄堆疊系統(tǒng)之后看到的接口會(huì)帶一個(gè)成員編號(hào)前綴比如GigabitEthernet 1/0/1和GigabitEthernet 2/0/1分別表示第一臺(tái)成員和第二臺(tái)成員上的接口。配置的時(shí)候一條命令就能下發(fā)到所有成員VLAN、ACL、路由協(xié)議這些配置全部全局生效。這里面最關(guān)鍵的是堆疊口。堆疊口是專門用來(lái)連接成員設(shè)備之間高速鏈路的口業(yè)務(wù)數(shù)據(jù)和控制報(bào)文都會(huì)走這個(gè)口。華為的設(shè)備上堆疊口可以是一個(gè)物理口也可以把多個(gè)物理口捆綁成一個(gè)邏輯堆疊口來(lái)用目的就是提高堆疊鏈路的帶寬和可靠性。2.2 集群/高可用和堆疊的差異集群這個(gè)詞在網(wǎng)絡(luò)里用得挺泛思科叫StackWise和VSS華為叫集群交換機(jī)系統(tǒng)Cluster Switch SystemCSSH3C叫IRFIntelligent Resilient Framework銳捷有自己的VSUVirtual Switching Unit。不同廠商的命名不同但核心思想都差不多把兩臺(tái)或多臺(tái)設(shè)備組合成一臺(tái)邏輯設(shè)備統(tǒng)一管理、統(tǒng)一轉(zhuǎn)發(fā)。集群和堆疊的區(qū)別最容易讓人暈的地方在于廠商有時(shí)會(huì)把這兩種技術(shù)混著叫。以我實(shí)際使用經(jīng)驗(yàn)來(lái)看判斷標(biāo)準(zhǔn)很簡(jiǎn)單——看它對(duì)控制平面的處理方式。堆疊通常是把多臺(tái)設(shè)備的控制平面合并成一個(gè)邏輯控制平面參與堆疊的設(shè)備之間通過(guò)堆疊口傳輸大量的協(xié)議報(bào)文和表項(xiàng)同步信息集群則更強(qiáng)調(diào)獨(dú)立設(shè)備的協(xié)同每臺(tái)設(shè)備仍然有自己的控制平面但通過(guò)集群協(xié)議同步關(guān)鍵狀態(tài)對(duì)外虛擬成一個(gè)整體。用華為的iStackIntelligent Stack和CSS來(lái)對(duì)比更直觀iStack一般用于中低端框式或盒式交換機(jī)最多支持9臺(tái)堆疊適合接入層和匯聚層CSS一般用于核心交換機(jī)本質(zhì)是把兩臺(tái)框式交換機(jī)虛擬成一臺(tái)適合數(shù)據(jù)中心核心或園區(qū)網(wǎng)核心。CSS對(duì)硬件的要求更高需要專門的集群接口板或集群線纜穩(wěn)定性也更強(qiáng)。2.3 各廠商堆疊技術(shù)命名與定位我在實(shí)際項(xiàng)目中接觸過(guò)不少?gòu)S商設(shè)備各家堆疊技術(shù)能力參差但總體上都挺成熟這里按我自己的經(jīng)驗(yàn)給個(gè)定位參考廠商技術(shù)名稱典型型號(hào)最大成員數(shù)我的使用感受華為iStack / CSSS5720、S6720、S12700iStack 9臺(tái) / CSS 2臺(tái)配置直觀堆疊口和邏輯口概念清晰適合園區(qū)網(wǎng)思科StackWise / StackWise VirtualC9300、C95008臺(tái) / 2臺(tái)Catalyst 9000系列體驗(yàn)很好StackWise線纜即插即用H3CIRFS5130、S6520、S105009臺(tái) / 2臺(tái)IRF老牌穩(wěn)定配置命令多但資料全銳捷VSURG-S5750、RG-S62202~4臺(tái)界面友好中專院校和中小項(xiàng)目用得多中興堆疊R10系列2~4臺(tái)配置風(fēng)格接近華為做政企項(xiàng)目時(shí)見(jiàn)過(guò)表格里這些數(shù)字是常規(guī)值具體還要看軟件版本不要拿老版本的限制套新版本設(shè)備。另外我得提醒一句跨廠商堆疊是行不通的堆疊協(xié)議是私有的不用想著華為和思科混堆選型的時(shí)候就得把品牌統(tǒng)一。3. 華為堆疊配置實(shí)戰(zhàn)從零到一落地前面聊了原理下面拿華為設(shè)備走一遍真實(shí)配置。我這邊用的示例是兩臺(tái)S5720-52X-SI版本是V200R019C10做的是業(yè)務(wù)口堆疊。為什么選業(yè)務(wù)口堆疊而不是專門的堆疊口因?yàn)镾5720這種盒式交換機(jī)大多數(shù)沒(méi)有專門堆疊口直接拿萬(wàn)兆光口或者千兆光口當(dāng)堆疊口就能用靈活又省錢。3.1 開工前必須確認(rèn)的硬件條件做堆疊前先檢查三樣?xùn)|西缺一樣都別開工第一軟件版本必須一致。我用華為設(shè)備比較多在系統(tǒng)視圖下執(zhí)行display version就能看到版本號(hào)參與堆疊的設(shè)備版本不一致時(shí)系統(tǒng)會(huì)提示可能堆疊失敗。哪怕小版本號(hào)不同也建議先升級(jí)再組堆疊不然有的功能會(huì)異常。第二堆疊口之間的連線必須做對(duì)。華為的堆疊口是有編號(hào)的業(yè)務(wù)口堆疊的時(shí)候需要先創(chuàng)建邏輯堆疊口再把物理口加進(jìn)去。兩臺(tái)設(shè)備組堆疊時(shí)通常要兩根線交叉連接1號(hào)設(shè)備的堆疊口1連2號(hào)設(shè)備的堆疊口21號(hào)設(shè)備的堆疊口2連2號(hào)設(shè)備的堆疊口1。如果接成直連堆疊會(huì)起不來(lái)。第三設(shè)備啟動(dòng)方式要是堆疊模式。華為很多盒式交換機(jī)出廠默認(rèn)就是堆疊模式不用額外切換但有些型號(hào)需要在BIOS里改啟動(dòng)模式。我遇到過(guò)一次設(shè)備是獨(dú)立模式怎么配堆疊都不生效后來(lái)查文檔才發(fā)現(xiàn)要改啟動(dòng)方式并重啟。3.2 華為堆疊配置從規(guī)劃到命令行我規(guī)劃的是兩臺(tái)設(shè)備組成一個(gè)堆疊系統(tǒng)成員編號(hào)分別是1和2堆疊域編號(hào)固定為10堆疊優(yōu)先級(jí)1號(hào)設(shè)為200讓它成為主2號(hào)保留默認(rèn)100。這樣設(shè)計(jì)是防止設(shè)備同時(shí)啟動(dòng)時(shí)角色競(jìng)爭(zhēng)不穩(wěn)定。先配置1號(hào)設(shè)備。進(jìn)入系統(tǒng)視圖修改成員編號(hào)和優(yōu)先級(jí)再創(chuàng)建堆疊端口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寫法第一個(gè)數(shù)字是成員編號(hào)第二個(gè)數(shù)字是堆疊口編號(hào)。比如stack-port 1/1表示給1號(hào)成員創(chuàng)建堆疊口1再把物理口27加進(jìn)去。2號(hào)設(shè)備同樣操作但成員編號(hào)改成2優(yōu)先級(jí)保持默認(rèn)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然后把兩臺(tái)設(shè)備斷電用堆疊線纜交叉連接1號(hào)設(shè)備的物理口27連2號(hào)設(shè)備的物理口281號(hào)設(shè)備的物理口28連2號(hào)設(shè)備的物理口27。接好后先給1號(hào)設(shè)備上電等它完全啟動(dòng)后再給2號(hào)設(shè)備上電。這樣做的目的是讓1號(hào)先完成初始化大概率穩(wěn)坐主角色。兩臺(tái)設(shè)備都啟動(dòng)后在1號(hào)設(shè)備上執(zhí)行display stack查看堆疊狀態(tài)。如果顯示堆疊成員有2臺(tái)角色一個(gè)是Master一個(gè)是Standby那就說(shuō)明堆疊建立成功。如果只顯示1臺(tái)或者成員角色不對(duì)優(yōu)先檢查連線順序和堆疊口配置。3.3 業(yè)務(wù)口堆疊的雷區(qū)和注意事項(xiàng)業(yè)務(wù)口堆疊雖然方便坑也不少。第一物理口加入堆疊口之后這個(gè)物理口就不能再當(dāng)普通業(yè)務(wù)口用了。我見(jiàn)過(guò)有人配完堆疊后怎么都ping不通某些業(yè)務(wù)地址排查半天發(fā)現(xiàn)是在堆疊口里加了業(yè)務(wù)物理口導(dǎo)致那根線被堆疊系統(tǒng)占用了。所以在規(guī)劃的時(shí)候端口預(yù)留一定要夠別把堆疊口和業(yè)務(wù)口混在一起。第二堆疊鏈路的帶寬會(huì)影響整機(jī)轉(zhuǎn)發(fā)性能。兩臺(tái)設(shè)備之間的流量如果走堆疊口帶寬不夠就會(huì)擁塞。我的建議是堆疊口至少用萬(wàn)兆如果只有千兆口堆疊內(nèi)跨設(shè)備流量大的時(shí)候會(huì)明顯掉速。S5720-SI這種型號(hào)自帶4個(gè)萬(wàn)兆光口優(yōu)先拿萬(wàn)兆口做堆疊千兆口留給業(yè)務(wù)。第三跨設(shè)備鏈路聚合很重要。堆疊做完之后一定要把上聯(lián)口或下聯(lián)口跨設(shè)備捆綁成Eth-Trunk不然堆疊就失去了一半意義。我處理過(guò)一個(gè)現(xiàn)場(chǎng)堆疊做完了但下聯(lián)服務(wù)器的兩根網(wǎng)線分別插在不同成員交換機(jī)上沒(méi)有做鏈路聚合結(jié)果一臺(tái)成員設(shè)備掛了服務(wù)器依然斷網(wǎng)??缭O(shè)備聚合才能讓流量在成員間自動(dòng)切換才能真正利用堆疊的冗余能力。4. 堆疊核心機(jī)制選舉、分裂與MAD配置做完只是第一步能把堆疊運(yùn)行機(jī)制搞明白后面出問(wèn)題才能快速定位。堆疊系統(tǒng)里最核心的三個(gè)機(jī)制角色選舉、成員加入、堆疊分裂。這三個(gè)機(jī)制決定了一旦拓?fù)渥兓询B表現(xiàn)如何。4.1 堆疊系統(tǒng)的角色選舉規(guī)則堆疊建立或拓?fù)渥兓臅r(shí)候會(huì)觸發(fā)角色選舉。選舉規(guī)則按順序比較運(yùn)行狀態(tài)已經(jīng)運(yùn)行的優(yōu)先、堆疊優(yōu)先級(jí)數(shù)值大的優(yōu)先、MAC地址小的優(yōu)先。我前面配置里把1號(hào)設(shè)備的優(yōu)先級(jí)設(shè)成200就是為了保證它穩(wěn)定當(dāng)主設(shè)備。角色確定后主交換機(jī)會(huì)負(fù)責(zé)收集所有成員的拓?fù)湫畔⒂?jì)算轉(zhuǎn)發(fā)表項(xiàng)然后同步給備機(jī)和從機(jī)。這里有個(gè)細(xì)節(jié)如果后來(lái)新加入一臺(tái)設(shè)備它的配置會(huì)和主設(shè)備沖突新設(shè)備會(huì)自動(dòng)清空自己的配置跟隨主設(shè)備重新下發(fā)配置。所以給堆疊系統(tǒng)加新成員時(shí)千萬(wàn)別接上就完事要等它自動(dòng)同步著急開業(yè)務(wù)可能會(huì)因?yàn)榕渲貌灰恢庐a(chǎn)生奇怪問(wèn)題。4.2 堆疊分裂為什么很危險(xiǎn)堆疊分裂是運(yùn)行中最危險(xiǎn)的事件沒(méi)有之一。人為原因最常見(jiàn)有人拔了堆疊線纜或者某臺(tái)設(shè)備的堆疊口光模塊壞了。一旦堆疊鏈路斷開原本的一個(gè)堆疊系統(tǒng)會(huì)變成兩個(gè)獨(dú)立的系統(tǒng)而且是兩個(gè)系統(tǒng)還在轉(zhuǎn)發(fā)同一個(gè)網(wǎng)段的流量IP地址、VLAN配置完全一樣這就形成了事實(shí)上的雙主沖突。雙主沖突之后原來(lái)走堆疊口的跨設(shè)備流量全部斷掉網(wǎng)絡(luò)廣播報(bào)文還會(huì)在兩個(gè)系統(tǒng)之間反復(fù)橫跳嚴(yán)重時(shí)直接廣播風(fēng)暴。這時(shí)候如果沒(méi)做MAD檢測(cè)整個(gè)網(wǎng)絡(luò)會(huì)變得極其不穩(wěn)定想遠(yuǎn)程登錄設(shè)備處理都困難。4.3 MAD檢測(cè)配置與建議MADMulti-Active Detection多主檢測(cè)就是專門用來(lái)解決這個(gè)問(wèn)題的。它通過(guò)一條獨(dú)立于堆疊口的鏈路檢測(cè)對(duì)方是否存活。常用的MAD方式有直連檢測(cè)和代理檢測(cè)。直連檢測(cè)適合兩臺(tái)成員設(shè)備的場(chǎng)景用一根普通網(wǎng)線把兩臺(tái)設(shè)備的檢測(cè)口互連代理檢測(cè)適合多成員設(shè)備通過(guò)中間設(shè)備進(jìn)行檢測(cè)。華為設(shè)備配置直連MAD的典型命令system-view interface GigabitEthernet0/0/29 mad detect mode direct我在實(shí)際項(xiàng)目中習(xí)慣把所有空閑端口也開啟mad檢測(cè)并把堆疊域編號(hào)統(tǒng)一規(guī)劃。要注意MAD檢測(cè)口不能用來(lái)跑業(yè)務(wù)必須獨(dú)立占用一個(gè)物理口最好是千兆以上端口專門留給堆疊自愈用的。還有一個(gè)容易忽略的坑MAD檢測(cè)配置在成員設(shè)備上要寫一樣的命令。如果只在一臺(tái)設(shè)備上配了另一臺(tái)沒(méi)配分裂后檢測(cè)機(jī)制形同虛設(shè)。5. 從交換機(jī)堆疊看向服務(wù)器集群聊了這么多交換機(jī)堆疊肯定有不少朋友是搞服務(wù)器集群的。其實(shí)這兩個(gè)方向在工程實(shí)踐中往往是綁定的服務(wù)器集群要穩(wěn)定網(wǎng)絡(luò)側(cè)必須給力。5.1 服務(wù)器集群對(duì)網(wǎng)絡(luò)的新要求我自己搭過(guò)Hadoop、Kafka和K8s集群也幫人排查過(guò)因?yàn)榫W(wǎng)絡(luò)問(wèn)題導(dǎo)致集群不穩(wěn)定的案例。服務(wù)器集群的流量模式和傳統(tǒng)辦公網(wǎng)差別很大東西向流量占比極高節(jié)點(diǎn)之間要頻繁通信數(shù)據(jù)副本同步、任務(wù)調(diào)度、心跳檢測(cè)全都在局域網(wǎng)內(nèi)完成。比如Kafka集群broker之間要復(fù)制消息節(jié)點(diǎn)一多內(nèi)網(wǎng)帶寬很容易被刷滿。這時(shí)候如果接入交換機(jī)的帶寬不夠、單臺(tái)設(shè)備轉(zhuǎn)發(fā)能力弱就會(huì)出現(xiàn)消費(fèi)者拉取消息延遲、rebalance頻繁觸發(fā)。Hadoop集群跑shuffle的時(shí)候多個(gè)節(jié)點(diǎn)同時(shí)拉取中間結(jié)果對(duì)網(wǎng)絡(luò)時(shí)延非常敏感交換機(jī)緩存太小都會(huì)拖慢整個(gè)任務(wù)進(jìn)度。所以有條件的情況下服務(wù)器接入交換機(jī)最好也是雙機(jī)上聯(lián)堆疊或集群服務(wù)器網(wǎng)卡做bond交換機(jī)之間做跨設(shè)備鏈路聚合。這樣即使一臺(tái)交換機(jī)故障集群通信也不會(huì)中斷不會(huì)因?yàn)榫W(wǎng)絡(luò)抖動(dòng)觸發(fā)節(jié)點(diǎn)間心跳超時(shí)。5.2 網(wǎng)絡(luò)側(cè)給集群做保障的幾個(gè)習(xí)慣第一把服務(wù)器區(qū)域單獨(dú)劃VLAN隔離廣播域。辦公網(wǎng)的廣播報(bào)文本來(lái)就多如果服務(wù)器和辦公電腦混在一起集群通信會(huì)被擊穿。我的習(xí)慣是把服務(wù)器單獨(dú)劃一個(gè)VLAN并關(guān)閉不必要組播減少無(wú)謂的協(xié)議報(bào)文干擾。第二給集群業(yè)務(wù)流量打上高優(yōu)先級(jí)。現(xiàn)在很多交換機(jī)支持簡(jiǎn)單的QoS可以通過(guò)簡(jiǎn)化優(yōu)先級(jí)的配置讓集群的心跳、存儲(chǔ)同步這些關(guān)鍵流量?jī)?yōu)先轉(zhuǎn)發(fā)。我用華為設(shè)備時(shí)會(huì)做流策略把服務(wù)器網(wǎng)段的流量映射到EF隊(duì)列保證集群流量在網(wǎng)絡(luò)擁塞時(shí)不被丟棄。第三監(jiān)控交換機(jī)的CPU和內(nèi)存。集群跑大任務(wù)的時(shí)候交換機(jī)如果處理不過(guò)來(lái)會(huì)出現(xiàn)CPU占用率飆升表現(xiàn)為管理面卡頓、協(xié)議鄰居頻繁震蕩。遇到這種情況優(yōu)先檢查是不是交換機(jī)型號(hào)選得小了其次檢查有沒(méi)有被異常廣播報(bào)文打滿。我一般會(huì)開啟SNMP配合Prometheus或Zabbix監(jiān)控交換機(jī)端口流量、CPU、內(nèi)存提前發(fā)現(xiàn)問(wèn)題。6. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄寫了這么多最后來(lái)點(diǎn)實(shí)踐沉淀。我整理了一張速查表全是在現(xiàn)場(chǎng)遇到過(guò)的真實(shí)問(wèn)題照著排查能省很多時(shí)間。6.1 我整理的一份常見(jiàn)故障速查表現(xiàn)象可能原因排查思路堆疊系統(tǒng)里少了一臺(tái)成員堆疊線纜松動(dòng)或光模塊故障兩端查看端口物理狀態(tài)重啟堆疊口堆疊口配置失敗物理口被業(yè)務(wù)口占用檢查端口是否加入其他接口組或Eth-Trunk堆疊建立后業(yè)務(wù)中斷跨設(shè)備鏈路未做聚合配置跨設(shè)備Eth-Trunk不要跨成員單鏈路跑業(yè)務(wù)堆疊雙主網(wǎng)絡(luò)廣播嚴(yán)重MAD未配置或配置錯(cuò)誤檢查MAD檢測(cè)鏈路重新配置mad detect mode堆疊成員配置自動(dòng)丟失新加入設(shè)備配置與主設(shè)備沖突確認(rèn)新設(shè)備軟件版本一致再組堆疊交換機(jī)CPU高管理卡頓被廣播報(bào)文攻擊或網(wǎng)段廣播域過(guò)大查日志、抓包縮小廣播域堆疊后端口速率不達(dá)標(biāo)堆疊口帶寬不足萬(wàn)兆堆疊優(yōu)先跨設(shè)備流量避免走聚合單鏈路交換機(jī)之間STP震蕩堆疊和STP配置沖突堆疊后跨設(shè)備鏈路做成Eth-Trunk關(guān)閉不必要的STP6.2 華為6720堆疊配置踩坑筆記熱搜里也有華為6720堆疊我順手說(shuō)一下。S6720系列本身是數(shù)據(jù)中心接入交換機(jī)做堆疊和普通S5720思路類似但要注意它的40GE端口用得比較多配置堆疊口的時(shí)候需要指定端口類型。配置示例interface Stack-Port 1/1 port interface 40GE1/0/27 interface Stack-Port 2/1 port interface 40GE1/0/28我遇到過(guò)一次詭異問(wèn)題S6720堆疊建好之后display stack顯示正常但兩臺(tái)設(shè)備之間的三層轉(zhuǎn)發(fā)一直不通。后來(lái)抓包發(fā)現(xiàn)是堆疊系統(tǒng)的虛擬MAC地址在跨設(shè)備學(xué)習(xí)的時(shí)候出了岔子最后把MAC地址老化時(shí)間調(diào)短、同時(shí)清空動(dòng)態(tài)表項(xiàng)才恢復(fù)正常。這種底層表項(xiàng)問(wèn)題不好復(fù)現(xiàn)真遇到了別慌先從表項(xiàng)查。6.3 銳捷、H3C堆疊的配置習(xí)慣銳捷交換機(jī)做VSU我習(xí)慣先確認(rèn)設(shè)備是否支持因?yàn)椴皇撬行吞?hào)都支持VSU。VSU配置需要在特定視圖下進(jìn)行先給設(shè)備配置域編號(hào)再指定成員ID然后創(chuàng)建VSL端口并把物理口加進(jìn)去。銳捷的VSL端口綁定和華為的邏輯堆疊口類似但它更強(qiáng)調(diào)物理口要成對(duì)綁定不推薦一根線堆疊。H3C的IRF配置邏輯和華為很像核心命令是irf member、irf-port、port group interface。H3C的坑在于如果設(shè)備之前配置過(guò)業(yè)務(wù)重新組IRF時(shí)經(jīng)常出現(xiàn)配置沖突最好的辦法是清空設(shè)備配置再組。H3C的IRF分裂之后也有irf mad檢測(cè)包括鏈路級(jí)檢測(cè)和擴(kuò)展LACP檢測(cè)合理使用都能快速感知雙主問(wèn)題。7. 最后分享幾個(gè)我自己的使用體會(huì)寫到這里差不多把我的經(jīng)驗(yàn)和理解都鋪開了最后收個(gè)尾說(shuō)幾句真心話。堆疊和集群說(shuō)到底只是網(wǎng)絡(luò)高可用方案的前半段設(shè)備級(jí)冗余解決了后面還要考慮鏈路級(jí)、網(wǎng)關(guān)級(jí)、甚至機(jī)房級(jí)的冗余。我在實(shí)際規(guī)劃時(shí)一般遵循一個(gè)原則能成對(duì)就成對(duì)能聚合就聚合能檢測(cè)就檢測(cè)。堆疊解決了設(shè)備層面的虛擬化Eth-Trunk解決鏈路層面的冗余MAD解決分裂后的腦裂問(wèn)題三者配合才能真正把網(wǎng)絡(luò)做穩(wěn)。我個(gè)人最深的體會(huì)是堆疊和集群不是配完就完事。我見(jiàn)過(guò)太多項(xiàng)目堆疊配好了但MAD沒(méi)開、跨設(shè)備聚合沒(méi)做、堆疊線纜質(zhì)量差、堆疊口帶寬不夠整個(gè)堆疊系統(tǒng)的價(jià)值大打折扣。技術(shù)沒(méi)有銀彈關(guān)鍵還是看落地細(xì)節(jié)。后面如果你也準(zhǔn)備給自己的網(wǎng)絡(luò)加堆疊建議先在小范圍測(cè)試環(huán)境里把配置和故障演練做一遍再上生產(chǎn)這樣會(huì)踏實(shí)很多。