教學課程:在多個子網路 (Azure VM 上的 SQL Server) 中設定可用性群組

適用於:Azure VM 上的 SQL Server

提示

有許多方法可部署可用性群組。 在相同 Azure 虛擬網路內的多個子網路中建立 SQL Server 虛擬機器 (VM),您的 Always On 可用性群組就可以簡化部署,而且不再需要 Azure Load Balancer 或分散式網路名稱 (DNN)。 如果您已在單一子網路中建立可用性群組,您可以將它移轉至多子網路環境

本教學課程會說明如何為 Azure 虛擬機器 (VM) 上的 SQL Server,在多個子網路中建立 Always On 可用性群組。 完整的教學課程會建立一個 Windows Server 容錯移轉叢集,以及具有兩個 SQL Server 複本和一個接聽程式的可用性群組。

預估時間:假設您已完成必要條件,完成本教學課程大約需要 30 分鐘。

必要條件

下表列出開始本教學課程之前,您必須完成的必要條件

需求 描述
兩個 SQL Server 執行個體 – VM 分別位於兩個不同的 Azure 可用性區域或同一個可用性設定組
– 位於 Azure 虛擬網路內的不同子網路中
– 為每個 VM 指派兩個次要 IP
– 在單一網域中
SQL Server 服務帳戶 SQL Server 服務在各部機器使用的網域帳戶
開放的防火牆連接埠 – SQL Server:1433 (用於預設執行個體)
– 資料庫鏡像端點:5022 或任何可用的連接埠。
網域安裝帳戶 – 每部 SQL Server 上的本機系統管理員
- 每個 SQL Server 執行個體之 SQL Server sysadmin 固定伺服器角色的成員

本教學課程假設您對 SQL Server Always On 可用性群組已有基本的了解。

建立叢集

Always On 可用性群組以 Windows Server 容錯移轉叢集基礎結構為基礎,因此在部署可用性群組之前,您必須先設定 Windows Server 容錯移轉叢集,包括新增功能、建立叢集,以及設定叢集的 IP 位址。

新增容錯移轉叢集功能

將容錯移轉叢集功能新增至兩個 SQL Server VM。 若要這樣做,請依照下列步驟執行:

  1. 使用有權在 AD 中建立物件的網域帳戶 (像是在必要條件文章中建立的 CORP\Install 網域帳戶),透過遠端桌面通訊協定 (RDP) 連線至 SQL Server 虛擬機器。

  2. 開啟 [伺服器管理員儀表板] 。

  3. 選取儀表板上的 [新增角色與功能] 連結。

    Select the Add roles and features link on the dashboard.

  4. 連續選取 [下一步],直到到達 [伺服器功能] 區段。

  5. 在 [功能] 中,選取 [容錯移轉叢集]。

  6. 新增任何其他必要的功能。

  7. 選取 [安裝] 以新增功能。

  8. 在另一個 SQL Server VM 上重複上述步驟。

建立叢集

將叢集功能新增至每部 SQL Server VM 之後,您就可以開始建立 Windows Server 容錯移轉叢集。

