使用分散式網路名稱,以同步提交方式設定 SQL Server Always On 可用性群組


Microsoft SQL Server Always On 可用性群組可讓您跨多個 SQL Server Enterprise 執行個體複製資料庫。

SQL Server 容錯移轉叢集執行個體類似,Always On 可用性群組會使用 Windows Server 容錯移轉叢集 (WSFC) 實作高可用性。不過,這兩項功能在以下方面有所不同:

Always On 可用性群組 容錯移轉叢集執行個體
容錯移轉範圍 資料庫群組 執行個體
儲存空間 未共用 共用

如需更詳細的比較,請參閱容錯移轉叢集執行個體與可用性群組的比較

Always On 可用性群組支援多種可用性模式。 本教學課程說明如何以同步認可模式部署 Always On 可用性群組,為一或多個資料庫實作高可用性。

在設定過程中,您將建立三個 VM 執行個體。兩個 VM 執行個體 (node-1node-2) 會做為叢集節點,並執行 SQL Server。第三個 VM 執行個體 witness 用於在容錯移轉情境中達到法定人數。這三個 VM 執行個體分布在三個區域,並共用一個子網路。

使用 SQL Server Always On 可用性群組時,範例資料庫 bookshelf 會在兩個 SQL Server 執行個體之間同步複製。

在內部部署的 Windows 叢集環境中,位址解析通訊協定 (ARP) 公告會觸發 IP 位址容錯移轉。Trusted Cloud,但會忽略 ARP 公告。因此,您必須實作下列其中一個選項:使用內部負載平衡器和分散式網路名稱 (DNN)。

本文假設您已在 Trusted Cloud by S3NS上部署 Active Directory,且具備 SQL Server、Active Directory 和 Compute Engine 的基本知識。如要進一步瞭解 Active Directory,請參閱 Trusted Cloud「事前準備」一節。

使用 SQL Server Always On 可用性群組時,範例資料庫 bookshelf 會在兩個 SQL Server 執行個體之間同步複製。叢集前端的分布式網路名稱 (DNN) 接聽程式會為 SQL Server 用戶端提供單一端點。

如要進一步瞭解 DNN,請參閱「為可用性群組設定 DNN 接聽程式」。

架構

這張圖包含下列項目:

  • 兩個 VM 執行個體位於相同區域,但可用區不同,用於容錯移轉叢集,分別稱為 node-1node-2。一個節點會代管 SQL Server 資料庫的主要副本,另一個節點則代管次要副本。
  • 第三部 VM 稱為 witness,做為檔案共用見證,提供關鍵票並達成仲裁,以利容錯移轉。
  • 叢集前端的 DNN 接聽程式會為 SQL Server 用戶端提供單一端點。

目標

費用

本教學課程使用 Trusted Cloud by S3NS的計費元件,包括:

使用 Pricing Calculator,根據您的預測使用量來產生預估費用。

事前準備

如要完成本教學課程中的工作,請確認下列事項:

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

  3. 您擁有 Active Directory 網域,且至少有一個網域控制器。您可以使用 Managed Microsoft AD 建立 Active Directory 網域。或者,您也可以在 Compute Engine 上部署自訂 Active Directory 環境,並設定私人 DNS 轉送區域,將 DNS 查詢轉送至網域控制站。
  4. 您有權限將電腦加入網域,並可使用 RDP 登入 Active Directory 使用者。如果您使用受管理的 Microsoft AD,可以透過 setupadmin 使用者。如要進一步瞭解如何佈建 Active Directory 使用者帳戶,請參閱「佈建 Active Directory 使用者帳戶」一文。
  5. Trusted Cloud 專案和虛擬私有雲 (VPC),並連線至 Active Directory 網域控制站。
  6. 用於 Windows Server 容錯移轉叢集 VM 執行個體的子網路。
  7. 完成本教學課程後,您可以刪除建立的資源以避免繼續計費。詳情請參閱「清除所用資源」一節。

準備專案和網路

如要部署 SQL Server Always On 可用性群組,您必須先準備Trusted Cloud 專案和虛擬私有雲,以利部署作業。以下各節將詳細說明如何完成這項操作。

設定專案和區域

