■ 唐山工業(yè)職業(yè)技術(shù)學(xué)院 黃驍 孫達(dá)明 徐世英
編者按: 筆者某客戶在部署教育資源公共服務(wù)平臺(tái)遷移到新服務(wù)器時(shí),總是出現(xiàn)無(wú)法訪問(wèn)的現(xiàn)象,對(duì)此,筆者進(jìn)行了一系列故障分析和排查,本文正是對(duì)此次故障排查進(jìn)行的總結(jié),其中部分內(nèi)容進(jìn)行了簡(jiǎn)化和模糊處理,希望能對(duì)讀者有所幫助。
某單位新上了一組服務(wù)器,服務(wù)器虛擬化使用的軟件是VMware vSphere是6.7,該單位將筆者為其部署的教育資源公共服務(wù)平臺(tái)遷移到了新服務(wù)器后,該平臺(tái)總出現(xiàn)無(wú)法訪問(wèn)的現(xiàn)象,于是該單位平臺(tái)運(yùn)維人員找到筆者,讓筆者幫忙解決這個(gè)問(wèn)題。
為了增加同時(shí)在線用戶數(shù)量,該單位的教育資源公共服務(wù)平臺(tái)使用了34臺(tái)虛擬機(jī),虛擬機(jī)上安裝的服務(wù)器操作系統(tǒng)既有Windows系統(tǒng),也有Linux系統(tǒng),34臺(tái)虛擬機(jī)獨(dú)立組網(wǎng),這些虛擬機(jī)使用的vShere網(wǎng)絡(luò)沒(méi)有使用默認(rèn)的 “VM Network”網(wǎng)絡(luò),而是單獨(dú)添加的“InfoPM” 網(wǎng)絡(luò),其網(wǎng)絡(luò)拓?fù)淙鐖D1所示。
筆者到達(dá)現(xiàn)場(chǎng)后,逐臺(tái)檢查了虛擬機(jī)的網(wǎng)絡(luò)配置,沒(méi)有發(fā)現(xiàn)問(wèn)題。
圖1 網(wǎng)絡(luò)拓?fù)鋱D
圖2 網(wǎng)絡(luò)故障說(shuō)明示意圖
用ping命令檢查虛擬機(jī)之間網(wǎng)絡(luò)是否暢通,發(fā)現(xiàn)虛擬機(jī)之間的網(wǎng)絡(luò)有的能ping通,有的不能ping通。比較奇怪的是,有的虛擬機(jī)和其他虛擬機(jī)都不能ping通,有的虛擬機(jī)和部分虛擬機(jī)能ping通,和部分虛擬機(jī)不能ping通。
為了更直觀地描述故障現(xiàn)象,筆者畫(huà)出如圖2所示示意圖,用來(lái)描述這個(gè)奇怪的網(wǎng)絡(luò)故障。
假設(shè)有 A、B、C、D、E五臺(tái)虛擬機(jī),在A上不能ping通其他四臺(tái)虛擬機(jī);在E上能 ping通 C、D,但不能ping通A、B;本次遇到的故障奇怪的地方就是,B、E之間不能通信,但 E、D 之間、B、D之間卻能通信。
除此之外,還有更離奇的現(xiàn)象,在E上不能ping通B,在B上卻能ping通E。在B上ping通E以后,反過(guò)來(lái),在E上重新ping B,此時(shí)可以ping通B。
面對(duì)如此復(fù)雜、奇怪的網(wǎng)絡(luò)故障,筆者就從和其他虛擬機(jī)都不能通信的虛擬機(jī)A著手。按照慣例,筆者首先懷疑虛擬機(jī)A可能和其他計(jì)算機(jī)存在IP地址沖突,于是筆者為其更換了IP地址,在用ping命令做通信測(cè)試,故障依舊,仍不能和其他虛擬機(jī)通信。
難道是計(jì)算機(jī)名重復(fù)引起的網(wǎng)絡(luò)故障?為虛擬機(jī)A更換計(jì)算機(jī)名后,在用Ping命令做通信測(cè)試,測(cè)試結(jié)果是,它能和虛擬機(jī)E、D、C通信,不能和B通信。
虛擬機(jī)A能和其他部分虛擬機(jī)通信,是虛擬機(jī)A和其他虛擬機(jī)MAC地址重復(fù)了?還是克隆虛擬機(jī)或從模板部署虛擬機(jī)時(shí),新虛擬機(jī)仍用了原來(lái)的MAC地址?筆者檢查了各虛擬機(jī)的MAC地址,沒(méi)有發(fā)現(xiàn)MAC地址沖突。盡管如此,筆者還是想更換故障虛擬機(jī)的MAC地址。為了方便修改虛擬機(jī)MAC地址,筆者決定用VMware Workstation連接到vCenter Server。具體操作如下:
1.打開(kāi)VMware Workstation后,依次單擊“文件”菜單→“連接服務(wù)器”。
2.出現(xiàn)“連接服務(wù)器”對(duì)話框后,在“服務(wù)器名稱”文本框輸入vCenter Server的名稱或IP地址,在用戶名和密碼文本框中輸入登錄vCenter Server所需的用戶名和密碼。
圖3 單擊“高級(jí)”按鈕進(jìn)行配置
3.用VMware Workstation登錄到vCenter Server后,找到故障虛擬機(jī),右擊故障虛擬機(jī),在右鍵菜單中選擇“設(shè)置”。
4.出現(xiàn)“虛擬機(jī)設(shè)置”對(duì)話框后,在“硬件”清單中選擇“網(wǎng)絡(luò)適配器”,在對(duì)話框右側(cè)單擊“高級(jí)”按鈕(如圖 3)。
5.出現(xiàn)“網(wǎng)絡(luò)適配器高級(jí)設(shè)置”對(duì)話框后,單擊“生成”按鈕即可為故障虛擬機(jī)生成一個(gè)新的MAC地址(如圖 4)。
更換虛擬機(jī)A的MAC地址后,用ping命令做通信測(cè)試,發(fā)現(xiàn)這個(gè)方法很有效,基本上可以ping通其他虛擬機(jī)了。
以此類推,筆者將凡有網(wǎng)絡(luò)故障的虛擬機(jī)都重新生成了一個(gè)新MAC地址,經(jīng)過(guò)一段時(shí)間努力,終于讓該單位的教育資源公共服務(wù)平臺(tái)下所有虛擬機(jī)之間都能互相通信了,該單位的教育資源公共服務(wù)平臺(tái)也能正常訪問(wèn)了。
圖4 為故障虛擬機(jī)生成新的MAC地址
可是好景不長(zhǎng),不到一天,客戶單位的這名運(yùn)維人員又找到筆者,該單位的教育資源公共服務(wù)平臺(tái)又不能訪問(wèn)了。筆者再次檢查了虛擬機(jī)網(wǎng)絡(luò),發(fā)現(xiàn)虛擬機(jī)之間確實(shí)有不能通信的現(xiàn)象,問(wèn)題出現(xiàn)在哪里呢?原來(lái)平臺(tái)能正常運(yùn)行,現(xiàn)在只是將平臺(tái)遷移到新服務(wù)器上,難道是ESXi主機(jī)網(wǎng)絡(luò)問(wèn)題。
筆者檢查了新服務(wù)器所連接的網(wǎng)絡(luò),通過(guò)檢查發(fā)現(xiàn),該單位為實(shí)現(xiàn)網(wǎng)絡(luò)冗余和負(fù)載平衡,在物理交換機(jī)上啟用了鏈路聚合。而vSphere標(biāo)準(zhǔn)交換機(jī)和vSphere Distributed Switch上的默認(rèn)負(fù)載平衡策略是“基于源虛擬端口的路由”,看來(lái)問(wèn)題就出現(xiàn)在這里。
要解決前面所描述的網(wǎng)絡(luò)故障,首先應(yīng)了解鏈路聚合和vSphere負(fù)載平衡。
鏈路聚合是將多個(gè)物理端口匯聚在一起,形成一個(gè)邏輯端口,各端口分擔(dān)出/入口流量,當(dāng)交換機(jī)檢測(cè)到其中一個(gè)成員端口的鏈路發(fā)生故障時(shí),就停止在此端口上發(fā)送封包,并根據(jù)負(fù)荷分擔(dān)策略在剩下的鏈路中重新計(jì)算報(bào)文的發(fā)送端口,故障端口恢復(fù)后再次擔(dān)任收發(fā)端口。
可見(jiàn),鏈路聚合既可以達(dá)到負(fù)載平衡的目的,還可以實(shí)現(xiàn)鏈路冗余。鏈路聚合的應(yīng)用場(chǎng)景一般是一個(gè)IP到多個(gè)IP連接,或者是多個(gè)IP到多個(gè)IP的連接。
vShere提供的負(fù)載平衡策略主要有“基于IP哈希的路由”“基于源MAC哈希的路由”“基于源虛擬端口的路由”“使用明確故障切換順序”等四種策略。
基于IP哈希的路由:虛擬交換機(jī)可根據(jù)每個(gè)數(shù)據(jù)包的源和目標(biāo)IP地址選擇虛擬機(jī)的上行鏈路。在基于IP哈希的路由策略中,任何虛擬機(jī)都可以根據(jù)源和目標(biāo)IP地址,使用網(wǎng)卡組中的任何一條上行鏈路。如果虛擬機(jī)在包含大量獨(dú)立虛擬機(jī)的環(huán)境中運(yùn)行,則IP哈希算法可在組中的網(wǎng)卡之間均勻地分布流量。當(dāng)虛擬機(jī)與多個(gè)目標(biāo)IP地址通信時(shí),虛擬交換機(jī)可為每個(gè)目標(biāo)IP生成不同的哈希。因此,數(shù)據(jù)包可以使用虛擬交換機(jī)上的不同上行鏈路,從而實(shí)現(xiàn)更高的吞吐量。如果環(huán)境中包含的IP地址較少,則虛擬交換機(jī)可能會(huì)始終通過(guò)組中的一條上行鏈路傳遞流量。
基于源MAC哈希的路由:虛擬交換機(jī)可以基于虛擬機(jī)MAC地址選擇虛擬機(jī)的上行鏈路。在基于源MAC哈希的路由負(fù)載平衡策略中,虛擬交換機(jī)使用虛擬機(jī)MAC地址和網(wǎng)卡組中的上行鏈路數(shù)目來(lái)計(jì)算虛擬機(jī)的上行鏈路。
基于源虛擬端口的路由:ESXi主機(jī)上運(yùn)行的每個(gè)虛擬機(jī)在虛擬交換機(jī)上都有一個(gè)關(guān)聯(lián)的虛擬端口ID。基于源虛擬端口的路由策略中,虛擬交換機(jī)使用虛擬機(jī)端口ID和網(wǎng)卡組中的上行鏈路數(shù)目來(lái)計(jì)算虛擬機(jī)的上行鏈路,虛擬交換機(jī)為虛擬機(jī)選擇上行鏈路后,只要該虛擬機(jī)在相同的端口上運(yùn)行,就會(huì)始終通過(guò)此虛擬機(jī)的同一上行鏈路轉(zhuǎn)發(fā)流量。
前面所描述的網(wǎng)絡(luò)故障就是因?yàn)樵谖锢斫粨Q機(jī)上做了鏈路聚合,而鏈路聚合的應(yīng)用場(chǎng)景應(yīng)該是一個(gè)IP到多個(gè)IP連接,或者是多個(gè)IP到多個(gè)IP的連接。
在此場(chǎng)景下,應(yīng)該選擇vShere提供的“基于 IP 哈希的路由”負(fù)載平衡策略,而不是vShere默認(rèn)的“基于源虛擬端口的路由”負(fù)載平衡策略。因“基于源虛擬端口的路由”負(fù)載平衡策略和物理交換機(jī)上所做的鏈路聚合不匹配,在此種情況下,鏈路選擇很容易失敗,虛擬機(jī)網(wǎng)絡(luò)也就會(huì)出現(xiàn)時(shí)斷時(shí)續(xù)故障,其實(shí),在圖2所描述的奇怪的網(wǎng)絡(luò)故障,就是因?yàn)榫W(wǎng)絡(luò)時(shí)斷時(shí)續(xù)引起。
為降低發(fā)生網(wǎng)絡(luò)連接中斷的可能性,需要正確配置ESXi主機(jī)的vShere負(fù)載平衡策略。在本例中,客戶單位連接ESXi主機(jī)的物理交換機(jī)啟用了鏈路聚合,就應(yīng)該將虛擬機(jī)所連接的網(wǎng)絡(luò)“負(fù)載平衡”設(shè)置為“基于IP 哈希的路由”,具體方法如下:
登 錄vCenter Server后,選擇一臺(tái)主機(jī),在頁(yè)面右側(cè)選擇“配置”選項(xiàng)卡,在設(shè)備清單中選擇“網(wǎng)絡(luò)”→“交換機(jī)”,在虛擬交換機(jī)下拉列表中選擇虛擬機(jī)網(wǎng)絡(luò)所連交換機(jī),在本例中,虛擬機(jī)網(wǎng)絡(luò)所連交換機(jī)為“標(biāo)準(zhǔn)交換機(jī):vSwitch0”。
如果所選虛擬交換機(jī)下面有多個(gè)網(wǎng)絡(luò),此時(shí)應(yīng)選擇故障虛擬機(jī)所在網(wǎng)絡(luò),在本例中,該單位的教育資源公共服務(wù)平臺(tái)所在網(wǎng)絡(luò)是默認(rèn)的“VM Network”,單擊“VM Network”網(wǎng)絡(luò)右側(cè)的“…”按鈕,在彈出菜單中選擇“編輯設(shè)置”(如圖5)。
出現(xiàn)“VM Network編輯設(shè)置”對(duì)話框后,單擊左側(cè)“綁定和故障切換”,勾選“負(fù)載平衡”右側(cè)的“替代”復(fù)選框,在其右側(cè)的下拉列表框中選擇“基于IP哈希的路由”(如圖6)。
圖5 選擇“編輯設(shè)置”
圖6 選擇“基于IP哈希的路由”
需要說(shuō)明的是,前面盡管通過(guò)配置ESXi主機(jī)網(wǎng)絡(luò)“綁定和故障切換”,將負(fù)載平衡策略設(shè)置為“基于IP哈希的路由”。但這個(gè)配置不會(huì)傳播到管理網(wǎng)絡(luò)端口組。因此還需要按同樣的方法配置管理網(wǎng)絡(luò)“Management Network”,將管理網(wǎng)絡(luò)的負(fù)載平衡策略也設(shè)置為“基于IP哈希的路由”。
以此類推,筆者將新部署的幾臺(tái)主機(jī)ESXi主機(jī)的“綁定和故障切換”策略都從默認(rèn)的“基于源虛擬端口的路由”更改為“基于IP哈希的路由”后,該單位教育資源公共服務(wù)平臺(tái)下虛擬機(jī)相互之間全都能通信了,平臺(tái)也能訪問(wèn)了。
經(jīng)過(guò)一段時(shí)間運(yùn)行,沒(méi)有出現(xiàn)前面所描述的虛擬機(jī)網(wǎng)絡(luò)時(shí)斷時(shí)續(xù)故障,說(shuō)明故障已徹底排除。
本案例是真實(shí)案例,故障排查過(guò)程也是真實(shí)過(guò)程,為了維護(hù)客戶單位信息網(wǎng)絡(luò)安全,筆者對(duì)上述文字和圖片做了技術(shù)處理,如有雷同,純屬巧合。