若要建立叢集,請遵循以下步驟:

  1. 利用有權在 AD 中建立物件的網域帳戶 (像是在必要條件文章中建立的 CORP\Install 網域帳戶),使用遠端桌面通訊協定 (RDP) 連線至第一部 SQL Server 虛擬機器 (如 SQL-VM-1)。

  2. 在 [伺服器管理員] 儀表板中,選取 [工具],然後選取 [容錯移轉叢集管理員]。

  3. 在左側窗格中,於 [容錯移轉叢集管理員] 上按一下滑鼠右鍵,然後選取 [建立叢集]。

    Create Cluster

  4. 在 [建立叢集精靈] 中,以下表中的設定逐步完成每個頁面以建立兩個節點叢集:

    頁面 設定
    開始之前 使用預設值。
    選取伺服器 在 [輸入伺服器名稱] 中,輸入第一部 SQL Server 名稱 (像是 SQL-VM-1),然後選取 [新增]。
    在 [輸入伺服器名稱] 中,輸入第二部 SQL Server 名稱 (像是 SQL-VM-2),然後選取 [新增]。
    驗證警告 選取 [是。當我按一下 [下一步] 時,執行設定驗證測試,然後返回建立叢集的流程]。
    開始之前 選取 [下一步]。
    (位於精靈的 [測試選項] 頁面) 選擇 [僅執行我選取的測試]。
    測試選取範圍 取消選取儲存體。 確定已選取 [詳細目錄]、[網路] 和 [系統設定]。
    確認 選取 [下一步]。
    等待驗證完成。
    選取 [檢視報表] 以檢閱報表內容。 您可以放心忽略只能透過一個網路介面連線到 VM 的警告。 Azure 基礎結構具備實體的備援設施,因此不需要新增額外的網路介面。
    選取 [完成]。
    用於管理叢集的存取點 在 [叢集名稱] 中輸入叢集名稱,例如 SQLAGCluster1
    確認 取消選取 [新增適合的儲存裝置到叢集],然後選取 [下一步]。
    總結 選取 [完成]。

    警告

    如果您未取消選取 [新增適合的儲存空間到叢集],Windows 就會在叢集過程中斷與虛擬磁碟的連結。 這樣一來,這些磁碟就不會顯示在磁碟管理員或總管中,直到您使用 PowerShell 將儲存體從叢集移除並重新連接為止。

設定容錯移轉叢集的 IP 位址

一般來說,指派給叢集的 IP 位址會和指派給 VM 的 IP 位址相同,這表示叢集 IP 位址在 Azure 中會處於失敗狀態,因而無法連線。 變更叢集的 IP 位址,讓該 IP 資源連線。

在執行必要條件期間,您應該已指派次要 IP 位址給每部 SQL Server VM,如下列範例資料表所示 (確切的 IP 位址可能不同):

虛擬機器名稱 子網路名稱 子網路位址範圍 次要 IP 名稱 次要 IP 位址
SQL-VM-1 SQL-subnet-1 10.38.1.0/24 windows-cluster-ip 10.38.1.10
SQL-VM-2 SQL-subnet-2 10.38.2.0/24 windows-cluster-ip 10.38.2.10

將這些 IP 位址指派成每個相關子網路的叢集 IP 位址。

注意

在 Windows Server 2019 中,叢集會建立分散式伺服器名稱,而不是叢集網路名稱,且叢集名稱物件 (CNO) 會自動向叢集中所有節點的 IP 位址的,因此不需要專屬的 Windows 叢集 IP 位址。 如果您使用 Windows Server 2019,可以略過本章節以及有關叢集核心資源的其他任何步驟,或使用 PowerShell 建立虛擬網路名稱 (VNN) 型叢集。 如需詳細資訊,請參閱部落格文章容錯移轉叢集:叢集網路物件 (英文)。

若要變更叢集 IP 位址,請遵循下列步驟:

  1. 在 [容錯移轉叢集管理員] 中,向下捲動到 [叢集核心資源] 區段,然後展開叢集詳細資料。 您應該會看到每個子網路的名稱和兩個 IP 位址資源處於失敗的狀態。

  2. 以滑鼠右鍵按一下第一個失敗的 [IP 位址] 資源,然後選取 [內容]。

    Cluster Properties

  3. 選取 [靜態 IP 位址],並將 IP 位址更新為您在子網路中指派給第一部 SQL Server VM (例如 SQL-VM-1) 的專屬 Windows 叢集 IP 位址。 選取 [確定]。

     Select **Static IP Address** and update the IP address to the dedicated windows cluster IP address in the same subnet you assigned to the SQL Server VM in the prerequisites article

  4. 對第二個失敗的IP 位址資源重複相同的步驟,並使用第二個 SQL Server VM (例如 SQL-VM-2) 子網路專屬的 Windows 叢集 IP 位址

    Repeat the steps for the second failed **IP Address** resource, using the dedicated windows cluster IP address for the subnet of the other SQL Server VM.

  5. 在 [叢集核心資源] 區段中,於叢集名稱上按一下滑鼠右鍵,然後選取 [上線]。 等候名稱與其中一個 IP 位址資源連線。

