在工作群組的環境下,如何設定檔案共用見證,讓叢集的仲裁可以正常運作
在前一篇的文章中 「在沒有網域的環境下架設 SQL Server AlwaysOn 的環境」,如果嚴格來說應該算是只做了一半,有架設過 Windows 叢集的人員應該都很清楚,雖然用該方式已經架設起來 AlwaysON,但實際上並沒有辦法當某一台掛掉的時候,就由另外一台直接接手。因為我們的環境中是有兩個節點,並不是一個單數的狀況,造成沒有辦法實現叢集的仲裁。因為之前雖然看過文章說可以架設工作群組叢集時,就有點困擾這個部分該怎麼來進行,剛好看到偉任兄有分享的文章,才有機會來做個測試和驗證。
關於這個部分,如果使用 Windows Server 2016 的版本,就只能考慮使用磁碟見證的方式,但如果有對外網路,透過 Azure Storage 來做仲裁見證,也是一種方法。然而從 Windows Server 2019 開始,在這種 Workgroup Cluster 的環境下,也是可以使用檔案共用見證的方式,指示設定起來稍微麻煩一點。
最主要的是,在 AD 的網域環境之下,我們可以直接使用「容錯移轉叢集管理員」,透過 GUI 的介面來做設定;但是在工作群組的環境之下,則必須自己手動使用「Set-ClusterQuorum」這個 PowerShell 的指令來做設定,再使用這個指令設定的時候,除了指定共用的磁碟目錄之外,最主要就是使用「Get-Credential」這個指令來指定 FileServer 主機上面的一個本機帳號,而且要確保那個帳號是可以對那個分享的目錄有存取的權限。
所以當出現以下要輸入帳號和密碼的視窗的時候,要特定指令「電腦名稱\帳號」,正常來說要比較符合安全的規範的狀況下,最好另外建立一個特別來使用的帳號和密碼來做這個部分,但因為這個只是做個範例,因此我就直接用共享磁碟那台主機上面的 Administrator 的帳號,因此當輸入帳號的時候,我們要特別輸入「FileServer\Administrator」
當符合驗證過了,就會類似以下出現已經成功設定「檔案共用見證」
所以這個時候當我們重新回到「容錯移轉叢集管理員」上面的時候,就會出現「見證: 檔案共用見證」的設定
因此當我們設定好之後,我們回到 SSMS 上面來查看,會看到目前可用性複本會顯示 SQL1 主要 和 SQL2 次要的說明
而當我們把 SQL1 給關閉之後,可以看到可用性群組中,SQL2 已經自動切換成為主要,看起來就蠻符合我們所想要的工作群組的環境中使用 SQL Server AlwaysOn 的架構。
後記 : 雖然透過上述的方法,可以建立檔案共用見證來讓 Windows 的叢集進行仲裁判斷。但我個人還是比較不喜歡這樣的方式。因為當使用這樣的方式的時候,這幾台搭配測試的 SQL Server 都特別需要建立一個帳號來啟動,另外共享目錄的電腦,也要特別指定一個帳號或特別建立一個帳號來處理,但如果此時企業內的主機因為有帳號因為密碼原則的要求,需要更改這個指定帳號的密碼時候,那麼 SQL Server 相關服務的啟動帳號和密碼也要跟著來做修改,甚至該帳號不能設定為虛擬帳號。使得沒有權限的使用者,在管理這樣工作群組環境下的 AlwaysOn 的環境是相對來說比較麻煩。因為當在有 AD 的環境下,可以直接使用受管理的服務帳號來啟動 SQL Server,而且如果仲裁使用檔案共用的見證方式,也只要設定節點和叢集名稱對該目錄有共用的讀寫權限,也就不用那麼麻煩的去設定了。