[SQL]AlwaysON 災害復原測試
前一陣子在網路上看到一些有關於 SQL Server AlwaysON 的討論,雖然自己有把環境架設起來,但都沒有真正測試過如果有異常的狀況發生,是否 SQL Server AlwaysON 可以發揮真正的功效,看到那些討論的問題自己心裡也虛虛的,於是就重新在 ESXi 上面架設環境來做個簡單的測試。
1. 從圖中可以看出目前有兩台 SQL Server 已經安裝完成並且設定好 AlwaysON,目前第一台 AlwaysON_1 是主要伺服器,另外一台 AlwaysON_2 是次要伺服器,採用同步的處理的方式。
2. 如果在 AlwaysON_1 這台上面,利用 DOS Command 「net stop mssqlserver」來關閉 SQL Server 服務,此於會發現在 AlwaysONGroup 的環境上會知道原本主要伺服器的角色,會由 AlwaysON_1 移轉給 AlwaysON_2,還可以繼續提供服務。
3. 但如果此時我們重新回到第 1 步的環境,但是狀況不是 SQL Server 的服務被停掉,而是整台電腦斷線或者是被關機了,此時我們利用 DOS Command 「shutdown –s –t 0
」來關閉整台電腦,此時會出現在 AlwaysONGroup 的環境,會無法解析主要伺服器的角色由哪台主機來擔當,而一值停留在解析中的狀況。如果此時去查看容錯移轉叢集管理員上面來查看,會發覺 WFCS 是無法啟動被關閉的。
4. 會發生這樣的狀況主要是因為無法仲裁的情況,因此我們決定增加一個仲裁磁碟,來看看是否能解決問題。首先我們先在 NAS 上面建立一個 iSCSI Target,讓 AlwaysON_1 和 AlwaysON_2 都可以共同存取。而在兩台 SQL Server 主機上面也利用 iSCSICPL ( iSCSI 啟動器 ) 去連接那個共用的 iSCSI Target ,並且在磁碟管理員上面掛載進來成為一個磁碟機。
5. 接下來透過容錯移轉叢集管理員上,先在存放裝置上選擇「新增磁碟」的功能,將前面一個步驟所掛載進來的磁碟,先設定為 Cluster 所能使用的;接著在我們叢集名稱上,按下滑鼠右鍵選擇「其他動作」->「設定叢集仲裁設定」,此時我們將原本的節點多數改為「節點與磁碟多數」,接著按下下一步
接下來將剛剛透過「新增磁碟」所選進來的磁碟勾選為磁碟見證所使用,後續就一直下一步讓他做完設定。
6. 當設定完之後,我們先將狀態 AlwaysON_1 和 AlwaysON_2 回到原始的狀況,接著我們測試剛剛直接關機會有問題的狀況,此時當在 AlwaysON_1 下了關機指令之後,透過 AlwaysON 儀錶看到此時已經自動將 AlwaysON Group 的主要角色已經移到 AlwaysON_2 上面了。
透過上述的實驗,如果當只有兩台 AlwaysON 的主機的時候,個人建議還是把 Quorum 機制給設定好,不論要使用共用磁碟或者是共用目錄,都可以避免當其他一台異常的時候,而造成 AlwaysON 無法使用的狀況。
如果對 AlwaysON 的安裝有興趣的話,個人建議可以參考 Cary 的另外一篇文章,裡面有很詳細的安裝步驟,網址是 http://caryhsu.blogspot.tw/2012/04/sql-server-2012-alwayson.html
PS. 相關的參考資料
1. Windows Server Failover Clustering (WSFC) with SQL Server
2. WSFC Quorum Modes and Voting Configuration (SQL Server)
3. Quorum vote configuration check in AlwaysOn Availability Group Wizards