由於 SQL Server VM 位於不同的子網路中,因此叢集中兩個專屬的 Windows 叢集 IP 位址將會有 OR 的相依性。 待叢集名稱資源上線後,將使用新的 Active Directory (AD) 電腦帳戶更新網域控制站 (DC) 伺服器。 如果叢集核心資源移動了節點,則其中一個 IP 位址會離線,而另一個 IP 位址就會連線,並會以新的 IP 位址關聯更新 DC 伺服器。

提示

在實際生產環境中的 Azure VM 上執行叢集時,將叢集設定變更成較為寬鬆的監視狀態,可以改善雲端環境中叢集的穩定性與可靠性。 若要深入了解,請參閱 SQL Server VM - HADR 設定的最佳做法

設定仲裁

在雙節點的叢集上,需要仲裁裝置才能提供叢集的可靠性和穩定性。 在 Azure VM 上,建議的仲裁設定為雲端見證,但使用者仍有其他可用的選項。 本節中的步驟會設定用於仲裁的雲端見證。 識別儲存體帳戶的存取金鑰,然後設定雲端見證。

取得儲存體帳戶的存取金鑰

當您建立 Microsoft Azure 儲存體帳戶時,會與自動產生的兩個存取金鑰 (主要存取金鑰和次要存取金鑰) 建立關聯。 在第一次建立雲端見證時,請使用主要存取金鑰,但後續用於雲端見證的金鑰就沒有任何限制。

使用 Azure 入口網站檢視及複製在必要條件文章中建立的 Azure 儲存體帳戶儲存體存取金鑰。

若要檢視及複製儲存體存取金鑰,請遵循下列步驟:

  1. 前往 Azure 入口網站中的資源群組,然後選取您建立的儲存體帳戶。

  2. 選取 [安全性 + 網路] 下方的 [存取金鑰]。

  3. 選取 [顯示金鑰],然後複製金鑰。

    Select **Show Keys** and copy the key

設定雲端見證

複製存取金鑰後,請建立用於叢集仲裁的雲端見證。

若要建立雲端見證,請遵循下列步驟:

  1. 使用遠端桌面連線至第一部 SQL Server VM SQL-VM-1

  2. 在系統管理員模式下開啟 Windows PowerShell

  3. 執行 PowerShell 指令碼,將連線的 TLS (傳輸層安全性) 值設為 1.2:

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    
  4. 使用 PowerShell 設定雲端見證。 將儲存體帳戶名稱及存取金鑰的值,取代成您的具體資訊:

    Set-ClusterQuorum -CloudWitness -AccountName "Storage_Account_Name" -AccessKey "Storage_Account_Access_Key"
    
  5. 以下的範例輸出即代表成功:

    Your output should display the Cloud Witness as this example

叢集核心資源的雲端見證即設定完畢。

啟用 AG 功能

依據預設,會停用 Always On 可用性群組功能。 使用 SQL Server 組態管理員即可在這兩個 SQL Server 執行個體上啟用此功能。

若要啟用可用性群組功能,請遵循以下步驟:

  1. 使用屬於系統管理員固定伺服器角色成員的網域帳戶 (例如在必要條件文件中建立的 CORP\Install 網域帳戶),啟動第一部 SQL Server VM (例如 SQL-VM-1) 的 RDP 檔案

  2. 從其中一個 SQL Server VM 的 [開始] 畫面中啟動 SQL Server 組態管理員

  3. 在瀏覽器樹狀目錄中,反白選取 [SQL Server 服務],以滑鼠右鍵按一下 [SQL Server (MSSQLSERVER)] 服務,再選取 [內容]。

  4. 選取 [Always On 高可用性] 索引標籤,然後勾選 [啟用 Always On 可用性群組] 方塊:

    Enable Always On availability groups

  5. 選取 [套用]。 在快顯對話方塊中選取 [確定]。

  6. 重新啟動 SQL Server 服務。

  7. 對其他的 SQL Server 執行個體重複這些步驟。

啟用 FILESTREAM 功能

