沒有網域及DNS Server的架構下單純地用兩台Server架出SQL Server AlwaysON(Availability Group)

之前聽過老師在介紹SQL Server 2016時有提到利用Windows Server 2016及SQL Server 2016可以在無網域的狀況下建立WSFC(Windows Server Failover Clustering),因此也可以在不用網域的狀況下建立Availability Group了。

這樣就不用為了架SQL HA的原因還得搞出一個網域了,下圖中是從官網抓下來的圖,由圖中可以得知這架構還得建立在有DNS Server的環境。但Rock想用更簡單的方式架出兩個NODE的AG了。

大家都知道AG的架構是Mirroring的進化版,在無網域的狀況下各NODE間的資料傳遞就無法靠網域帳號來做驗證,因此需要採用憑證的方式來做因此本LAB開始前請大家先將兩個NODE的憑證跟帳號及Endpoint先給建好,這邊我就不再詳述,詳細作法請參考另一篇文章[鏡像] 多台主要mirroring到同一台副本主機

要在無網域環境下建立WSFC得先讓兩台Server加入相同的網域,並且需要給電腦完整的FQDN(Fully Qualified Domain Name)名稱,變更這些設定的地方如下圖。下圖中我們的電腦名稱叫W16SQL17Mirror2而工作群組叫做WORKGROUP,我們按右邊紅色圈選處來改變設定。

如下圖按下變更按鈕

本LAB中我將工作群組改名為WGFORHA,然後按下其他這一個按鈕。

接下來在下圖DNS尾碼的設定輸入SQLHA.LAB ,這樣一來本電腦就有完整的FQDN了。

我們回到剛剛檢視電腦資訊的頁面,可以看見電腦名稱變為W16SQL17Mirror2.SQLHA.LAB了,其工作群組也變成WGFORHA了。

接下來我們就安裝容錯移轉叢集的功能在Server上。

官方網頁的圖示中表明這一種架構需要一台DNS的Server來搭配,但我只想很單純的兩台Server架出AG就好,因此我就偷吃步的直接修改HOSTS檔,讓兩個NODE可以知道彼此的IP位址就可以。HOSTS的檔案路徑在C:\Windows\System32\drivers\etc下面。如下圖所示我將完整的FQDN對應的IP都寫入到HOSTS這一個檔案內了。

上述所有動作,請記得兩個NODE都需要完成下面事項
1.FQDN修改
2.容錯移轉叢集的安裝
3.HOSTS的設定。

下圖中我們就開啟容錯移轉叢集的功能來建立WSFC囉。我們在容錯移轉叢集管理員按下滑鼠右鍵後點選建立叢集

下圖這一個步驟就是選取我們要加入這一個叢集的Server主機,請記得要填入完整的FQDN然後按新增的按鈕。下圖中我已經成功加入一台名稱為W16SQL17Mirror1.SQLHA.LAB的主機,但是我要加入第二個名稱為W16SQL17Mirror3.SQLHA.LAB卻發生失敗,這是怎麼一回事呢?

下圖這步驟請記得在所有要加入叢集的NODE都先跑一次,就不會發生上一步驟加入叢集卻驗證失敗的情況。這步驟就是修改主機register中的LocalAccountTokenFilterPolicy登錄設定,完成修改後會影響遠端管理電腦系統管理員認證的套用方式,這樣一來我們就可以通過認證將W16SQL17Mirror3.SQLHA.LAB加入到叢集內了。

下圖顯示兩個NODE都順利選進來囉。

省略驗證

設定叢集名稱跟IP位址。

下圖圈選處需注意一下,如果你有勾選起來的話,C碟以外的硬碟就有可能被拉去當叢集資源的硬碟歐,所以我把勾勾取消掉。(聽朋友說有人當時忘記將這個勾勾取消就加入叢集,導致整台Server當下只剩C碟可以用,但我沒這樣試過啦。)

下圖開始建立叢集。

完成叢集的建立。

下圖中可以看見sqlcluster這一個叢集有兩個NODE。分別為W16SQL17Mirror1W16SQL17Mirror3

完成OS部分的設定後就開始SQL部分的設定囉,首先開啟SQL Server Configuration Manager點選SQL Server服務然後在右邊SQL Server按右鍵點選內容(如下圖所示)。

我們點選AlwaysOn高可用性的這一個頁籤,然後勾選啟用AlwaysOn可用性群組(如下圖紅色圈選處)。

完成設定後記得要重啟SQL的服務,這樣設定才會生效。

上述設定啟用AlwaysOn可用性群組的設定請記得所有的NODE都要開啟歐。

下圖中我將W16SQL17Mirror1設為主要,W16SQL17Mirror3為次要副本。W16SQL17Mirror1有兩個DB會當來源,而我已經先將這兩個DB用NORecovery方式還原到W16SQL17Mirror3上了(如下圖下方紅色圈選處)。

接下來我在W16SQL17Mirror1上展開AlwaysOn高可用性可用性群組上按下滑鼠右鍵來新增可用性群組

我將這一個可用性群組命名為AG1。

選擇要加入群組的DB。

將兩個NODE選到這個可用性群組來。

建立這一個AG的接聽程式的名稱及IP位址。

由於我採用自己到每一個NODE還原資料庫的方式來建立AG,所以這一步我就點選僅聯結這一個選項。

完成驗證。

確認設定組態。

建立AG中。

下圖就是精靈完成AG1這一個高可用性群組的建立,可以看見這一個群組有兩個DB。W16SQL17Mirror1是主要副本。

下圖為AlwaysOn的狀況儀錶板,圖中顯示我們的可用性群組狀態良好。

接下來就是要試一下是可以正常的容錯移轉嗎? 我到次要副本W16SQL17Mirror3在AG1上面點選滑鼠右鍵選擇容錯移轉

選擇要移轉到哪一個NODE,由於我們只有兩NODE,因此只能勾選W16SQL17Mirror3。

確認選擇。

精靈開始AG的NODE移轉,下圖顯示順利完成移轉。

完成移轉後我們重新整理一下SSMS的狀態,我們可以看見現在AG1的主要副本已由W16SQL17Mirror1變成W16SQL17Mirror3了。

以上簡易的LAB我們成功的在沒有網域及DNS Server的架構下單純地用兩台Server架出SQL Server AlwaysON(Availability Group)。

後記 : LAB中我也有故意關閉NODE來測試是否會自動移轉,測試結果都是可以成功的移轉。但這樣的架構不知道穩定性如何或是會有甚麼樣的功能限制,我就不得而知了。

 

 

我是ROCK

rockchang@mails.fju.edu.tw