前言
本文說明及實作如何採用 SQL Server 2014 SP1 Standard 版本,將 2 台 Windows Server 2012 R2 建置 SQL Server AlwaysOn Failover Cluster Instances (FCI),並且結合 gMSA (Group Managed Service Accounts) 服務帳戶的部分。SQL Server Cluster 從 2012 版本開始,都改稱為 SQL Server AlwaysOn Failover Cluster Instances (FCI),也就是 Standard 版本支援的叢集模式。而採用 Enterprise 版本才能建置SQL Server AlwaysOn Availability Groups(AG),此外:
- SQL Server 2012 Cluster 只支援「可用存放裝置」
- SQL Server 2014 Cluster 支援「可用存放裝置」或「CSV」
gMSA (Group Managed Service Accounts)
它是一個自動提供密碼管理的網域帳戶,因為此帳戶的密碼是由 Windows Server 2012 網域控制站所管理。同時,允許 Windows 能自動處理這些帳戶的密碼管理,將服務帳戶的管理負擔降至最低。從 Windows Server 2012 開始的新名稱為 gMSA (舊名稱為 MSA),解決以往需要開啟 Domain User Account 給「服務」使用的困擾(阻擋登入、定期更換密碼…等)。但是,必須要將 gMSA 網域樹系中的 Active Directory 架構更新成 Windows Server 2012,才能建立 gMSA。
實作環境
- DC/DNS: 192.168.40.100
- SQL Server01: SQL01 / 192.168.40.101
- SQL Server02: SQL02 / 192.168.40.102
- WSFC (Windows Server Failover Cluster): SQL2014-WSFC / 192.168.40.104
- SQL Server AlwaysOn FCI(Failover Cluster Instances): SQL2014-FCI / 192.168.40.105
設定步驟 1、產生 Master Root Key
首先,要在網域內建立並部署「Master Root Key」之後才可以建立服務帳戶,請「Active Directory Sites and Services > View > Show Services Node」左邊會出現 Services 項目,然後點選「Services → Group Key Distribution Service → Master Root Keys」會發現目前是空的。然後執行下列指令產生 Master Root Keys,因為 Add-KdsRootKey 的 PowerShell 指令,預設需要 10 小時的同步時間之後,才能建立 gMSA 帳號,下列指令即可處理,此時 Master Root Keys 就會產生了。詳細資訊請參考 TechNet Library - Create the Key Distribution Services KDS Root Key
Add-KdsRootKey –EffectiveImmediately //for production
Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10)) //for lab
設定步驟 2、建立 gMSA 服務帳戶 (在 DC 主機上設定)
建置 SQL Cluster 的電腦名稱為「SQL01、SQL02」,建立的服務帳戶為「gMSA-SQL」,建立 Security Group 「gMSA-SQLGroup」且將 SQL01、SQL02 電腦帳戶設定為此群組的成員。接著執行如下指令建立服務帳戶「gMSA-SQL」,建立完成後在 Active Directory Users and Computers > Managed Service Accounts 便會出現服務帳戶。
New-ADServiceAccount -Name gMSA-SQL -DNSHostName gMSA-SQL.weithenn.org -PrincipalsAllowedToRetrieveManagedPassword "gMSA-SQLGroup"
安裝及測試 gMSA 服務帳戶
將 SQL01、SQL02 主機重新啟動,否則安裝 gMSA 服務帳戶時就會出現下列錯誤訊息。當 SQL01 主機重新啟動後,即可順利安裝及測試 gMSA 服務帳戶。
SQL02 主機先重新啟動後,才執行安裝及測試 gMSA 服務帳戶的動作,所以都沒任何錯誤產生。
設定步驟 3、建立 WSFC
先為 SQL01、SQL02 主機安裝「.NET Framework 3.5、容錯移轉叢集」功能。底層採用 Shared VHDX (1GB for Quorum、100GB for DB/Log) 提供給 SQL01、SQL02 主機建立 WSFC 環境。
順利建立好 WSFC 運作環境。
設定步驟 4、建立 SQL Server FCI
從 SQL Server 2014 起支援 CSV,同時也可以享有 CSV Block Cache 的好處。那麼就把規劃的 100GB 從可用存放裝置轉換為「CSV(叢集共用磁碟區)」。切換到 SQL01 主機 (FCI 第 1 台主機)
切換到 SQL01 主機,點選「新的 SQL Server 容錯移轉叢集安裝」。原則上,都採用預設值即可,在安裝程式角色頁面中選擇「SQL Server 功能安裝」項目。在特徵選取頁面中,勾選「Database Engine Services、管理工具 - 基本」項目即可。
在執行個體組態頁面中,輸入預先規劃好的名稱「SQL2014-FCI」。
在叢集磁碟選取頁面,此實作環境只規劃 1 個 CSV 給 DB / Log 同時共用。
在叢集網路組態,輸入預先規劃好的 IP 位址「192.168.40.105」。
在伺服器組態頁面中,便是採用先前所建立的 gMSA 服務帳戶「gMSA-SQL」,在決定前先再次確認 SQL01 主機可以辨識出此 gMSA 服務帳戶。此外,定序的部份則採用「Chinese_Traditional_Stroke_Count_100_CI_AS」。
在資料庫引擎組態頁面中,因為有需求要用 SQL 驗證所以選混合。在資料目錄中,確認路徑是採用「CSV 路徑」。
確認無誤後就開始安裝吧。
安裝完畢後,記得開啟防火牆「TCP Port 1433」,我的環境只開啟防火牆設定檔「網域」的部份。
在系統服務的部份,可以看到 5 個 SQL Server 服務都為「執行中」。
此時,在 SQL01 主機中,也已經可以看到 CSV 路徑中的 SQL 系統資料庫。
在容錯移轉叢集管理員中,已經可以看到 SQL Server 高可用性角色。
開啟 SSMS 管理工具,並採用 SQL FCI 叢集名稱「SQL2014-FCI」來登入。登入後,先將預設的 sa 改名為「sqladmin」,保持基本的安全性。因為此實作環境中 SQL01 主機的記憶體為 16GB,所以將最大伺服器記憶體設定為 12GB,以免影響 Windows 系統運作。
切換到 SQL02 主機 (FCI 第 2 台主機)
切換到 SQL02 主機,點選「將節點加入到 SQL Server 容錯移轉叢集安裝」,原則上都採用預設值即可。在叢集節點組態頁面,可以看到自動帶出 SQL Server FCI 名稱「SQL2014-FCI」。
在叢集網路組態頁面,可以看到自動帶出 SQL Server FCI 的 IP 位址「192.168.40.105」。
在服務帳戶頁面中,同樣的自動帶出所採用的 gMSA 服務帳戶「gMSA-SQL」,再次確認 SQL02 主機可以辨識出此 gMSA 服務帳戶,便直到安裝完畢。
同樣的安裝完畢後,記得開啟防火牆「TCP Port 1433」,我的環境只開啟防火牆設定檔「網域」的部份。
在系統服務的部份,可以看到只有 2 個 SQL Server 服務為「執行中」。
當然,在 SQL02 主機中,也可以看到 CSV 路徑中的 SQL 系統資料庫。
在 SQL02 主機上,開啟 SSMS 測試用 SQL 驗證能否登入。
設定步驟 5、驗證 SQL Server FCI 節點切換
目前 SQL Server 高可用性角色在「SQL01」主機上,我們用 SSMS 登入後建1個測試資料庫為「test01」。
切換 SQL Server 高可用性角色節點為「SQL02」主機,同樣用 SSMS 登入後建1個測試資料庫為「test02」。
此時 SQL01 主機 (非擁有者節點),在 SQL Server 系統服務的部份只會啟動「3 個」。
此時 SQL02 主機 (擁有者節點),在 SQL Server 系統服務的部份則會啟動「5 個」。
測試結果確認 SQL01、SQL02 主機,都可以透過 gMSA-SQL 服務帳戶,順利帶起 SQL Server 相關服務。至此,SQL Server 2014 SP1 FCI 實作完成 :)
參考資料
- TechNet Library - 群組受管理的服務帳戶概觀
- TechNet Library - SQL Server Failover Cluster Installation
- MSDN Blogs - Deploying SQL Server 2014 with Cluster Shared Volumes - Clustering and High-Availability
- Channel 9 - TechEd North America 2014 - Step-by-Step to Deploying Microsoft SQL Server 2014 with Cluster Shared Volumes
- Channel 9 - TechEd North America 2014 - AlwaysOn in Microsoft SQL Server 2014