如果您未將 FILESTREAM 用於可用性群組中的資料庫,請略過此步驟並移至下一個步驟 – 建立資料庫

如果您計畫將資料庫新增至使用 FILESTREAM 的可用性群組,則需要啟用 FILESTREAM,因為此功能預設為停用。 使用 SQL Server 組態管理員即可在這兩個 SQL Server 執行個體上啟用此功能。

若要啟用 FILESTREAM 功能,請執行下列步驟:

  1. 使用屬於系統管理員固定伺服器角色成員的網域帳戶 (例如在必要條件文件中建立的 CORP\Install 網域帳戶),啟動第一部 SQL Server VM (例如 SQL-VM-1) 的 RDP 檔案

  2. 從其中一個 SQL Server VM 的 [開始] 畫面中啟動 SQL Server 組態管理員

  3. 在瀏覽器樹狀目錄中,反白選取 [SQL Server 服務],以滑鼠右鍵按一下 [SQL Server (MSSQLSERVER)] 服務,再選取 [內容]。

  4. 選取 FILESTREAM 索引標籤,然後選取 [對 Transact-SQL 存取啟用 FILESTREAM] 方塊:

  5. 選取 [套用]。 在快顯對話方塊中選取 [確定]。

  6. 在 SQL Server Management Studio 中,按一下 [新增查詢] 以顯示 [查詢編輯器]。

  7. 在 [查詢編輯器] 中,輸入下列 Transact-SQL 程式碼:

    EXEC sp_configure filestream_access_level, 2  
    RECONFIGURE
    
  8. 按一下 [執行]

  9. 重新啟動 SQL Server 服務。

  10. 對其他的 SQL Server 執行個體重複這些步驟。

建立資料庫

針對您的資料庫,您可以使用本節中的步驟來建立新的資料庫,也可以還原 AdventureWorks 資料庫。 您也必須要備份資料庫,才能初始化記錄鏈結。 尚未備份的資料庫並不符合可用性群組的必要條件。

若要建立資料庫,請遵循下列步驟:

  1. 使用屬於系統管理員固定伺服器角色成員的網域帳戶 (例如在必要條件文件中建立的 CORP\Install 網域帳戶),啟動第一個 SQL Server VM (例如 SQL-VM-1) 的 RDP 檔案。
  2. 啟動 SQL Server Management Studio,然後連線至 SQL Server 執行個體。
  3. 在 [物件總管] 中,於 [資料庫] 上按一下滑鼠右鍵,然後選取 [新增資料庫]。
  4. 在 [資料庫名稱] 中,輸入 MyDB1
  5. 選取 [選項] 頁面,然後選取 [復原模式] 下拉式清單中的 [完整] (當預設值不是 [完整] 時)。 資料庫必須處於完整復原模式,才符合參與可用性群組的必要條件。
  6. 選取 [確定] 以關閉 [新增資料庫] 頁面,隨即建立新資料庫。

若要備份資料庫,請遵循下列步驟:

  1. 物件總管中,以滑鼠右鍵按一下資料庫,反白選取 [工作],然後選取 [備份...]。

  2. 選取 [確定],以指定要將資料庫完整備份到預設的備份位置中。

建立檔案共用

建立 SQL Server VM 及其服務帳戶都可以存取的備份檔案共用。

若要建立備份檔案共用,請遵循下列步驟:

  1. 伺服器管理員中的第一部 SQL Server VM 上,選取 [工具]。 開啟 [電腦管理]。

  2. 選取 [共用資料夾]。

  3. 以滑鼠右鍵按一下 [共用],然後選取 [新增共用...],然後使用 [建立共用資料夾精靈] 建立共用。

    Select New Share

  4. 針對 [資料夾路徑] 選取 [瀏覽],然後找出或建立資料庫備份共用資料夾的路徑,例如 C:\Backup。 選取 [下一步] 。

  5. 在 [名稱、描述和設定] 中,確認共用名稱和路徑。 選取 [下一步] 。

  6. 在 [共用資料夾權限] 上,設定 [自訂權限]。 選取自訂

  7. 在 [自訂權限] 上,選取 [新增]

  8. 選取 [完全控制],以將共用的完整存取權授與 SQL Server 服務帳戶 (Corp\SQLSvc):

    Make sure that the SQL Server service accounts for both servers have full control.

  9. 選取 [確定]。

  10. 在 [共用資料夾權限] 中,選取 [完成]。 再次選取 [完成]