如要準備 Trusted Cloud 專案以部署 SQL Server Always On 可用性群組,請完成下列步驟:

  1. 在 Trusted Cloud 控制台中,按一下「啟用 Cloud Shell」啟動 Cloud Shell。按鈕,開啟 Cloud Shell

    前往 Trusted Cloud 控制台

  2. 初始化下列變數。

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    更改下列內容:

    • VPC_NAME:虛擬私有雲名稱
    • SUBNET_NAME:子網路名稱
  3. 設定預設的專案 ID

    gcloud config set project PROJECT_ID
    

    PROJECT_ID 替換為專案 ID。 Trusted Cloud

  4. 設定預設區域。

    gcloud config set compute/region REGION
    

    REGION 替換為要部署的地區 ID。

建立防火牆規則

如要允許用戶端連線至 SQL Server,以及叢集節點之間的通訊,您需要建立多項防火牆規則。您可以使用網路標記簡化這些防火牆規則的建立程序,如下所示:

  • 兩個叢集節點會以 wsfc-node 標記加上註解。
  • 所有伺服器 (包括 witness) 都以 wsfc 標記加上註解。

如要建立使用這些網路標記的防火牆規則,請按照下列步驟操作:

  1. 返回現有的 Cloud Shell 工作階段。
  2. 建立防火牆規則,允許叢集節點之間的流量。

    SUBNET_CIDR=$(gcloud compute networks subnets describe $SUBNET_NAME --format=value\('ipCidrRange'\))
    
    gcloud compute firewall-rules create allow-all-between-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp,udp,icmp \
      --enable-logging \
      --source-tags=wsfc \
      --target-tags=wsfc \
      --network=$VPC_NAME \
      --priority 10000
    
    gcloud compute firewall-rules create allow-sql-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:1433 \
      --enable-logging \
      --source-ranges=$SUBNET_CIDR \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    

建立 VM 執行個體

建立並部署兩個 VM 執行個體,做為容錯移轉叢集。在任何時間點,其中一個 VM 會代管 SQL Server 資料庫的主要副本,另一個節點則代管次要副本。這兩個 VM 執行個體必須符合下列條件:

使用預先安裝 SQL Server 2022 的 SQL Server 進階映像檔

如要針對容錯移轉情境提供關鍵票並達成仲裁,請按照下列步驟部署第三部 VM,做為檔案共用見證

  1. 返回現有的 Cloud Shell 工作階段。
  2. 為 WSFC 節點建立專用指令碼。這個指令碼會安裝必要的 Windows 功能,並為 WSFC 和 SQL Server 建立防火牆規則。

    cat << "EOF" > specialize-node.ps1
    
    $ErrorActionPreference = "stop"
    
    # Install required Windows features
    Install-WindowsFeature Failover-Clustering -IncludeManagementTools
    Install-WindowsFeature RSAT-AD-PowerShell
    
    # Open firewall for WSFC
    netsh advfirewall firewall add rule name="Allow WSFC health check" dir=in action=allow protocol=TCP localport=59998
    
    # Open firewall for SQL Server
    netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433
    
    # Open firewall for SQL Server replication
    netsh advfirewall firewall add rule name="Allow SQL Server replication" dir=in action=allow protocol=TCP localport=5022
    
    # Format data disk
    Get-Disk |
     Where partitionstyle -eq 'RAW' |
     Initialize-Disk -PartitionStyle MBR -PassThru |
     New-Partition -AssignDriveLetter -UseMaximumSize |
     Format-Volume -FileSystem NTFS -NewFileSystemLabel 'Data' -Confirm:$false
    
    # Create data and log folders for SQL Server
    md d:\Data
    md d:\Logs
    EOF
    
  3. 建立 VM 執行個體。在做為叢集節點的兩個 VM 上,附加額外的資料磁碟,並將中繼資料鍵 enable-wsfc 設為 true,啟用 Windows Server 容錯移轉叢集:

    REGION=$(gcloud config get-value compute/region)
    ZONE1=ZONE1
    ZONE2=ZONE2
    ZONE3=ZONE3
    PD_SIZE=200
    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --zone $ZONE1 \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-1" \
      --create-disk=name=node-1-datadisk,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --zone $ZONE2 \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-2" \
      --create-disk=name=node-2-datadisk,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --zone $ZONE3 \
      --machine-type e2-medium \
      --subnet $SUBNET_NAME \
      --image-family=windows-2022 \
      --image-project=windows-cloud \
      --tags wsfc \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
    

    根據您使用的區域,替換 ZONE1ZONE2ZONE3

  4. 如要將這三個 VM 執行個體加入 Active Directory,請針對每個 VM 執行個體執行下列操作:

    1. 查看 VM 的序列埠輸出內容,監控初始化程序。

      gcloud compute instances tail-serial-port-output NAME
      

      NAME 替換為 VM 執行個體名稱。

      等待幾分鐘,直到看到 Instance setup finished 輸出內容,然後按下 Ctrl+C。此時,VM 執行個體已可供使用。

    2. 建立 VM 執行個體的使用者名稱和密碼

    3. 使用遠端桌面連線至 VM,並使用上一步建立的使用者名稱和密碼登入。

    4. 以滑鼠右鍵按一下「開始」按鈕 (或按 Win+X 鍵),然後按一下「Windows PowerShell (系統管理員)」

    5. 按一下「是」,確認提升權限提示。

    6. 將電腦加入 Active Directory 網域,然後重新啟動。

      Add-Computer -Domain DOMAIN -Restart
      

      DOMAIN 換成 Active Directory 網域的 DNS 名稱。

    7. 輸入有權將 VM 加入網域的帳戶憑證

      等待 VM 重新啟動。您現在已將 VM 執行個體加入 Active Directory。

