西安 王金國 解寶琦
企業(yè)核心系統(tǒng)如何能夠持續(xù)保持7×24小時的高可靠性運行,是作為企業(yè)級應(yīng)用系統(tǒng)的一項重要技術(shù)指標和研究方向,尤其是在實時性要求更高的應(yīng)用領(lǐng)域內(nèi),這樣的系統(tǒng)集成能力直接考驗著系統(tǒng)設(shè)計者、建設(shè)者的技術(shù)能力。
系統(tǒng)集成過程具有更多的工程化特點,系統(tǒng)組件間的搭配和組裝,耦合部分的嵌套與裝配都需要很多打磨和耐心仔細調(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)部交換機使用兩臺交換機進行堆疊處理后形成一臺高可用邏輯交換機,每臺小機節(jié)點使用兩個萬兆網(wǎng)口作為Oracle并行集群RAC 心跳監(jiān)測網(wǎng)口,使用兩組千兆網(wǎng)口綁定分別作為業(yè)務(wù)服務(wù)網(wǎng)口和GPFS并發(fā)文件系統(tǒng)通信網(wǎng)口。拓撲圖如圖1 所示。
圖1 集成系統(tǒng)拓撲圖
AIX 系統(tǒng)初始安裝“AIX7100-05-03-1837”版本,按照Oracle 提供的最低安裝環(huán)境要求進行了相關(guān)參數(shù)配置并安裝了“Oracle12C 12.1.2.0”數(shù)據(jù)庫RAC環(huán)境。
集成完成后,雖然各軟件組件都成功的進行了安裝,但通過操作系統(tǒng)警告日志以及Oracle警告日志發(fā)現(xià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)用”的原則以模塊化功能為問題域,以問題時域為排序,逐一進行排錯和解決。
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”查看詳細信息中的描述部分如圖4 所示。
伴隨該問題出現(xiàn)的同時依然有“F22A8688 0508223219 P H ent3 Hardware error”硬件錯誤,此時系統(tǒng)補丁已經(jīng)升級到廠商提供補丁集的最新版本。
為了保證該生產(chǎn)系統(tǒng)更好的穩(wěn)定性,避免系統(tǒng)隱患帶來的重大問題,項目集成組通過配合原廠工程師進行了認真的系統(tǒng)日志追蹤和排查,并通過IBM 原廠工程師最終確認該問題是此款混裝網(wǎng)卡自身微碼BUG,經(jīng)原廠工程師對該款混裝網(wǎng)卡進行了緊急補丁修補后,故障才得以徹底解決。
該問題屬于此款網(wǎng)卡特定隱性BUG,因為其在國內(nèi)使用量較少,所以該問題也相當少見,用戶在選型時需要特別注意。
3.經(jīng)過前兩個故障的問題排查和處理,系統(tǒng)報錯日志明顯減少,基本只有“FE2DEE00 0726213218 P S SYSXAIXIF DUPLICATE IP ADDRESS DETECTED IN THE NET”報錯,通過命令“errpt-aj FE2DEE00”查看詳細信息有如圖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ā)送廣播,判斷當局域網(wǎng)內(nèi)無此IP 時,就會正式分配此IP 給RAC。此地址是分配之后無法更改的,即使修改了私網(wǎng)IP 地址,此IP 都不會發(fā)生變化。
圖5 查看詳細報錯信息
因為使用了兩組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)口進行隔離后,該報錯信息消失。
4.經(jīng)過以上排錯和處理,系統(tǒng)報錯全部的到了解決。剩下就只有Oracle 警告日志中的內(nèi)部錯誤了,錯誤信息如圖6 所示。
圖6 OracIe 警告日志中的內(nèi)部錯誤
經(jīng)項目集成組通過Oracle 技術(shù)支持服務(wù)確認是“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é)作和溝通。