SQL Server於Microsoft Azure Virtual Machine的高可用性解決方案-AlwaysOn可用性群組(上)
說明
Microsoft Azure提供許多高可用性機制來保障Virtual Machine(以下簡稱VM)本身的高可用性,但如果您在VM中使用SQL Server來提供各項資料庫相關的應用,那麼SQL Server的高可用性就必須自行實作,所幸在Microsoft Azure發展至今,許多在企業內部部署的SQL Server高可用性及災難復原(HADR)解決方案(例如AlwaysOn可用性群組、資料庫鏡像、記錄傳送)都可以在Microsoft Azure Virtual Machine中實作。
因此,本文將介紹如何在Microsoft Azure Virtual Machine部署SQL Server AlwaysOn可用性群組,並透過可用性群組的接聽程式及唯讀路由來實作讀寫分流的架構。
環境描述
本文計畫在Microsoft Azure建立4台VM,其中包含一台網域控制站,因為AlwaysOn可用性群組是以WSFC為基礎,在開始之前必須先將所有要預計要做為可用性複本的SQL Server加入相同的容錯移轉叢集,但不需要準備特別準備共用儲存裝置。另外還需要使用VM組件庫中的SQL Server映像來建立三台VM作為可用性複本(如下圖所示)。
上述VM的大小您可以依照實際需求來選擇,唯一需要注意的是伺服器層次需選擇標準,否則無法建立負載平衡端點。
下表為本文撰寫時所使用的VM規格:
名稱 | 虛擬機器層次 | 虛擬機器大小 | 雲端服務 | 可用性設定組 | 虛擬網路 | 使用映像 |
madc | 標準 | A0 | alwaysonag | - | AlwaysOnAGNet | Windows Server 2012 R2 Datacenter |
sql1 | 標準 | A1 | alwaysonag | sqlhadr | AlwaysOnAGNet |
SQL Server 2014 RTM Enterprise Windows Server 2012 R2 |
sql2 | 標準 | A1 | alwaysonag | sqlhadr | AlwaysOnAGNet |
SQL Server 2014 RTM Enterprise Windows Server 2012 R2 |
sql3 | 標準 | A1 | alwaysonag | sqlhadr | AlwaysOnAGNet |
SQL Server 2014 RTM Enterprise Windows Server 2012 R2 |
接下來筆者將參考教學課程:Windows Azure 中的 AlwaysOn 可用性群組 (GUI),帶您逐步完成AlwaysOn可用性群組建置於Micorsoft Azure的高可用性解決方案。
建立虛擬網路
為了讓整個LAB的VM都可以在相同網段中運作,因此一開始您必須建立虛擬網路(Virtual Network),您可以在Microsoft Azure管理入口網站中點選下方的【新增>網路服務>虛擬網路>自訂建立】。
在名稱欄位輸入AlwaysOnAGNet,選擇要將虛擬網路建置在東亞的資料中心。
因為本文的整個環境都是建置在Microsoft Azure,在這個步驟可以不需要設定DNS伺服器、點對站VPN或站對站VPN,因此可以直接按下一步。
接著您可以設定將來VM在虛擬網路所要使用的網段及可用的IP位址,設定完畢之後按完成就可以開始建立虛擬網路。
稍後當您看到虛擬網路狀態為已完成,就可以開始繼續接下來的步驟。
建立同質群組
同質群組(Affinity Group)可以用來將多項Microsoft Azure上的服務群組在一起,透過這種方式讓同質群組中的服務盡量彼此靠近,以降低延遲進而提升效能。之前建立虛擬網路時必須跟著建立同質群組,現在已經不需要了,但是在後續會用到的儲存體(Storage)和VM還是可以善用同質群組的功能來提升整個SQL Server高可用性解決方案的效能,因此,我們在這個步驟手動建立同質群組。
請在Microsoft Azure管理入口網站中點選【設定>同質群組>加入】。
輸入同質群組的名稱及選擇要在哪個地區的資料中心建立同質群組,輸入完畢後按完成。
稍後,您應該會在同質群組列表中看到您所建立的同質群組。
建立儲存體
在Microsoft Azure管理入口網站中下方的【新增>資料服務>儲存體>快速建立】輸入儲存體的URL並選擇上一步驟所建立的AlwaysOnAgGroup同質群組,在依照您的實際需求選擇儲存體是否需要複寫到其他地理區域,選擇完畢後按完成。
稍後等儲存體的狀態顯示為線上,就代表儲存體已經建立完成,可以接著建立VM並將它指定到這個位於同質群組中的儲存體。
建立網域控制站的虛擬機器
如果還有印象的話在前面筆者提到,SQL Server AlwaysOn可用性群組是必須建置於WSFC之上,而WSFC又必須搭配Active Directory服務,因此接下來我們要使用VM組件庫Windows Server 2012 R2 Datacenter映像來建立VM。
請在Microsoft Azure管理入口網站點選下方的【新增>計算>虛擬機器>從組件庫】。
在選擇映像的步驟中點選【WINDOWS SERVER>Windows Server 2012 R2 Datacenter】,接著按下一步。
接下來必須設定虛擬機器的組態,基本上版本發行日期保留預設最新版本即可,接著輸入虛擬機器名稱,並選擇適當的層次及虛擬機器大小,最後輸入到時候用來管理VM的使用者名稱及密碼,輸入完畢之後按下一步。
若您尚未建立任何雲端服務,在這個步驟當中直接輸入雲端服務的DNS名稱,輸入時Microsoft Azure會幫您檢查該DNS名稱是否唯一,接著您必須選擇您前面步驟所建立的虛擬網路以及已經放在同質群組中的儲存體帳戶,至於端點的部分則保留預設值即可,預設已經啟用Remote Desktop,等VM建立完成就可以透過RDP來遠端管理,選擇完畢之後按下一步。
接下來您可以選擇是否在VM中安裝代理程式或各項擴充功能,由於本文只是在做LAB,因此保留預設值即可,正式環境再依實際需求進行適當選擇,最後按完成來建立VM。
稍後就可以在雲端服務列表中看到建立VM時,同時建立的雲端服務。
以及在虛擬機器列表中看到虛擬機器已經正在執行。
於上圖的虛擬機器列表點選madc,再按下方的連接來下載.rdp檔案,透過RDP連到VM,連進去之後於VM中新增Active Directory Domain Services。因本文的重點不如何建立網域服務,有關建立網域服務可以參考教學課程:Windows Azure 中的 AlwaysOn 可用性群組 (GUI)或Active Directory 網域服務。
建立SQL Server VM
同樣在Microsoft Azure管理入口網站點選下方的【新增>計算>虛擬機器>從組件庫】。
和前一步驟不同的地方在於,這次選擇使用SQL Server 2014 RTM Enterprise Windows Server 2012 R2的映像,使用這個映像會幫您準備好所有在Azure上運行SQL Server的所有環境,選擇完畢後按下一步。
在虛擬機器組態步驟中,預設是使用標準的虛擬機器層次,請勿將SQL Server VM的層次改為基本,因為基本的層次不支援負載平衡,另外虛擬機器的大小,Microsoft Azure建議使用A3以上的大小,正式環境上您可以依照實際需求來選擇,但LAB環境中使用A1就足夠了,接著輸入虛擬機器名稱及管理VM的使用者名稱和密碼之後,就可以按下一步。
此外,SQL Server VM可以跟網域控制站的虛擬機器放在同一個雲端服務之中,也可以獨立於另一個雲端服務,不管您的選擇如何,總之只要確定三台SQL Server VM放在同一個雲端服務之中,並且使用和網域控制站相同的虛擬網路,以及相同同質群組的儲存體帳戶即可。再者,可以透過建立可用性設定組來讓這些SQL Server VM可以在不同錯誤網域和更新網域中被部署,以降低單點故障所造成的影響。
虛擬機器組態的最後一個步驟,一樣是勾選VM代理程式及其他擴充功能,在此依然保持預設值,只安裝VM代理程式即可。
重複本節的步驟,繼續建立其他兩台SQL Server VM(sql2、sql3),建立完成之後您就可以在虛擬機器列表中看到如下圖的樣子。
參考資料
Azure 虛擬機器中的 SQL Server 高可用性和災害復原
教學課程:Windows Azure 中的 AlwaysOn 可用性群組 (GUI)
Use ReadIntent Routing with Azure AlwaysOn Availability Group Listener