早期嘗試模仿 Oracle RAC:兩節點同時啟動實例、共享存儲放數據、叢集資源添加「通用服務」監控 DB2 服務。致命缺陷:有用戶連接時 net stop DB2 失敗,需第二次才能停止,導致故障切換不可靠。
正解:DB2 原生提供 db2mscs 工具,實例僅需一份,安裝於共享磁盤,叢集資源由工具自動建立專用 DB2 資源類型,完美解決優雅停機與切換。
DB2_INSTANCE=DB2 # 目標實例名
DB2_LOGON_USERNAME=dbdomain\DB2admin # 實例服務登錄域用戶
DB2_LOGON_PASSWORD=0000 # 登錄密碼
CLUSTER_NAME=MYCLUSTER # MSCS 叢集名稱
GROUP_NAME=DB2 Group A # 叢集資源組名
DB2NODE=0 # 對應 DB2 節點號 (單分區=0)
IP_NAME=MscsA # IP 地址資源名
IP_ADDRESS=192.168.192.31 # 虛擬 IP (浮動 IP)
IP_SUBNET=255.255.255.0 # 子網掩碼
IP_NETWORK=Public Network # 綁定的網卡名稱 (提供外部服務的網卡)
NETNAME_NAME=MscsAName # 網路名稱資源名 (可選)
NETNAME_VALUE=DataCenter # 網路名稱值 (可選)
NETNAME_DEPENDENCY=MscsA # 網路名依賴的 IP 資源 (可選)
DISK_NAME=DISK E: # 共享磁盤資源名 (叢集管理器中顯示名)
INSTPROF_DISK=E: # 實例配置目錄所在共享磁盤盤符
IP_ADDRESS:浮動 IP,故障切換時隨資源組移動,客戶端連接此 IP。IP_NETWORK:必須填寫提供外部服務的網卡名稱 (如 "Public Network"、"生產網絡"),非心跳網卡。NETNAME_*:NetBIOS 名稱資源,純 IP 連接環境可留空/省略。DISK_NAME:叢集管理器中共享磁盤資源的顯示名稱 (非盤符)。INSTPROF_DISK:實例目錄 (sqllib) 所在共享盤符,確保雙節點可見相同配置。db2mscs.cfg 放置於 db2mscs.exe 同目錄 (通常 %DB2PATH%\bin)。db2mscs -f:db2mscs.cfg
注意:-f: 後直接跟文件名,非盤符。
DB2 Group A (含所有 DB2 相關資源)。db2stop force)、健康檢查。MscsA (192.168.192.31)。MscsAName (可選)。DISK E: (共享存儲)。DB2 Group A → 「移動組」至另一節點,觀察 30-60 秒內完成切換。db2 catalog tcpip node cls_remote 192.168.192.31 server 50000 → db2 connect to sample。| 問題 | 原因 | 解決 |
|---|---|---|
| db2mscs 執行無反應/報錯 | 配置文件編碼非 ANSI、路徑含空格、權限不足 | 用記事本另存為 ANSI、路徑無空格、以管理員運行 CMD |
| 資源組建立但 IP 無法上線 | IP_NETWORK 填寫錯誤 (填了心跳網卡)、IP 地址衝突 | 確認網卡名稱、IP 規劃無衝突 |
| 切換後實例無法啟動 | 共享磁盤未在目標節點上線、INSTPROF_DISK 盤符不一致 | 確認共享磁盤在所有節點同盤符、磁盤資源依賴正確 |
| 客戶端切換後連接中斷 | 客戶端未配置自動重連、連接字串用實體 IP 而非浮動 IP | 應用層實現重試邏輯、統一使用浮動 IP/網路名稱 |
Windows MSCS 部署 DB2 HA,拋棄通用服務模式,擁抱 db2mscs 原生工具。一份配置文件、一條命令,自動生成專用 DB2 叢集資源類型,解決優雅停機、浮動 IP、共享磁盤、優先級依賴全鏈路問題。配合正確的網卡綁定、浮動 IP 規劃、客戶端重試機制,即可構建企業級高可用 DB2 叢集。