部署容錯移轉叢集

現在您可以使用 VM 執行個體部署 Windows Server 容錯移轉叢集和 SQL Server。以下各節將詳細說明如何執行這項操作。

準備 SQL Server

按照下列步驟,在 Active Directory 中為 SQL Server 建立新的使用者帳戶。

  1. node-1 使用遠端桌面連線。 使用網域使用者帳戶登入。
  2. 以滑鼠右鍵按一下「開始」按鈕 (或按下 Win+X 鍵),然後按一下「Windows PowerShell (系統管理員)」
  3. 按一下「是」,確認提升權限提示。
  4. 為 SQL Server 和 SQL 代理程式建立網域使用者帳戶,並指派密碼:

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
      -Name "sql_server" `
      -Description "SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true
    

如要在 node-1node-2 上設定 SQL Server,請按照下列步驟操作:

  1. 開啟 SQL Server 設定管理員
  2. 在導覽窗格中,選取「SQL Server Services」
  3. 在服務清單中,以滑鼠右鍵按一下「SQL Server (MSSQLSERVER)」,然後選取「內容」
  4. 在「以以下身分登入」下方,按照下列步驟變更帳戶:

    • 帳戶名稱: DOMAIN\sql_server 其中 DOMAIN 是 Active Directory 網域的 NetBIOS 名稱。
    • 密碼:輸入先前選擇的密碼。
  5. 按一下 [確定]

  6. 系統提示重新啟動 SQL Server 時,請選取「是」

SQL Server 現在會以網域使用者帳戶執行。

<0x0

建立檔案共用區

在 VM 執行個體 witness 上建立兩個檔案共用區,以便儲存 SQL Server 備份並做為檔案共用見證:

  1. 使用遠端桌面連線至 witness。 使用網域使用者帳戶登入。
  2. 以滑鼠右鍵按一下「開始」按鈕 (或按 Win+X 鍵),然後按一下「Windows PowerShell (系統管理員)」
  3. 按一下「是」,確認提升權限提示。
  4. 建立見證檔案共用,並授予自己和兩個叢集節點檔案共用存取權。

    New-Item "C:\QWitness" –type directory
    
    icacls C:\QWitness\ /grant 'node-1$:(OI)(CI)(M)'
    icacls C:\QWitness\ /grant 'node-2$:(OI)(CI)(M)'
    
    New-SmbShare `
      -Name QWitness `
      -Path "C:\QWitness" `
      -Description "SQL File Share Witness" `
      -FullAccess $env:username,node-1$,node-2$
    
  5. 建立另一個檔案共用來儲存備份,並授予 SQL Server 完整存取權:

    New-Item "C:\Backup" –type directory
    New-SmbShare `
      -Name Backup `
      -Path "C:\Backup" `
      -Description "SQL Backup" `
      -FullAccess  $env:USERDOMAIN\sql_server
    

建立容錯移轉叢集

如要建立容錯移轉叢集,請按照下列步驟操作:

  1. 返回 node-1 的遠端桌面工作階段。
  2. 以滑鼠右鍵按一下「開始」按鈕 (或按 Win+X 鍵),然後按一下「Windows PowerShell (系統管理員)」
  3. 按一下「是」,確認提升權限提示。
  4. 建立新叢集。

    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -ManagementPointNetworkType Distributed
    
  5. 返回 witness 的 PowerShell 工作階段,授予叢集的虛擬電腦物件存取檔案共用區的權限。

    icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'sql-cluster$' `
      -AccessRight Full `
      -Force
    
  6. 返回 node-1 的 PowerShell 工作階段,將叢集設為使用 witness 的檔案共用做為叢集仲裁。

    Set-ClusterQuorum -FileShareWitness \\witness\QWitness
    
  7. 確認叢集已成功建立。

    Test-Cluster
    

    您可能會看到一些可直接忽略的警告:

    WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings..
    WARNING: Network - Validate Network Communication: The test reported some warnings..
    WARNING:
    Test Result:
    HadUnselectedTests, ClusterConditionallyApproved
    Testing has completed for the tests you selected. You should review the warnings in the Report.  A cluster solution is
    supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
    

    您也可以執行 cluadmin.msc,藉此啟動容錯移轉叢集管理員 MMC 嵌入式管理單元,並查看叢集的健康狀態。

  8. 如果您使用受管理 AD,請將 Windows 叢集使用的電腦帳戶新增至「Cloud Service Domain Join Accounts」群組,以便將電腦加入網域。

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members sql-cluster$
    
  9. 在兩個節點上啟用 Always On 可用性群組。

    Enable-SqlAlwaysOn -ServerInstance node-1 -Force
    Enable-SqlAlwaysOn -ServerInstance node-2 -Force
    
<0

建立可用性群組

現在請建立範例資料庫 bookshelf,將其納入名為 bookshelf-ag 的新可用性群組,並設定高可用性。

建立資料庫

建立新的資料庫。為配合本教學課程,資料庫不需要包含任何資料。

  1. 返回 node-1 的遠端桌面工作階段。
  2. 開啟 SQL Server Management Studio
  3. 在「連線到伺服器」對話方塊中,確認伺服器名稱已設為 node-1,然後選取「連線」
  4. 在選單中,依序選取「檔案」>「新增」>「使用目前連線查詢」
  5. 將下列 SQL 指令碼貼到編輯器中:

    -- Create a sample database
    CREATE DATABASE bookshelf ON PRIMARY (
      NAME = 'bookshelf',
      FILENAME='d:\Data\bookshelf.mdf',
      SIZE = 256MB,
      MAXSIZE = UNLIMITED,
      FILEGROWTH = 256MB)
    LOG ON (
      NAME = 'bookshelf_log',
      FILENAME='d:\Logs\bookshelf.ldf',
      SIZE = 256MB,
      MAXSIZE = UNLIMITED,
      FILEGROWTH = 256MB)
    GO
    
    USE [bookshelf]
    SET ANSI_NULLS ON
    SET QUOTED_IDENTIFIER ON
    GO
    
    -- Create sample table
    CREATE TABLE [dbo].[Books] (
      [Id] [bigint] IDENTITY(1,1) NOT NULL,
      [Title] [nvarchar](max) NOT NULL,
      [Author] [nvarchar](max) NULL,
      [PublishedDate] [datetime] NULL,
      [ImageUrl] [nvarchar](max) NULL,
      [Description] [nvarchar](max) NULL,
      [CreatedById] [nvarchar](max) NULL,
      CONSTRAINT [PK_dbo.Books] PRIMARY KEY CLUSTERED ([Id] ASC) WITH (
        PAD_INDEX = OFF,
        STATISTICS_NORECOMPUTE = OFF,
        IGNORE_DUP_KEY = OFF,
        ALLOW_ROW_LOCKS = ON,
        ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
    
    -- Create a backup
    EXEC dbo.sp_changedbowner @loginame = 'sa', @map = false;
      ALTER DATABASE [bookshelf] SET RECOVERY FULL;
      GO
      BACKUP DATABASE bookshelf to disk = '\\witness\Backup\bookshelf.bak' WITH INIT
    GO
    

    指令碼會建立含有單一資料表的新資料庫,並執行初始備份至 witness

  6. 選取「執行」即可執行 SQL 指令碼。

設定高可用性

您現在可以使用 T-SQL 或 Server Management Studio,為可用性群組設定高可用性。

使用 T-SQL

如要使用 T-SQL 為可用性群組設定高可用性,請按照下列步驟操作:

  1. 連線至 node-1,然後執行下列指令碼,建立 bookshelf-ag 可用性群組。

    CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS;
    GO
    
    USE [bookshelf];
    CREATE USER [NET_DOMAIN\sql_server] FOR LOGIN [NET_DOMAIN\sql_server];
    GO
    
    USE [master];
    CREATE ENDPOINT bookshelf_endpoint
      STATE=STARTED
      AS TCP (LISTENER_PORT=5022)
      FOR DATABASE_MIRRORING (ROLE=ALL);
    GO
    
    GRANT CONNECT ON ENDPOINT::[bookshelf_endpoint] TO [NET_DOMAIN\sql_server]
    GO
    
  2. 連線至 node-2 並執行下列指令碼。

    CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS;
    GO
    
    CREATE ENDPOINT bookshelf_endpoint
      STATE=STARTED
      AS TCP (LISTENER_PORT=5022)
      FOR DATABASE_MIRRORING (ROLE=ALL);
    GO
    
    GRANT CONNECT ON ENDPOINT::[bookshelf_endpoint] TO [NET_DOMAIN\sql_server]
    GO
    
  3. node-1 上執行下列指令碼,建立 bookshelf-ag 可用性群組。

    USE master;
    GO
    
    CREATE AVAILABILITY GROUP [bookshelf-ag]
    WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
    CLUSTER_TYPE = WSFC,
    DB_FAILOVER = ON
    )
    FOR DATABASE [bookshelf]
    REPLICA ON
      N'node-1' WITH (
          ENDPOINT_URL = 'TCP://node-1:5022',
          AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
          FAILOVER_MODE = AUTOMATIC,
          BACKUP_PRIORITY = 50,
          SEEDING_MODE = AUTOMATIC,
          SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
      ),
      N'node-2' WITH (
          ENDPOINT_URL = 'TCP://node-2:5022',
          AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
          FAILOVER_MODE = AUTOMATIC,
          BACKUP_PRIORITY = 50,
          SEEDING_MODE = AUTOMATIC,
          SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
      );
    GO
    
  4. 連線至 node-2,然後執行下列指令碼,將次要副本加入可用性群組,並啟用自動植入。

    USE master;
    GO
    
    ALTER AVAILABILITY GROUP [bookshelf-ag] JOIN;
    ALTER AVAILABILITY GROUP [bookshelf-ag] GRANT CREATE ANY DATABASE;
    
    
  5. 檢查可用性群組的狀態。

    SELECT * FROM sys.dm_hadr_availability_group_states;
    GO
    

    您應該會看到 synchronization_health_descHEALTHY

使用 SQL Server Management Studio

如要使用 SQL Server Management Studio 為可用性群組設定高可用性,請按照下列步驟操作:

  1. 在「物件總管」視窗中,以滑鼠右鍵按一下「Always On High Availability」,然後選取「New Availability Group Wizard」
  2. 在「Specify Options」(指定選項) 頁面上,將可用性群組名稱設為 bookshelf-ag,然後選取「Next」(下一步)
  3. 在「Select Databases」(選取資料庫) 頁面上,選取 bookshelf 資料庫,然後選取「Next」(下一步)
  4. 在「Specify Replicas」(指定副本) 頁面上,選取「Replicas」(副本) 分頁標籤。

    1. 選取「新增副本」
    2. 在「連線到伺服器」對話方塊中,輸入伺服器名稱 node-2,然後選取「連線」

      可用性副本清單現在包含 SQL Server 執行個體、node-1node-2

    3. 將兩個執行個體的「可用性模式」設為「同步認可」

    4. 將兩個執行個體的「Automatic failover」(自動容錯移轉) 設為「Enabled」(啟用)。

    5. 選取「下一步」

  5. 在「Select Data Synchronization」(選取資料同步處理) 頁面上,選取「Automatic Seeding」(自動播種)

  6. 在「驗證」頁面中,確認所有檢查都成功。您可以忽略可用性群組接聽程式檢查。

  7. 在「摘要」頁面選取「完成」

  8. 在「結果」頁面中,選取「關閉」

設定可用性群組的 DNN 接聽程式

DNN 接聽程式可做為 SQL Server 用戶端的單一端點。如要設定 DNN 接聽程式,請按照下列步驟操作:

  1. 返回 node-1 的 PowerShell 工作階段。
  2. 執行下列指令碼,建立 DNN 接聽程式。

      $Ag='bookshelf-ag'
      $Port='DNN_PORT'
      $Dns='DNN_NAME'
    
      # create the DNN resource with the port as the resource name
      Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag
    
      # set the DNS name of the DNN resource
      Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns
    
      # start the DNN resource
      Start-ClusterResource -Name $Port
    
      # add the Dependency from availability group resource to the DNN resource
      Set-ClusterResourceDependency -Resource $Ag -Dependency "[$Port]"
    
      # restart the availability group resource
      Stop-ClusterResource -Name $Ag
      Start-ClusterResource -Name $Ag
    

    DNN_PORT 替換為 DNN 接聽埠。DNN 接聽埠必須設定為不重複的通訊埠。詳情請參閱「連接埠注意事項」。

    DNN_NAME 替換為 DNN 接聽程式名稱。

  3. node-1node-2 上,為 DNN 接聽埠建立防火牆規則。

      netsh advfirewall firewall add rule name="Allow DNN listener" dir=in action=allow protocol=TCP localport=DNN_PORT
    

測試容錯移轉

現在可以測試容錯移轉是否正常運作:

  1. 返回 witness 的 PowerShell 工作階段。
  2. 執行下列指令碼。

    while ($True){
      $Conn = New-Object System.Data.SqlClient.SqlConnection
      $Conn.ConnectionString = "Server=DNN_NAME,DNN_PORT;Integrated Security=true;Initial Catalog=master"
      $Conn.Open()
    
      $Cmd = New-Object System.Data.SqlClient.SqlCommand
      $Cmd.Connection = $Conn
      $Cmd.CommandText = "SELECT SERVERPROPERTY('ServerName')"
    
      $Adapter = New-Object System.Data.SqlClient.SqlDataAdapter $Cmd
      $Data = New-Object System.Data.DataSet
      $Adapter.Fill($Data) | Out-Null
      $Data.Tables[0] + (Get-Date -Format "MM/dd/yyyy HH:mm:ss")
    
      Start-Sleep -Seconds 2
    }
    

    DNN_NAME 替換為 DNN 接聽程式名稱,並將 DNN_PORT 替換為 DNN 接聽程式連接埠。

    每隔 2 秒,指令碼就會使用可用性群組接聽程式連線至 SQL Server,並查詢伺服器名稱。

    讓指令碼繼續執行。

  3. 返回 node-1 上的遠端桌面工作階段,觸發容錯移轉。

    1. SQL Server Management Studio 中,依序前往「Always On High Availability」>「Availability Groups」>「bookshelf-ag (Primary)」,然後以滑鼠右鍵按一下節點。
    2. 選取「Failover」
    3. 在「選取新的主要副本」頁面,確認已選取 node-2 做為新的主要副本,且「容錯移轉準備就緒」欄顯示 No data loss。然後選取「下一步」
    4. 在「Connect to replica」(連線至副本) 頁面中,選取「Connect」(連線)
    5. 在「連線到伺服器」對話方塊中,確認伺服器名稱為 node-2,然後按一下「連線」
    6. 依序選取「下一步」和「完成」
    7. 在「結果」頁面上,確認容錯移轉是否成功。
  4. 返回 witness 的 PowerShell 工作階段。

  5. 觀察執行指令碼的輸出內容,並注意伺服器名稱會因容錯移轉而從 node-1 變更為 node-2

  6. 按下 Ctrl+C 鍵停止指令碼。

清除所用資源

完成教學課程後,您可以清除所建立的資源,這樣資源就不會繼續使用配額,也不會產生費用。下列各節將說明如何刪除或關閉這些資源。

刪除專案

如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。

如要刪除專案:

  1. In the Trusted Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

後續步驟