SQL Server 容錯移轉叢集 (FCI) 是傳統高可用 (HA) 基石,提供執行個體級故障轉移。本文深度剖析叢集類型、架構原理、部署先決條件、授權成本、效能影響、災難恢復 (DR) 整合,助您做出正確架構決策。
核心概念:FCI ≠ 負載平衡
- FCI (Failover Cluster Instance): 單一 SQL Server 執行個體跨節點故障轉移,同一時間僅一節點擁有資源群組 (磁碟、IP、網名、服務)。
- 非負載平衡: 被動節點完全閒置 (主動/被動) 或運行另一獨立實例 (主動/主動),無法將單一查詢分散至多節點並行執行。
- 共享儲存: 所有節點必須連接同一組 LUN (SAN/iSCSI/共用磁碟),資料檔、日誌檔、TempDB 均置於共享儲存。
兩種叢集拓撲
1. 主動/被動 — 經典 HA
| 優點 | 缺點 |
| 故障轉移後效能無損失 (單實例獨享資源) | 硬體利用率低 (被動節點 100% 閒置) |
| 架構簡單、除錯容易 | 授權成本:僅需授權作用中節點核心 (SA 軟體保障可免費覆蓋被動節點) |
| 支援所有版本 (Standard/Enterprise) | 維護窗口需安排故障轉移演練 |
2. 主動/主動 — 硬體利用率最大化
| 優點 | 缺點 |
| 兩節點皆運行實例,硬體 ROI 翻倍 | 故障轉移後單節點承載雙實例,效能下降 30-50%+ |
| 可將不同業務隔離至不同實例 | 授權成本雙倍 (需授權兩節點所有核心) |
| 滾動升級較彈性 | 實例間資源爭用、TempDB 競爭、記憶體壓力需精細規劃 |
部署先決條件清單
- Windows Server Failover Clustering (WSFC) 功能 安裝於所有節點
- 硬體相容性清單 (HCL) 認證:伺服器、HBA、交換機、儲存陣列必須通過「Windows Server Certified」
- 網路: 至少兩張 NIC — 公用 (客戶端連線) + 私用 (心跳/叢集通訊);建議再加一張 iSCSI/儲存專用
- 儲存: 共享磁碟 (SCSI-3 Persistent Reservation)、CSV (Cluster Shared Volumes) 或 SMB 3.0 共用 (SQL 2012+)
- 網域帳號: SQL Server 服務帳號、Agent 服務帳號必須為網域帳號,非 Local System;具備「作為服務登入」、「鎖定記憶體頁面」、「執行磁碟維護工作」權限
- IP/網名: 每個 FCI 需獨立虛擬 IP (VIP) 與網路名稱 (VNN),預先在 DNS/AD 建立
- 相依性排序: 儲存 → 網路名稱 → IP → SQL Server 服務 → Agent 服務
授權模型關鍵點
- Enterprise Edition: 核心授權,SA (Software Assurance) 享「被動節點免授權」權益
- Standard Edition: 核心授權,同樣享 SA 被動節點免授權;但 Standard FCI 限制:最多 2 節點、單實例最多 4 核心/24 核心 (SQL 2019)、無線上索引重建、無資料壓縮
- 主動/主動: 兩節點皆作用中,雙方皆需完整授權,無免費被動節點
效能與維護實務
- TempDB 放置: SQL 2012+ 支援 TempDB 置於本地非共享磁碟 (需相同路徑),大幅降低共享儲存 IOPS 壓力
- 檢查點/備份: 備份目標為共享磁碟,僅作用中節點執行;被動節點不可備份
- 修補策略: 滾動更新 — 先修補被動節點 → 故障轉移 → 修補原主動節點 → 可選故障回復
- 監控指標: 叢集資源群組狀態、網路心跳延遲、共享磁碟延遲/佇列長度、SQL Server 執行個體健康狀態 (sp_server_diagnostics)
FCI + AlwaysOn AG:混合 HA/DR 架構
現代最佳實務:
- 同資料中心:FCI 提供執行個體級自動故障轉移 (RTO < 30 秒)
- 跨資料中心:AlwaysOn 可用性群組 (AG) 提供資料庫級非同步/同步複寫、可讀次要複本、自動容錯移轉 (需 WSFC 跨站台)
- AG 複本可部署於 FCI 節點上,實現「FCI 內高可用 + AG 跨站災備」雙層防護
常見誤區澄清