附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用監聽器和負載平衡器在 OCI 上設定 Microsoft SQL Server Always On Availability Group
簡介
在 Oracle Cloud Infrastructure (OCI) 中部署 Microsoft SQL Server,為企業提供強大的平台,以滿足其高可用性和業務連續性目標。Always On 可用性群組功能是 Microsoft SQL Server 高可用性的最有效方法之一。Microsoft SQL Server Always On 可用性群組提供高可用性和災難復原解決方案,可跨多個 SQL Server 執行處理順暢地進行容錯移轉和資料複製。
您可以透過多種方式來設定 Microsoft SQL Server 可用性群組。其中一個方法是將您的 SQL Server 虛擬機器放置在相同虛擬網路內的個別子網路中。若要使用多重子網路架構部署 SQL Server 可用性群組,請參閱使用 Always On 可用性群組在 OCI 上部署高可用性 Microsoft SQL Server 資料庫和在 OCI 上部署適用於 HA 和 DR 的 Microsoft SQL Server Always On Availability Groups 。
依照本教學課程,您將使用單一子網路內的虛擬機器,在 OCI 上部署並設定 SQL Server Always On 可用性群組。此組態包括作為監聽器的專用 OCI 負載平衡器,可實現無縫從屬端連線和高可用性。此方法適用於簡單性和可靠性為關鍵性的環境,提供 SQL Server 資料庫的自動容錯移轉、資料備援及不中斷存取。透過此設定,您的基礎架構能夠以強大的業務連續性來支援關鍵任務工作負載。對於生產部署,請考慮導入增強的監控、記錄、安全性強化及備份策略,以補充此高可用性組態。
如果您想要在單一子網路內部署 Always On 可用性群組,本教學課程提供使用 OCI 虛擬機器和 OCI 負載平衡器設定此群組的逐步指引。本教學課程將逐步介紹如何在 OCI Load Balancer 的單一子網路中使用虛擬機器,在 OCI 上設定雙節點 Always On 可用性群組。
架構
下圖顯示解決方案的高階架構範例。
此教學課程的排除項目
-
在 OCI 上設定 Active Directory 網域服務。如需詳細資訊,請參閱 Creating Active Directory Domain Services in Oracle Cloud Infrastructure 。
-
在 OCI 上安裝和設定 SQL Server。如需詳細資訊,請參閱 Oracle Cloud Infrastructure 上的 Microsoft SQL Server 。
-
Windows 容錯移轉叢集組態。如需詳細資訊,請參閱建立叢集。
-
檔案共用見證的組態。如需詳細資訊,請參閱新增叢集法定的檔案共用。
目標
- 使用單一子網路中的虛擬機器,在 OCI 上部署並設定 SQL Server Always On 可用性群組。它涵蓋 SQL Server 2022 Always On 可用性群組和 OCI 負載平衡器的設定,可利用監聽器啟用高可用性和自動容錯移轉,實現順暢的用戶端連線。
必要條件
-
建議您基本瞭解 SQL Server Always On 可用性群組。
-
使用定義的區間存取 OCI 租用戶,以代管所有相關資源。
-
設定的虛擬雲端網路 (VCN) 至少要有一個專用子網路。
-
本教學課程至少需要 6 個私有 IP 位址。
- 1 代表域控制器
- 2 表示兩個 SQL Server 節點
- 1 代表 Windows Server 容錯移轉叢集 IP
- 1 表示 SQL Server Always On 可用性群組監聽器 IP
- 1 表示 OCI 負載平衡器
由於不支援 OCI 浮動 IP 位址,因此 SQL 可用性群組 (AG) 監聽器和 OCI 負載平衡器的 IP 位址將會不同。
-
為實行 SQL Server Always On 可用性群組所設定的安全清單規則 - 開啟
1433
和5022
連接埠。 -
三個 Windows Server 2022 OCI 虛擬機器執行處理。
- 一個 VM 設定為 Active Directory 網域控制器。
- 已安裝兩個安裝 SQL Server 2022 和 SQL Server Management Studio (SSMS) 的 VM。
-
需要檔案共用見證才能支援法定組態。
- 為了簡化此自學課程,請使用網域控制器上的共用資料夾來代管檔案共用見證。
- 對於生產環境,請考慮導入更健全的法定模型。
-
必須在兩個 SQL Server VM 之間設定「Windows 容錯移轉叢集」。
作業 1:設定 SQL Server 永遠位於可用性群組
作業 1.1:在 SQL Server 節點 (DevSQL1
和 DevSQL2
) 上啟用可用性群組
-
在
DevSQL1
節點中,移至啟動,搜尋並開啟 SQL Server 2022 Configuration Manager 。 -
選取 SQL 伺服器服務,在 SQL 伺服器 (MSSQLSERVER) 服務上按一下滑鼠右鍵,然後選取特性。如果您使用具名執行處理,將會是 SQL Server (
INSTANCENAME
)。 -
按一下一律使用狀態群組,然後選取啟用一律使用狀態群組。
-
選取「套用」,並按一下「確定」。
-
重新啟動 SQL Server 服務。
-
在另一個節點 (
DevSQL2
) 上重複步驟 1 到 5。
作業 1.2:在第一個 SQL Server 節點 (DevSQL1
) 上建立資料庫並執行完整備份
-
在
DevSQL1
節點中,移至啟動,搜尋 SSMS ,然後開啟 SQL Server Management Studio (SSMS) 。 -
連線至主要 SQL Server。本教學課程包含
DevSQL1
。 -
在物件總管底下,在資料庫上按一下滑鼠右鍵,然後按一下新資料庫。
-
在一般下,輸入資料庫名稱,然後在選項下,選取完整作為復原模型。
-
然後按一下確定。
-
若要進行完整備份,請在資料庫 "AdventureWorks2022" 上按一下滑鼠右鍵,然後按工作,然後按一下備份。
-
在一般底下,確定備份類型為完整,在目的地底下,選取磁碟作為備份至,按一下新增,然後輸入完整備份的位置和檔案名稱。
-
然後按一下確定。
您也可以使用 Transact-SQL 進行備份。舉例而言:
Transact-SQL:
BACKUP DATABASE [AdventureWorks2022] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\AdventuresWork2022.bak' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2022-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
作業 1.3:建立可用性群組
-
開啟 SQL Server Management Studio,連線至
DevSQL1
。在物件總管底下,用滑鼠右鍵按一下永遠處於高可用性,然後按一下新建可用性群組精靈。這會開啟新可用性群組頁面。按下一步。
-
在指定選項底下,將使用狀態群組名稱輸入為
DevAG
,將叢集類型輸入為 Windows 伺服器容錯移轉叢集,然後按一下下一步。 -
在選取資料庫中,選取您要新增至此可用性群組的資料庫。在狀態底下,您應該會看到符合先決條件,以便能夠將資料庫新增至可用性群組。如果有任何問題,將會告訴您原因,我們需要採取必要動作以符合先決條件。例如,完整資料庫備份可能擱置中。
-
在指定複本中,新增複本。按一下複本,確定兩個節點都新增在使用狀態複本底下,然後將使用狀態模式變更為同步確認。您可以依據您的需求使用不同的使用狀態模式。
-
按一下端點,確定兩個端點使用的連接埠相同,而且這些連接埠會在防火牆和安全清單中開啟。預設為連接埠
5022
。注意:在此教學課程中,會將所有其他選項保持為預設值。截至目前為止,請勿建立監聽器。
-
接下來,我們需要選取資料同步。選取自動植入,然後按下一步。
-
在驗證中,確保驗證成功並修正任何失敗。您可以忽略檢查監聽器組態警告,因為稍後將會建立監聽器。按一下下一步,然後在可用性群組建立之後,選取關閉以關閉精靈。
-
在物件總管中,展開永遠處於高可用性,然後展開可用性群組。您現在應該會在此容器中看到新的可用性群組。在可用性群組上按一下滑鼠右鍵,然後選取顯示儀表板。
-
開啟容錯移轉叢集管理程式,移至啟動,搜尋並開啟容錯移轉叢集管理程式。連線至您的叢集,然後按一下角色。
我們使用的可用性群組名稱是叢集上的角色,而且可用性群組沒有從屬端連線的 IP 位址,因為我們未設定監聽器。我們將在建立 OCI 負載平衡器之後設定監聽器。
在此階段,可用性群組已順利設定兩個 SQL Server 複本,允許在執行處理之間進行容錯移轉。不過,尚無法使用監聽器的從屬端連線,因為尚未設定監聽器。
作業 2:建立 OCI 負載平衡器並設定可用性群組監聽器
在 OCI 上設定 SQL Server Always On 可用性群組監聽器的方法有數種,包括使用多重子網路設定或為每個虛擬機器指派次要 IP 位址。雖然這些方法有效,但通常需要其他配置或自訂程序檔,才能在容錯移轉事件期間管理 IP 移動。
如果您想要在單一子網路環境中部署 Always On 可用性群組,並且希望避免自訂命令檔,使用專用 OCI 負載平衡器將會提供簡化且可靠的解決方案。本節將引導您設定 OCI 負載平衡器作為 Always On 可用性群組的監聽器,以便在單一子網路內進行無縫連線和容錯移轉處理。
作業 2.1:保留 SQL Server Always On Availability Group 監聽器的靜態專用 IP 位址
在 OCI 中保留一個靜態專用 IP,之後會在「Windows 容錯移轉叢集」中指定給 SQL Server Always On 可用性群組監聽器 IP。我們正在保留此 IP 位址,以確保 OCI 上沒有指定其他服務或 VM 的此 IP 位址。從屬端將不會使用此 IP 位址進行連線,但這將有助於容錯移轉可用性群組,並確保 OCI 負載平衡器正在將連線遞送至正確的主要伺服器。
-
移至 OCI 主控台,瀏覽至網路並按一下虛擬雲端網路。
-
請前往您用於 SQL Server 節點的 VCN。
-
按一下子網路,移至目前用於 SQL Server 節點的子網路。
-
在資源底下,按一下 IPv4 位址。
-
按一下新增保留的 IPv4 位址。
-
輸入要指定給 SQL Server Always On 可用性群組監聽器的 IP 位址。這可以是任何未使用的 IP 位址,請注意,從屬端將無法從遠端使用此 IP 位址進行連線。這是將指派給「Windows 容錯移轉叢集」之 SQL Server Always On 可用性群組監聽器的虛擬 IP。本教學課程使用
10.0.0.148
。
作業 2.2:建立專用 OCI 負載平衡器
注意:此處未提及的欄位會保留為預設值。
-
移至 OCI 主控台,瀏覽至網路和負載平衡器。
-
按一下負載平衡器並建立負載平衡器。
-
輸入負載平衡器名稱,然後選取專用作為可見性類型。
-
在選擇網路中,選取將用於此負載平衡器的 VCN 和子網路區間名稱。使用與 SQL Server 節點相同的 VCN 和子網路。
-
在管理中,選取將在其中建立此負載平衡器的區間。請確定啟用避免在負載平衡器、監聽器及後端仍在作用中時將其刪除,以避免服務意外中斷,然後按一下下一步。
-
在後端中,指定負載平衡原則作為加權循環。
-
在選取後端伺服器中,同時新增 SQL Server 節點;
DevSQL1
和DevSQL2
。將連接埠號碼變更為1433
;如果您使用的是 SQL Server 的不同連接埠,請輸入個別的連接埠號碼。 -
在指定狀況檢查原則中,使用連接埠號碼為
59999
的 TCP 協定。您可以使用任何未使用的連接埠。 -
將所有其他設定值保持為預設,我們使用所選 VCN 的安全清單。按下一步。
-
在設定監聽器中,將監聽器名稱、 TCP 流量和連接埠號碼輸入為
1433
。將所有其他設定保留為預設值。 -
按一下下一步,複查組態並按一下送出。
-
佈建 OCI 負載平衡器之後,您可以前往網路、負載平衡器並按一下負載平衡器,記下 OCI 負載平衡器的專用 IP 位址。
在本教學課程中,負載平衡器的 IP 位址是 10.0.0.149
。這是從屬端用來連線至 SQL Server Always On 可用性群組監聽器的 IP 位址。
作業 2.3:設定 SQL Server Always On Availability Group 監聽器
-
遠端桌面協定 (RDP) 至代管主要複本的 VM 中。本教學課程包含
DevSQL1
。若要確認此情況,您可以開啟 Windows 容錯移轉叢集管理程式、角色以及 SQL 可用性群組角色,查看擁有者節點資料欄以確認主要複本是哪一個節點。 -
移至網路,記下網路名稱為
$ClusterNetworkName
變數。 -
新增從屬端存取點。從屬端存取點是應用程式用來連線至可用性群組中資料庫的網路名稱。
-
在容錯移轉叢集管理員中,展開叢集名稱,然後選取角色。
-
按一下角色,在可用性群組名稱上按一下滑鼠右鍵,選取新增資源,然後按一下從屬端存取點。
-
在名稱中,建立此新監聽器的名稱。新監聽器的名稱是應用程式用來連線至 SQL Server 可用性群組中資料庫的網路名稱。
-
按下一步兩次,然後選取完成。目前請勿讓監聽器或資源上線。
-
-
讓可用性群組成為離線狀態角色。在容錯移轉叢集管理員中,按一下角色,在角色上按一下滑鼠右鍵,然後選取停止角色。
-
設定可用性群組的 IP 資源。
-
按一下資源,然後展開您建立的從屬端存取點。用戶端存取點已離線。
-
在 IP 資源上按一下滑鼠右鍵,然後選取特性。將 IP 位址的名稱記為
$IPResourceName
變數。在本教學課程中,名稱為IP Address 10.0.0.0
。 -
按一下 IP 位址,然後選取靜態 IP 位址。將 IP 位址設定為我們在 Task 2.1 中保留的 IP 位址。本教學課程包含
10.0.0.148
。
-
-
讓 SQL Server 可用性群組與從屬端存取點相依。
-
在容錯移轉叢集管理程式中,按一下角色,然後選取您的可用性群組。
-
按一下資源,在其他資源底下,用滑鼠右鍵按一下可用性群組資源,然後按一下特性。
-
按一下相依性,然後新增從屬端存取點 (監聽器) 的名稱。
-
然後按一下確定。
-
-
將用戶端存取點與 IP 位址相依。
-
在容錯移轉叢集管理程式中,按一下角色,然後選取您的可用性群組。
-
按一下資源,在伺服器名稱下的從屬端存取點上按一下滑鼠右鍵,然後按一下特性。
-
按一下相依性,然後確認 IP 位址是否為相依性。如果不符,請設定對 IP 位址的相依性。如果列出多個資源,請確認 IP 位址有 OR (而非 AND) 的相依性,然後按一下確定。
-
-
在 Windows PowerShell 中設定叢集參數。
-
將下列 PowerShell 命令檔複製到其中一個 SQL Server 執行處理。更新環境的變數。
-
選取網路,在容錯移轉叢集管理程式中尋找
$ClusterNetworkName
名稱,在網路上按一下滑鼠右鍵,然後選取特性。$ClusterNetworkName
位於一般頁籤中的名稱底下。 -
$IPResourceName
是指定給容錯移轉叢集管理程式中 IP 位址資源的名稱。在容錯移轉叢集管理程式中,選取角色,選取 SQL Server 可用性群組或 FCI 名稱,選取伺服器名稱底下的資源,在 IP 位址資源上按一下滑鼠右鍵,然後按一下特性。正確的值位於一般頁籤中的名稱底下。 -
$ListenerILBIP
是您在可用性群組監聽器 Azure 負載平衡器中建立的 IP 位址。在與 SQL Server AG/FCI 監聽器資源名稱相同的特性頁面中,尋找容錯移轉叢集管理程式中的$ListenerILBIP
。 -
$ListenerProbePort
是您在 Azure 負載平衡器上為可用性群組監聽器設定的連接埠,例如59999
。所有未使用的 TCP 連接埠均有效。
$ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name. $IPResourceName = "<IPResourceName>" # The IP address resource name. $ListenerILBIP = "<n.n.n.n>" # The IP address that we reserved in Task 2.1. This is the static IP address for the SQL Server AG Listener that you reserved in OCI Console. [int]$ListenerProbePort = <nnnnn> Import-Module FailoverClusters Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
本教學課程使用下列內容:
$ClusterNetworkName = "Cluster Network 1" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name. $IPResourceName = "IP Address 10.0.0.0" # The IP address resource name. $ListenerILBIP = "10.0.0.148" # The IP address of the internal load balancer. This is the static IP address for the load balancer that you configured in the Azure portal. [int]$ListenerProbePort = 59999 Import-Module FailoverClusters Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
-
-
在其中一個叢集節點上執行 PowerShell 命令檔來設定叢集參數。
-
-
若新增排除項目,其他系統處理作業將無法動態指定給相同的連接埠。對於此情況,請在所有叢集節點上設定下列排除項目。
netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent
-
線上顯示可用性群組的叢集角色。在容錯移轉叢集管理員中,按一下角色,在角色上按一下滑鼠右鍵,然後選取開始角色。
-
在 SQL Server Management Studio 中,設定監聽器連接埠。
-
開啟 SQL Server Management Studio 並連線至主要複本。
-
移至一律處於高可用性、使用狀態群組,然後按一下使用狀態群組監聽器。
-
在您在「工作 2.2」中建立的監聽器名稱上按一下滑鼠右鍵,然後按一下特性。
-
在連接埠中,指定可用性群組監聽器的連接埠號碼,然後按一下確定。預設值為
1433
。
-
-
在您的 DNS 伺服器中,請確定專用 OCI 負載平衡器 IP 位址的主機 A 記錄指向 SQL 可用性群組監聽器名稱。請確定 SQL 監聽器電腦物件無法更新 DNS 記錄。這是為了確保在容錯移轉之後,DNS 項目不會更新為「Windows 容錯移轉叢集」中使用的 IP 位址。
在本教學課程中,我們以 IP 位址
10.0.0.149
(而非10.0.0.148
) 更新 SQL 可用性群組監聽器的主機 A 記錄,並更新安全性以確保SQLAGL$
電腦物件無法更新此記錄,而且只能讀取該記錄。
可能有更多實現此目標的方法,您可以導入自己的解決方案。目標是要有具備 OCI 負載平衡器 IP 位址的 SQL Server 可用性群組監聽器 DNS 記錄。
現在,您可以從 SSMS 或任何其他從屬端工具測試與 SQL Server 可用性群組監聽器的連線。
相關連結
-
在 OCI 上部署適用於 HA 和 DR 的 Microsoft SQL Server Always On Availability Groups
-
在 Oracle Cloud Infrastructure 中建立 Active Directory Domain Services
認可
- 作者 - Deviprasad Moolya (主要雲端架構師)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Configure Microsoft SQL Server Always On Availability Group on OCI with Listener and Load Balancer
G33424-01
Copyright ©2025, Oracle and/or its affiliates.