首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 叢集部署關鍵技巧:硬體、版本、單節點、節點擴充與自動化

     編輯:關於SqlServer

前言:叢集是高可用性的基石,也是細節的藝術

Windows Server Failover Clustering (WSFC) + SQL Server Failover Cluster Instance (FCI) 是傳統高可用架構。13 年實戰經驗凝練出七大關鍵技巧:硬體認證、版本選擇、單節點預部署、節點擴充自動化、服務帳號管理、網路配置、人員流程。避開「硬體在 HCL 但整體不在」等經典坑點。

一、硬體:整體認證非元件認證

鐵律:單一元件 (HBA、網卡、磁碟陣列) 通過 Windows Server Catalog (原 HCL) ≠ 整體叢集方案通過認證。

  • 必須驗證 完整解決方案 (伺服器型號 + 韌體版本 + HBA + 交換器 + 共享儲存陣列 + 多路徑軟體) 在 WSFC 認證清單中
  • 低成本替代:Microsoft 驗證的 S2D (Storage Spaces Direct) 方案 (Windows 2016+)、或經認證的 共享 SAS JBOD 方案
  • 共享磁碟 = 單點風險:雙控制器、雙路徑、多路徑軟體 (MPIO/DSM) 必須冗餘

二、版本選擇:Enterprise vs Standard

建議:已有 EE 授權 → 必上 FCI。僅有 SE → 兩節點 FCI 仍具高可用價值。若需 >2 節點或進階功能 → 必須 EE。

三、單節點叢集:為未來預留擴充路徑

1. 為何部署單節點 FCI?

  • 當前僅一台伺服器,但未來 6-12 月規劃擴充為雙節點
  • 避免未來「重建叢集 → 重裝 SQL → 遷移資料 → 停機」的痛苦
  • 單節點 FCI 仍享有 FCI 優勢:資源群組管理、IP/網名虛擬化、服務依賴關係

2. 部署關鍵

  • 硬體 必須符合雙節點叢集認證規格 (共享儲存、雙網卡、雙 HBA)
  • 安裝 SQL 時選擇「新增 SQL Server 容錯移轉叢集執行個體」→ 僅選擇當前節點
  • 未來擴充:新增節點 → 安裝 SQL 二進位檔 + 修補程式 → `AddNode` → 故障轉移驗證 → 移除舊節點
  • 停機時間 = 故障轉移時間 (通常 < 60 秒) + 修補程式安裝時間

四、節點擴充自動化:腳本化一切

1. 經典慘案:手動加節點遺漏服務帳號

  • OS/網管建好新節點,DBA 加入叢集、安裝 SQL
  • 故障轉移測試 → 失敗 (資源無法上線)
  • 根因:新節點缺少「叢集服務帳號」與「SQL Server 服務帳號」的本地管理員權限 / 登入為服務權限
  • 排查耗時 4 小時

2. 自動化腳本 (PowerShell + Cluster.exe)

# Add-ClusterNode.ps1
param($NewNodeName, $ClusterName, $SqlServiceAccount, $ClusterServiceAccount)

# 1. 加入 WSFC 叢集
Add-ClusterNode -Name $NewNodeName -Cluster $ClusterName

# 2. 設定服務帳號本地權限 (關鍵!)
$accounts = @($SqlServiceAccount, $ClusterServiceAccount)
foreach ($acc in $accounts) {
    # 授予「登入為服務」SeServiceLogonRight
    ntrights +r SeServiceLogonRight -u $acc
    # 加入本地管理員群組 (視安全策略,或僅授予必要權限)
    net localgroup Administrators $acc /add
}

# 3. 安裝 SQL Server 二進位檔 (無人值守)
$args = "/Q /ACTION=AddNode /INSTANCENAME=MSSQLSERVER /IACCEPTSQLSERVERLICENSETERMS `
         /FAILOVERCLUSTERGROUP=""SQL Server (MSSQLSERVER)"" `
         /FAILOVERCLUSTERIPADDRESSES=""IPv4;10.0.1.100;255.255.255.0;ClusterNet1"" `
         /SQLSVCACCOUNT=""$SqlServiceAccount"" /SQLSVCPASSWORD=""$SqlPwd"" `
         /AGTSVCACCOUNT=""$SqlAgentAccount"" /AGTSVCPASSWORD=""$AgentPwd"" `
         /ASSVCACCOUNT=""$AsAccount"" /ASSVCPASSWORD=""$AsPwd"" `
         /INDICATEPROGRESS /CONFIRMIPDEPENDENCYCHANGE=0"
Start-Process "Setup.exe" -ArgumentList $args -Wait -NoNewWindow

# 4. 安裝修補程式 (CU/GDR)
# 5. 驗證故障轉移
Move-ClusterGroup -Name "SQL Server (MSSQLSERVER)" -Node $NewNodeName

3. SQL 2008+ 改進:安裝精靈強制網域群組

  • 安裝時需指定 SQL Server 服務帳號為 網域群組 (非個別使用者)
  • 新增節點時,只需將新節點電腦帳號加入該網域群組,權限自動繼承
  • 消除「手動加本地權限」步驟,大幅降低人為錯誤

五、網路配置:多子網、DNS、Kerberos

功能Enterprise EditionStandard Edition
FCI 節點數上限8 節點 (SQL 2012+)2 節點
線上索引重建支援不支援
資料壓縮支援不支援
分割資料表/索引支援不支援
記憶體上限OS 限制128 GB (SQL 2012/2014)、64 GB (SQL 2016+)
CPU 核心上限OS 限制4 插槽 / 24 核心

關鍵:多子網叢集 (SQL 2012+)

  • 跨資料中心節點部署不同子網
  • FCI 虛擬 IP 設為 OR 邏輯 (多個 IP 資源,任一上線即可)
  • 連線字串加 `MultiSubnetFailover=True`,驅動程式並行嘗試所有 IP,極速故障轉移

六、人員與流程:技術之外的成敗手

「叢集能防硬體故障,防不了睡眠不足的 DBA 午夜刪表。」

  • 變更管理:所有叢集變更 (修補、配置、故障轉移演練) 走 RFC、雙人覆核、可回滾
  • 運行手冊:含故障轉移步驟、資源離線/上線順序、日誌分析、聯絡樹
  • 季度演練:計畫性故障轉移、非計畫性模擬 (拔網線、關電源)、RTO/RPO 實測
  • 知識傳承:離職交接清單、腳本庫版控、事故複盤文檔

七、總結清單

網路介面用途配置要點
Public/Client應用連線靜態 IP、註冊 DNS A 記錄 (FCI 虛擬網名)、SPN 註冊
Private/Heartbeat叢集心跳專用 VLAN、非路由、MTU 9000 (Jumbo Frame)、至少兩條路徑
iSCSI/Storage共享儲存獨立 VLAN/HBA、MPIO 多路徑、流量隔離
階段關鍵動作驗收標準
規劃整體方案認證、版本授權、網域群組服務帳號認證清單截圖、授權合約
部署單節點預部署、自動化腳本驗證、多網路隔離故障轉移測試 < 60秒、無錯誤日誌
擴充腳本化 AddNode、修補程式同步、權限自動化新節點 0 手動步驟、故障轉移雙向通
運維季度演練、修補滾動、監控告警 (資源狀態、磁碟、網路)RTO 實測達標、零非計畫停機

叢集部署不只是「下一步、下一步、完成」,而是 硬體認證、版本規劃、自動化腳本、網路隔離、人員流程 五位一體的系統工程。掌握這七大技巧,讓您的 SQL Server FCI 真正成為「睡得著覺」的高可用基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved