西安 王金國 解寶琦
企業(yè)核心系統(tǒng)如何能夠持續(xù)保持7×24小時的高可靠性運行,是作為企業(yè)級應(yīng)用系統(tǒng)的一項重要技術(shù)指標(biāo)和研究方向,尤其是在實時性要求更高的應(yīng)用領(lǐng)域內(nèi),這樣的系統(tǒng)集成能力直接考驗著系統(tǒng)設(shè)計者、建設(shè)者的技術(shù)能力。
系統(tǒng)集成過程具有更多的工程化特點,系統(tǒng)組件間的搭配和組裝,耦合部分的嵌套與裝配都需要很多打磨和耐心仔細(xì)調(diào)試,這樣才可能使系統(tǒng)應(yīng)用于高可靠、高可用、高安全性的重要生產(chǎn)環(huán)境。系統(tǒng)集成過程中,可能會面臨很多具體的問題,這需要集成工程師們逐步排錯并消除,否則可能導(dǎo)致本來是用于增加系統(tǒng)容錯或高可靠性的設(shè)計反而成為系統(tǒng)中最不穩(wěn)定的結(jié)構(gòu)和部分。
本文結(jié)合構(gòu)建這樣的并行集群系統(tǒng)可能存在的隱性問題給出一些具體的排錯過程,希望能為企業(yè)級用戶構(gòu)建自己的高可靠并行集群數(shù)據(jù)庫系統(tǒng)給出一點建議。
集成系統(tǒng)描述:
采用小型機并安裝AIX作為操作系統(tǒng),并在其上安裝了Oracle 數(shù)據(jù)庫系統(tǒng),版本號為12.1.2.0,使用SAN網(wǎng)絡(luò)提供的存儲LUN 映射并組建了GPFS 文件系統(tǒng)卷組掛載點。并行集群內(nèi)部交換機使用兩臺交換機進(jìn)行堆疊處理后形成一臺高可用邏輯交換機,每臺小機節(jié)點使用兩個萬兆網(wǎng)口作為Oracle并行集群RAC 心跳監(jiān)測網(wǎng)口,使用兩組千兆網(wǎng)口綁定分別作為業(yè)務(wù)服務(wù)網(wǎng)口和GPFS并發(fā)文件系統(tǒng)通信網(wǎng)口。拓?fù)鋱D如圖1 所示。
圖1 集成系統(tǒng)拓?fù)鋱D
AIX 系統(tǒng)初始安裝“AIX7100-05-03-1837”版本,按照Oracle 提供的最低安裝環(huán)境要求進(jìn)行了相關(guān)參數(shù)配置并安裝了“Oracle12C 12.1.2.0”數(shù)據(jù)庫RAC環(huán)境。
集成完成后,雖然各軟件組件都成功的進(jìn)行了安裝,但通過操作系統(tǒng)警告日志以及Oracle警告日志發(fā)現(xiàn)很多嚴(yán)重錯誤,并且呈現(xiàn)出隨機性錯誤,既有Oracle 的ORA-600 內(nèi)部錯誤,也有系統(tǒng)自身產(chǎn)生的系統(tǒng)性錯誤,系統(tǒng)無法上線運行。
錯誤之多讓系統(tǒng)集成工程師一時沒了頭緒。經(jīng)過幾天的觀察和項目組的共同協(xié)商,項目集成組決定按照“先系統(tǒng)后應(yīng)用”的原則以模塊化功能為問題域,以問題時域為排序,逐一進(jìn)行排錯和解決。
1.系統(tǒng)出現(xiàn)的第一個問題是AIX 系統(tǒng)的1GB 和10GB 混裝網(wǎng)卡(型號:ENOS PCIe24-Port(10Gb+1GbE)SR+RJ45 Adapter),通過AIX 的系統(tǒng)警告日志報出如圖2 所示信息。
圖2 AIX 系統(tǒng)警告日志報錯信息
圖3 網(wǎng)卡上啟用端口的另一個臨時性錯誤
圖4 通過“errpt -aj 6B877D80”命令查看報錯信息
并且在這個網(wǎng)卡上的所有啟用的網(wǎng)絡(luò)接口都會報該錯誤,通過錯誤我們可以看到,網(wǎng)絡(luò)接口會隨機性出現(xiàn)重啟的問題,這給上層GPFS以及Oracle 的心跳監(jiān)測狀態(tài)帶來不確定性。更讓人擔(dān)心的是在測試實驗中我們無意中發(fā)現(xiàn),如果手工拔掉某一啟用網(wǎng)絡(luò)接口的網(wǎng)線,那么該混裝網(wǎng)卡上的所有接口都會被重置連接。
經(jīng)過與IBM 原廠工程師的聯(lián)系以及現(xiàn)場日志收集等工作,最終確定為AIX 操作系統(tǒng)級BUG,將操作系統(tǒng)升級到“AIX7100-05-04-1914”后,該問題得到徹底解決。
2.操作系統(tǒng)升級完成后,混裝網(wǎng)卡不再出現(xiàn)重置現(xiàn)象,但日志里依然會隨機性報出該混裝網(wǎng)卡上的啟用端口存在的另一個臨時性錯誤,錯誤信息如圖3 所示。
通過命令“errpt-aj 6B877D80”查看詳細(xì)信息中的描述部分如圖4 所示。
伴隨該問題出現(xiàn)的同時依然有“F22A8688 0508223219 P H ent3 Hardware error”硬件錯誤,此時系統(tǒng)補丁已經(jīng)升級到廠商提供補丁集的最新版本。
為了保證該生產(chǎn)系統(tǒng)更好的穩(wěn)定性,避免系統(tǒng)隱患帶來的重大問題,項目集成組通過配合原廠工程師進(jìn)行了認(rèn)真的系統(tǒng)日志追蹤和排查,并通過IBM 原廠工程師最終確認(rèn)該問題是此款混裝網(wǎng)卡自身微碼BUG,經(jīng)原廠工程師對該款混裝網(wǎng)卡進(jìn)行了緊急補丁修補后,故障才得以徹底解決。
該問題屬于此款網(wǎng)卡特定隱性BUG,因為其在國內(nèi)使用量較少,所以該問題也相當(dāng)少見,用戶在選型時需要特別注意。
3.經(jīng)過前兩個故障的問題排查和處理,系統(tǒng)報錯日志明顯減少,基本只有“FE2DEE00 0726213218 P S SYSXAIXIF DUPLICATE IP ADDRESS DETECTED IN THE NET”報錯,通過命令“errpt-aj FE2DEE00”查看詳細(xì)信息有如圖5 報錯。
經(jīng)核對多條該報錯信息中的MAC 地址發(fā)現(xiàn)網(wǎng)絡(luò)接口均為Oracle 并行集群RAC心跳監(jiān)測萬兆網(wǎng)口的MAC 地址,聯(lián)想到安裝Oracle 并行集群RAC 時使用了兩組心跳監(jiān)測地址,問題應(yīng)該于此有關(guān)。
于是通過了解和詢問Oracle 以及通過上網(wǎng)查詢類似問題,發(fā)現(xiàn)原來在安裝Oracle 并行集群RAC 的過程中,Oracle 通過算法生成一個169.254 網(wǎng)段的IP 地址,然后通過ARP 方式向局域網(wǎng)內(nèi)發(fā)送廣播,判斷當(dāng)局域網(wǎng)內(nèi)無此IP 時,就會正式分配此IP 給RAC。此地址是分配之后無法更改的,即使修改了私網(wǎng)IP 地址,此IP 都不會發(fā)生變化。
圖5 查看詳細(xì)報錯信息
因為使用了兩組Oracle并行集群RAC 心跳監(jiān)測,這導(dǎo)致了算法生成一個169.254 網(wǎng)段的IP 地址在兩組萬兆網(wǎng)口間出現(xiàn)了IP 地址爭搶和漂移,導(dǎo)致出現(xiàn)該問題,通過在堆疊交換機中使用VLAN 將兩組Oracle 并行集群RAC 心跳監(jiān)測萬兆網(wǎng)口進(jìn)行隔離后,該報錯信息消失。
4.經(jīng)過以上排錯和處理,系統(tǒng)報錯全部的到了解決。剩下就只有Oracle 警告日志中的內(nèi)部錯誤了,錯誤信息如圖6 所示。
圖6 OracIe 警告日志中的內(nèi)部錯誤
經(jīng)項目集成組通過Oracle 技術(shù)支持服務(wù)確認(rèn)是“bug 21283337”導(dǎo)致了此ORA-600 錯誤,需要使用“patch 21283337”來修復(fù)此問題。下載補丁p21283337_12102180417_AIX64-5L.zip,并參照補丁中提供的README 安裝此補丁后,Oracle 內(nèi)部錯誤消失。
通過以上的排錯和系統(tǒng)修補及優(yōu)化,經(jīng)過一周的測試以及人為制造各種鏈路中斷試驗后,系統(tǒng)正式上線運行。
系統(tǒng)集成碰到的問題可能是多方面的,可能是一個設(shè)備的多個問題,可能是一個問題相關(guān)了N個設(shè)備。系統(tǒng)集成工程師們需要有剝絲抽繭的耐力和善于發(fā)現(xiàn)的能力,逐步從繁雜的事物中抽取出真正的問題域和發(fā)現(xiàn)。這需要長期的習(xí)慣養(yǎng)成和自我能力的提升,同時也需要項目集成團隊里成員間的良好協(xié)作和溝通。