建立可用性群組

備份資料庫之後,就可以開始建立可用性群組,該群組會自動從主要 SQL Server 複本建立完整備份和交易記錄備份,並會使用 NORECOVERY 選項在次要 SQL Server 執行個體中還原。

若要建立可用性群組,請遵循下列步驟。

  1. 在 SQL Server Management Studio (SSMS) 的物件總管中,在第一部 SQL Server VM (例如 SQL-VM-1) 上,以滑鼠按右鍵按一下 [Always On 高可用性],然後選取 [新增可用性群組精靈]。

    Launch New availability group Wizard

  2. 在 [簡介] 頁面上,選取 [下一步] 。 在 [指定可用性群組名稱] 頁面的 [可用性群組名稱] 中,輸入可用性群組的名稱,例如 AG1。 選取 [下一步] 。

    New availability group Wizard, Specify availability group Name

  3. 在 [選取資料庫] 頁面中,選取您的資料庫,然後選取 [下一步]。 如果您的資料庫不符合必要條件,請確定其處於完整復原模式,然後建立備份

    New availability group Wizard, Select Databases

  4. 在 [指定複本] 頁面中,選取 [新增複本]。

    New availability group Wizard, Specify Replicas

  5. 隨即跳出 [連接至伺服器] 對話方塊。 在 [伺服器名稱] 中輸入第二部伺服器的名稱,例如 SQL-VM-2。 選取 [連接]。

  6. 在 [指定複本] 頁面中,選取 [自動容錯移轉] 核取方塊,然後在下拉式清單中選擇可用性模式 [同步認可]:

     On the **Specify Replicas** page, check the boxes for Automatic Failover and choose Synchronous commit for the availability mode

  7. 選取 [端點] 索引標籤,確認資料庫鏡像端點所使用的連接埠即為您在防火牆中開啟的連接埠:

    New availability group Wizard, Select Initial Data Synchronization

  8. 選取 [接聽程式] 索引標籤,然後選擇 [建立可用性群組接聽程式] 並在接聽程式使用下列值:

    欄位
    接聽程式 DNS 名稱: AG1-Listener
    連接埠 使用預設的 SQL Server 連接埠。 1433
    網路模式: 靜態 IP
  9. 選取 [新增],為兩個 SQL Server VM 提供接聽程式的次要專屬 IP 位址。

    下表顯示了必要條件文件中為接聽程式所建立的範例 IP 位址 (但您的專屬 IP 位址可能不同):

    虛擬機器名稱 子網路名稱 子網路位址範圍 次要 IP 名稱 次要 IP 位址
    SQL-VM-1 SQL-subnet-1 10.38.1.0/24 availability-group-listener 10.38.1.11
    SQL-VM-2 SQL-subnet-2 10.38.2.0/24 availability-group-listener 10.38.2.11
  10. 在 [新增 IP 位址] 對話方塊的下拉式清單中選擇第一個子網路 (例如 10.38.1.0/24),然後提供次要專屬接聽程式的 IPv4 位址,例如 10.38.1.11。 選取 [確定]。

    Choose the first subnet (such as 10.38.1.0/24) from the drop-down on the Add IP address dialog box and, and then provide the secondary dedicated listener IPv4 address, such as 10.38.1.11

  11. 再次重複這個步驟,但選擇下拉式清單中的其他子網路 (例如 10.38.2.0/24),然後為另一個 SQL Server VM 提供次要專屬接聽程式的 IPv4 位址,例如 10.38.2.11。 選取 [確定]。

    Screenshot of Add IP Address for Listener.

  12. 檢閱 [接聽程式] 頁面的值之後,請選取 [下一步]:

    After reviewing the values on the Listener page, select Next:

  13. 在 [選取初始資料同步] 頁面中,選擇 [完整資料庫和記錄備份],並提供您先前建立的網路共用位置,例如 \\SQL-VM-1\Backup

    Choose full data synchronization.

    注意

    完整同步處理會完整備份第一個 SQL Server 執行個體上的資料庫,然後將它還原到第二個執行個體。 就大型資料庫而言,不建議進行完整同步處理,因為可能費時很久。 您可以手動備份並使用 NO RECOVERY 來還原備份,以縮短此時間。 如果在設定可用性群組之前已經使用 NO RECOVERY 在第二部 SQL Server 上還原資料庫,請選擇 [僅聯結]。 如果您想要在設定可用性群組之後進行備份,請選擇 [略過初始資料同步處理]。

  14. 在 [驗證] 頁面上,確認已通過所有的驗證檢查,然後選擇 [下一步]:

    New availability group Wizard, Validation.

  15. 在 [摘要] 頁面上,選取 [完成],並等候精靈為您設定新的可用性群組。 選擇 [進度] 頁面中的 [詳細資料] 以檢視詳細進度。 當 [結果] 頁面中顯示精靈已成功完成時,請檢查摘要以驗證可用性群組及接聽程式都已成功建立。

    New availability group Wizard, Results.

  16. 選取 [關閉] 結束此精靈。

