2020年4月25日 星期六

(Windows Server) (SQL) - SQL Server 2012 高可用性AlwaysOn (AG) build


  • 最近有朋友在建置SQL AlwaysOn需求有遇到問題,所以我這邊就來協助建置並測試一下。
  • SQL AlwaysOn是至SQL 2012版本之後所提供的一種高可用性功能,在公司生產環境中,資料庫是一個很重要的系統平台,通常為了避免服務的中斷,而影響至公司整體的運作,基本上都會採用HA的保護機制。


  • 測試環境:
電腦名稱
IP位址
Heartbeat
SQL_AG01
192.168.0.70 (Public IP)
10.10.10.1
SQL_AG02
192.168.0.71 (Public IP)
10.10.10.2
說明:
AlwaysOn不支持Share Datastore  (2台伺服器需各自獨立的Storage)
共享見證主機名稱
IP位址
Share Folder
File_Srv
192.168.0.51
SQL_AG_Witness
說明:
由於測試環境只有2個Node,所以必須要再加上一個仲裁的角色,避免因網路中斷、服務故障,而導致Failover失敗..等問題發生。 (仲裁必須放在其它第三台主機上)
若想知道更多仲裁(見證)的資料可以參考以下網址  (個人覺得這篇文章寫得很好)
https://www.rathishkumar.in/2019/05/understanding-and-configuring-quorum.html

容錯移轉叢集名稱
IP位址

SQL_AG_MGT
192.168.0.75


AlwaysOn 監聽
IP位址

SQL_AG_Listen
192.168.0.76

說明:
偵聽器是一個虛擬的網絡名稱,可以通過這個虛擬網絡名稱來訪問可用性組,而不用知道連接的是哪一個節點,它會自動將請求轉發到主節點,當主節點發生故障後,輔助節點會變為主節點,偵聽器也會自動去偵聽主節點。


1. 首先配置網路卡環境

2. 網路卡順序調整及取消勾選IPv6

3. 心跳網路取消勾選登錄DNS

4. 並停用NetBIOS

5. 各2台SQL伺服器安裝Failover Cluster功能

6. 那麼開始建立叢集,輸入管理叢集名稱及IP位址

7. 先取消勾選新增儲存裝置至叢集

8. 完成

9. 設定仲裁

10. 選取仲裁見證

11. 採用share File見證

12. 選擇share Witness Folder路徑  (資料夾需設為共享)

13. 設定仲裁完成,如此一來容錯移轉叢集的部分就設定OK了

14. 這邊補充一下叢集網路設定,Public Network應設為叢集與用戶端使用,而心跳網路則設為僅叢集使用

15. 接著在各2台SQL伺服器上安裝SQL Server程式

16. 這邊採用預設安裝即可

17. 下一步

18. 下一步

19. 安裝完成

20. 至SQL Server服務右鍵內容

21. 勾選啟用AlwaysOn功能

22. 首先在建立AlwaysOn之前需事先備份資料庫

23. 備份完成  (必須先備份該資料庫才能設定AlwaysOn功能)

24. 新增可用性群組精靈

25. 輸入可用性名稱

26. 選擇要設定的資料庫

27. 加入複本

28. 這邊建議可以改成IP位址

29. 這邊可依使用者選擇

30. 配置接聽程式   (若沒有配置接聽程式的話,我有測試當SQL Public網路斷線時,容錯移轉是會發生異常的)

31. 選擇完整備份路徑

32. 若驗證沒問題就可下一步進行配置

33. 若出現錯誤訊息,需要修改SQL Service的組態管理

34. 修改為Domain Admins成員

35. 重新啟動並進入該Domain Admins帳號即可正常完成配置

36. 這邊可以看到SQL_AG01為Primary、SQL_AG02為Secondary

37. 可至WSFC管理員可以看到該資料庫的容錯移轉服務

38. 先嘗試手動切換看看

39. 手動切換沒問題


40. 接著SQL_AG01先測試Public Network故障  (Primary為SQL_AG01、Secondary為SQL_AG02)

41. 主要複本會切換至SQL_AG02上

42. 最後測試將SQL_AG01關機

43. 已由SQL_AG02接手運作

44. 先在SQL_AG01測試寫入一個Table

45. 可發現SQL_AG02已同步資料

46. 接著將服務容錯移轉至SQL_AG02上,新增Table2看看

47. 再到SQL_AG01也可以看到已同步的Table2資料

48. 另外我有測試在當沒有仲裁的情況下,就會發生無法正常容錯移轉的情況


◎ 結論:比較要注意的是當主要資料庫伺服器發生故障時,要確認容錯移轉服務是否已正常轉移,且開發程式(AP)也必須要指向次要資料庫的主機名稱,這樣用戶才可以連線至備援的伺服器上正常運作唷。

沒有留言:

張貼留言