週末本該休息,卻因協助同事架設 Windows 故障轉移叢集而加班到凌晨。雖然平日專注中介軟體領域,且曾在 WebSphere、WebLogic 上實作過 MSCS 叢集,自以為駕輕就熟,實際操作卻從傍晚六點搞到次日凌晨一點,中間曲折離譜。這篇文章將完整複盤從「誤入歧途」到「標準化部署」的全過程,助你避開同樣陷阱。
初期我們沿用 Oracle on Windows 的部署邏輯:在兩台主機各啟動一個資料庫實例,資料檔放在共享存儲,再透過叢集資源新增「通用服務」來管控 DB2 服務啟停,以達到故障轉移目的。理論上可行,實際卻卡在關鍵點——有用戶連線時停止 DB2 服務會失敗,必須嘗試第二次才能成功,導致手動切換叢集極不穩定。
為解決此問題,我們嘗試在服務停止前先執行中斷所有資料庫連線的指令,卻苦思冥想、多次嘗試皆無果,陷入焦頭爛額的境地。
db2mscs最終在 IBM DeveloperWorks 文檔中發現真相:DB2 早已提供專用工具 db2mscs,實例僅需一份即可,無需在兩節點各建實例。只需編寫一份 db2mscs.cfg 設定檔,執行指令即可自動完成叢集資源建立。
db2mscs.cfg)DB2_INSTANCE=DB2
DB2_LOGON_USERNAME=dbdomain/db2admin
DB2_LOGON_PASSWORD=0000
CLUSTER_NAME=MYCLUSTER
GROUP_NAME=DB2 Group A
DB2NODE=0
IP_NAME=MscsA
IP_ADDRESS=192.168.192.31
IP_SUBNET=255.255.255.0
IP_NETWORK=Public Network
NETNAME_NAME=MscsAName
NETNAME_VALUE=DataCenter
NETNAME_DEPENDENCY=MscsA
DISK_NAME=DISK E:
INSTPROF_DISK=E:
db2mscs -f:db2mscs.cfg
注意:-f 後非磁碟代號,設定檔需與 db2mscs.exe 放同一目錄。
指令跑完後,叢集管理員中會自動新增資源群組 DB2 Group A,並出現一個類型為 DB2 的專用服務資源(此類型為工具自動註冊,原本不存在)。至此,高可用 DB2 叢集服務正式上線,故障轉移測試順利通過,無需再手工處理連線中斷邏輯。
db2mscs,它能自動建立 IP、網路名、磁碟、DB2 服務四大核心資源並設定相依性,省去數小時手工配置與除錯。這次從「以為小菜一碟」到「通宵踩坑」,最終靠原廠工具一鍵搞定,深刻體會:資料庫叢集部署,認準原廠最佳實務,別讓經驗成了盲點。