檢查可用性群組

您可以使用 SQL Server Management Studio容錯移轉叢集管理員檢查可用性群組的健康情況。

若要檢查可用性群組的狀態,請遵循下列步驟:

  1. 物件總管中,展開 [AlwaysOn 高可用性],再展開 [可用性群組]。 新的可用性群組應會顯示在此容器中。 以滑鼠右鍵按一下可用性群組,然後選取 [顯示儀表板]。

    Show availability group Dashboard

    可用性群組儀表板會顯示覆本、每個複本的容錯移轉模式,以及同步處理的狀態,如以下範例所示:

    availability group Dashboard

  2. 開啟容錯移轉叢集管理員,選取您的叢集,然後選擇 [角色],以檢視您在叢集中建立的可用性群組角色。 選擇角色 [AG1],然後選取 [資源] 索引標籤,以檢視接聽程式和相連的 IP 位址,如以下範例所示:

    availability group in Failover Cluster Manager

此時,您有一個可用性群組,附帶了 SQL Server 兩個執行個體上的複本,以及對應的可用性群組接聽程式。 您可以使用接聽程式進行連線,而且可以使用 SQL Server Management Studio 在不同的執行個體之間移動可用性群組。

警告

請勿嘗試使用容錯移轉叢集管理員對可用性群組進行容錯移轉。 所有的容錯移轉作業都應該在 SQL Server Management Studio 中執行,例如使用 Always On 儀表板或 Transact-SQL (T-SQL)。 如需詳細資訊,請參閱對可用性群組使用容錯移轉叢集管理員的限制

測試接聽程式連線

當可用性群組就緒,且接聽程式已設定適當的次要 IP 位址之後,請測試接聽程式的連線。

若要測試連線,請遵循下列步驟:

  1. 使用 RDP 連線至相同虛擬網路中沒有複本的 SQL Server,例如叢集內的另一個 SQL Server 執行個體,或是已安裝了 SQL Server Management Studio 的任何其他 VM。

  2. 開啟 SQL Server Management Studio,在 [連線到伺服器] 對話方塊的 [伺服器名稱:] 輸入接聽程式名稱 (例如,AG1-Listener),然後選取 [選項]:

    Open SQL Server Management Studio and in Server name: type the name of the listener, such as AG1-Listener

  3. 在 [其他連線參數] 視窗中,輸入 MultiSubnetFailover=True,然後選擇 [連線],即可自動連線裝載主要 SQL Server 複本的任何執行個體:

    SSMS connection

注意

  • 連線至不同子網路上的可用性群組時,設定 MultiSubnetFailover=true 可讓您更快速地偵測和連線到目前的主要複本。 請參閱使用 MultiSubnetFailover 進行連線

下一步

現在您已設定多重子網路可用性群組,必要時,您可以 在多個區域擴充此群組。

若要深入了解,請參閱: