使用 Cloud Volumes 服務在 Google Cloud 平台上設定 SQL Server


本教學課程將概略說明如何使用 NetApp Cloud Volumes Service (CVS) for Google Cloud,為在 Server Message Block (SMB) 檔案共用儲存空間上安裝的 SQL Server 設定高度彈性 Google Cloud環境。

Microsoft SQL Server Always On 可用性群組 (AG) 可讓您跨多個 SQL Server Enterprise 執行個體複製資料庫。傳統的 SQL Server Always On 執行個體通常需要每個節點都保留資料的副本,隨著資料庫的成長,這可能會迅速造成高昂的成本。舉例來說,在傳統 SQL Server Always On 部署中,如果資料庫的大小為 10 TB,則每個備援資料庫都必須至少佈建 10 TB 的儲存空間。為 SQL Server 部署 Windows Server 容錯移轉叢集 (WSFC) 的好處之一,就是您只需要備份一份資料,並在叢集節點之間共用。因此,在 WSFC 上執行 SQL Server Always On 容錯移轉叢集執行個體 (FCI),可減少所需的儲存空間量,立即節省成本。

NetApp Cloud Volumes Service 是雲端儲存空間解決方案,可搭配 Compute Engine 執行個體執行高效能的 SQL Server 工作負載。在 Cloud Volumes Service 上透過 SMB 使用 SQL Server 資料庫,可在執行個體和儲存空間服務之間提供極高的復原能力。 Google Cloud SMB 透明容錯功能可讓您在維護 Cloud Volumes 服務時,不中斷 SMB 磁碟區中儲存及存取資料的伺服器應用程式連線。為了支援 SMB 透明容錯移轉,Cloud Volumes 服務支援 SMB 持續可用性 (CA) 共用區選項,可搭配 SQL Server 工作負載使用。這項功能可改善效能、擴充性和成本,適用於單一執行個體、Always On 容錯移轉叢集 (AOFC) 執行個體和 Always On 可用性群組部署。

本頁面適用於 NetApp Cloud Volumes Service 和 SQL Server 資料庫管理員,他們負責在 Google Cloud上部署 Microsoft SQL Server。這會假設以下情況:

  • 您熟悉解決方案的各個元件
  • 您已在 Google Cloud 中部署 Active Directory

目標

本教學課程旨在達成以下目標:

  • 為 SQL Server 建立 Cloud Volumes Service 磁碟
  • 在 Cloud Volumes Service 上透過 SMB 部署 Always On 容錯移轉叢集

費用

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

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

事前準備

本教學課程需要 Google Cloud 專案。您可以建立新專案,或選取已建立的專案:

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

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. 至少有一個網域控制器的 Active Directory 網域。您可以使用 Managed Microsoft AD 建立 Active Directory 網域。或者,您也可以在 Compute Engine 上部署自訂 Active Directory 環境,並設定私人 DNS 轉送區域,將 DNS 查詢轉送至網域控制站。
  4. 具備將電腦加入網域權限的 Active Directory 使用者,且可透過 RDP 登入。如果您使用的是受管理的 Microsoft AD,可以使用 setupadmin 使用者。
  5. 具備與 Active Directory 網域控制站連線功能的 Google Cloud 專案和 VPC。
  6. 請確認您的 Google Cloud 專案已啟用 NetApp Cloud Volumes API
  7. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

準備專案和網路

如要為 SQL Server Always On 可用性群組部署作業準備 Google Cloud 專案和虛擬私有雲 (VPC),請執行下列操作:

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

    前往 Google Cloud 控制台

  2. 初始化下列變數:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    更改下列內容:

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

    gcloud config set project PROJECT_ID
    

    PROJECT_ID 替換為 Google Cloud 專案的 ID。

  4. 設定預設區域:

    gcloud config set compute/region REGION
    

    REGION 替換為您要部署的區域 ID。

  5. 設定預設可用區:

    gcloud config set compute/zone ZONE
    

    ZONE 替換為您要部署的區域 ID。

在 SQL Server 適用的 Cloud Volumes 服務上建立 SMB

如要建立 Cloud Volumes Service 磁碟區,您必須建立 Active Directory 政策、私人服務存取權、儲存空間集區和儲存空間磁碟區。

  1. 如要建立新的私人服務存取權,請按照下列步驟操作:

    1. 在 Google Cloud 控制台中,前往「VPC network」(虛擬私有雲網路) 頁面。

      前往「VPC network」(虛擬私有雲網路)

    2. 按一下要使用的虛擬私有雲端網路名稱。

    3. 依序點選「Private Services Access」分頁標籤和「Allocate IP Range」

      1. 輸入內部 IP 範圍的名稱。
      2. 選取「自動」,然後在「前置字串長度」中輸入 24。
      3. 按一下「分配」按鈕。
    4. 按一下「Private connections to services」(私人服務連線) 分頁標籤,然後執行下列操作:

      1. 按一下「Create Connection」(建立連線) 按鈕。
      2. 在「Assigned allocation」下拉式選單中,選取先前已分配的 IP 範圍。
      3. 按一下「Connect」按鈕。
  2. 如要建立新的 Active Directory 政策,請按照下列步驟操作:

    1. 前往 Google Cloud 控制台的「NetApp Volumes」頁面。

      前往 NetApp Volumes

    2. 在「導覽」窗格中,按一下「政策」部分下方的「Active Directory 政策」

    3. 按一下「Create」按鈕。

    4. 指定 Active Directory 政策的名稱。

    5. 在「Region」下方,選取離 SQL Server 執行個體託管位置最近的可用區域。

    6. 在「Active Directory 連線詳細資料」部分,提供下列資訊:

      1. 網域名稱
      2. Active Directory DNS 伺服器位址
      3. Active Directory 網站名稱
      4. 機構單位名稱
      5. NetBIOS 名稱前置字串
    7. 在「Active Directory 憑證」部分,為可將電腦新增至指定網域的使用者提供憑證。

    8. 在「SMB 設定」部分,提供備份作業員安全性權限使用者 (如適用)。

    9. 按一下「建立」,即可完成建立新的 Active Directory 政策。

  3. 如要建立新的儲存空間集區,請按照下列步驟操作:

    1. 在導覽窗格中,按一下「儲存空間」專區下方的「儲存空間集區」
    2. 按一下「Create」按鈕。
    3. 輸入儲存空間資源池的名稱。
    4. 在「位置」下方,選取離 SQL Server 執行個體託管位置最近的可用區域。
    5. 選取可滿足預期儲存空間效能的服務等級
    6. 輸入儲存空間集區的「容量」。儲存空間集區容量會定義可為集區內所有磁碟區分配的總儲存空間容量。
    7. 在「Network」(網路) 清單中,選取 SQL Server 執行個體將要代管的 VPC,如下所示:
      1. 按一下「Set Up Connection」按鈕。
      2. 選取先前步驟中保留的 IP 位址範圍,然後按一下「繼續」
      3. 按一下「Create Connection」(建立連線) 按鈕。
    8. 在「Active Directory 政策」專區中,選取「將 Active Directory 政策指派給儲存空間集區」,然後選取先前步驟中建立的 Active Directory 政策。
    9. 按一下「建立」按鈕,完成建立新的儲存空間資源池程序。
  4. 如要建立新的儲存空間磁碟區,請按照下列步驟操作:

    1. 在導覽窗格中,按一下「儲存空間」專區下方的「磁碟區」
    2. 按一下「Create」按鈕。
    3. 指定儲存體的名稱。
    4. 在「儲存空間集區詳細資料」下方,按一下「選取儲存空間集區」,選取先前步驟中建立的儲存空間集區。
    5. 在「Volume details」(磁碟區詳細資料) 部分,提供下列資訊:
      1. 共用區名稱
      2. 磁碟區容量
    6. 在「大容量設定」部分中,選取 SMB 通訊協定。
    7. 在「所選通訊協定的設定」專區中,選取「啟用 SQL Server 和 FSLogix 的 CA 共用區支援」
    8. 按一下「建立」按鈕,即可完成建立新的儲存空間磁碟分割區的程序。

建立防火牆規則

如要讓用戶端連線至 SQL Server、允許 Windows Server 容錯叢集 (WSFC) 節點之間的通訊,以及讓負載平衡器執行健康狀態檢查,您需要建立多個防火牆規則。如要簡化這些防火牆規則的建立程序,您可以使用網路標記

  • 您使用的 WSFC 會加上 wsfc-node 標記。
  • 所有伺服器 (包括見證伺服器) 都會加上 wsfc 標記。

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

  1. 返回現有的 Cloud Shell 工作階段。
  2. 為 WSFC 節點建立防火牆規則。

    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
    
  3. 建立防火牆規則,允許從 Google Cloud 探測器的 IP 範圍進行健康狀態檢查:

    gcloud compute firewall-rules create allow-health-check-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp \
      --source-ranges=130.211.0.0/22,35.191.0.0/16 \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    

建立 VM 執行個體

您現在將為容錯移轉叢集部署三個 VM 執行個體。

Node-1 會代管 SQL Server 資料庫的主要備用資源,node-2 則會代管次要備用資源。這兩個 VM 執行個體必須符合下列條件:

  • 位於相同的區域,這樣內部直通式網路負載平衡器才能存取
  • 使用 SQL Server 付費映像檔安裝 WSFC 和 SQL Server 2022

  • 已啟用 Compute Engine WSFC 支援

如要針對容錯移轉情境提供關鍵票並達成仲裁,您可以部署第三個 VM 執行個體 node-3,做為檔案共用見證

  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 SQL Server health check" dir=in action=allow protocol=TCP localport=59997
    
    # 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
    
    EOF
    
  3. 建立 VM 執行個體。在做為 WSFC 節點的兩個 VM 上,請附加額外資料磁碟,並將中繼資料鍵 enable-wsfc 設為 true,啟用 Windows Server 容錯移轉叢集:

    REGION=$(gcloud config get-value compute/region)
    PD_SIZE=200
    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --zone $REGION-a \
      --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" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --zone $REGION-b \
      --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" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --zone $REGION-c \
      --machine-type n2-standard-2 \
      --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"
    
  4. 如要將 3 個 VM 執行個體加入 Active Directory,請針對每個 VM 執行個體執行下列操作:

    1. 查看 VM 的序列埠輸出內容,監控 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. 將 VM 執行個體加入 Active Directory 網域並重新啟動:

      Add-Computer -Domain DOMAIN -Restart
      

      DOMAIN 替換為 Active Directory 網域的 DNS 名稱。

      等待 VM 執行個體重新啟動。

指派儲存空間權限

如要指派雲端磁碟儲存空間的權限,請完成下列步驟:

  1. 在 Google Cloud 控制台中,選取「Cloud Volumes」,然後選取剛剛建立的磁碟。

    Cloud Volume

  2. 使用遠端桌面連線至 node-1。使用您的網域使用者帳戶登入。

  3. 開啟 Windows 檔案總管,然後在「This PC」上按一下滑鼠右鍵。

  4. 選取「對應網路磁碟機」

  5. 將複製的 SMB 路徑貼到資料夾中。

    Cloud Volume

  6. 在登入時停用「重新連結」選項。

  7. 按一下「完成」

  8. 在已對應的網路磁碟機上按一下滑鼠右鍵,然後選取「Properties」

    Cloud Volume

  9. 在「安全性」分頁中,按一下「編輯」

  10. 移除「Everyone」,並新增具備完全控制權限的 SQL Server 安裝程式和 SQL Server 服務帳戶。

    Cloud Volume

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

保留叢集 IP 位址

在 VPC 中保留兩個靜態 IP 位址,一個用於 WSFC 叢集 IP 位址,另一個用於內部負載平衡器。

  1. 為內部負載平衡器保留靜態 IP,並在名為 LOADBALANCER_ADDRESS 的新環境變數中擷取該位址:

    gcloud compute addresses create wsfc \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --subnet $SUBNET_NAME
    
    LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --format=value\(address\)) && \
    echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
    

    請記下 IP 位址,後續步驟會用到。

  2. 保留另一個用於叢集 IP 的靜態 IP 位址:

    gcloud compute addresses create wsfc-cluster \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) && \
    CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --format=value\(address\)) && \
    echo "Cluster IP: $CLUSTER_ADDRESS"
    

    請記下 IP 位址,後續步驟會用到。

專案和 VPC 現已準備好部署 WSFC 和 SQL Server。

建立見證檔案共用

如要讓 witness 做為檔案共用見證,請建立檔案共用,並授予您和兩個 WSFC 節點的檔案共用存取權:

  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$
    

部署容錯移轉叢集

您現在將使用 VM 執行個體部署 WSFC 和 SQL Server。

部署 WSFC

您現在可以建立容錯移轉叢集:

  1. 使用遠端桌面連線至 node-1。使用您的網域使用者帳戶登入。
  2. 以滑鼠右鍵按一下「開始」按鈕 (或按下 Win + X 鍵),然後點選「Windows PowerShell (系統管理員)」
  3. 按一下「是」,確認權限提升提示。
  4. 建立新叢集:

    New-Cluster `
      -Name windows-fci `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

    CLUSTER_ADDRESS 替換為您先前建立的叢集 IP 位址。

  5. 返回 witness 的 PowerShell 工作階段,並授予叢集的虛擬電腦物件檔案共用區存取權:

    icacls C:\QWitness\ /grant 'windows-fci$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'windows-fci$' `
      -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. 如果您使用的是 Managed AD,請將 WSFC 使用的電腦帳戶新增至「Cloud Service Domain Join Accounts」群組,讓該帳戶可將 VM 執行個體加入網域:

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members windows-fci$
    

移除預設的 SQL Server 安裝

您現在將從兩個節點中移除預設的 SQL Server 安裝作業,並以新的 FCI 設定取代。

針對兩個 WSFC 節點 node-1node-2,執行下列步驟:

  1. 以滑鼠右鍵按一下「開始」按鈕 (或按下 Win + X 鍵),然後按一下「Windows PowerShell (系統管理員)」
  2. 按一下「是」,確認權限提升提示。
  3. 移除預設的 SQL Server 執行個體:

    C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
    
  4. 移除 Microsoft OLE 驅動程式:

    Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
    
  5. 移除 Microsoft ODBC 驅動程式:

    Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
    
  6. 重新啟動電腦:

    Restart-Computer
    
  7. 等待 VM 執行個體重新啟動。

安裝 SQL Server FCI

安裝新的 FCI 設定前,請確認 node-1 是叢集中的有效節點:

  1. 使用遠端桌面重新連線至 node-1,然後使用您的網域使用者登入。
  2. 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後選取「執行」
  3. 輸入 cluadmin.msc,然後選取「確定」
  4. 在左側窗格中,依序前往「容錯移轉叢集管理員」>「windows-fci」,然後執行下列操作:

    1. 確認目前的主機伺服器已設為 node-1

    2. 如果目前的代管伺服器已設為 node-2,請在左側視窗窗格中按一下 windows-fci,然後依序選取「更多動作」>「移動核心叢集資源」>「選取節點...」>「node-1」,然後按一下「確定」

您將在 node-1 上建立新的 SQL Server 容錯移轉叢集安裝:

  1. 以滑鼠右鍵按一下「開始」按鈕 (或按下 Win + X 鍵),然後按一下「Windows PowerShell (系統管理員)」
  2. 按一下「是」,確認權限提升提示。

  3. 開始設定 SQL Server:

    & c:\sql_server_install\setup.exe
    
  4. 在左側選單中,選取「安裝」

  5. 選取「新 SQL Server 容錯移轉叢集安裝作業」

  6. 在「Edition」頁面中輸入產品金鑰,選取軟體授權類型,然後按一下「Next」

  7. 在「授權條款」頁面中詳閱條款,如果接受條款,請按一下「下一步」

  8. 在「Microsoft Update」頁面中,按一下「Next」開始安裝。

  9. 在「Install Failover Cluster Rules」頁面中,您會看到「MSCS cluster verification warnings」和「Windows firewall」警告。您可以忽略這些警告,然後按一下「Next」

  10. 在「Feature Selection」頁面中,選取「Database Engine Services」,然後按一下「Next」

  11. 在「Instance Configuration」頁面中,輸入網路名稱 sql,然後按一下「Next」

  12. 在「叢集資源群組」頁面中,您可以忽略資格警告,然後按一下「下一步」

  13. 在「叢集磁碟選取」頁面中,按一下「下一步」

  14. 在「叢集網路設定」頁面中,完成下列設定,然後按一下「下一步」

    • DHCP:清除
    • IP 位址:輸入內部負載平衡器的 IP 位址
  15. 在「伺服器組態」頁面中,為 SQL Server 代理程式SQL Server 資料庫引擎設定下列設定:

    • 帳戶名稱DOMAIN\sql_server,其中 DOMAIN 是 Active Directory 網域的 NetBIOS 名稱
    • 密碼:輸入 sql_server 使用者的密碼
  16. 選取「排序」分頁標籤,然後選取要使用的排序方式。然後點選「下一步」

  17. 在「資料庫引擎設定」頁面中,選取「新增目前使用者」,將目前使用者指定為 SQL Server 管理員。在「資料目錄」分頁中,在「資料根目錄」欄位中輸入 SMB 路徑,然後選取「下一步」。畫面上會顯示訊息視窗,要求您確認 SQL Server 服務帳戶是否具備完整的共用權限。選取「是」繼續操作。

    Cloud Volume

  18. 在「Ready to Install」(準備安裝)頁面上,檢查設定,然後選取「Install」(安裝)

  19. 安裝完成後,請選取「關閉」

接著將 node-2 新增至 SQL Server 容錯移轉叢集:

  1. 使用遠端桌面連線至 node-2,然後使用您的網域使用者登入。
  2. 以滑鼠右鍵按一下「開始」按鈕 (或按下 Win + X 鍵),然後點選「Windows PowerShell (系統管理員)」
  3. 按一下「是」,確認權限提升提示。
  4. 開始設定 SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. 在左側選單中,選取「安裝」

  6. 選取「Add node to a SQL Server failover cluster」(將節點新增至 SQL Server 容錯移轉叢集)

  7. 按照安裝精靈的操作說明進行,並接受預設設定,直到看到「服務帳戶」頁面為止。

  8. 在「Service Accounts」頁面中,輸入您先前為 SQL Server 代理程式SQL Server 資料庫引擎建立的密碼。然後選取「下一步」

  9. 在「Ready to Install」(準備安裝)頁面上,檢查設定,然後選取「Install」(安裝)

  10. 安裝完成後,請選取「關閉」

設定健康狀態檢查

最後,請設定叢集,公開可供內部負載平衡器使用的健康狀態檢查端點:

  1. 返回 node-2 上的 PowerShell 工作階段
  2. 使用負載平衡器的 IP 位址初始化變數。

    $LoadBalancerIP = 'IP_ADDRESS'
    

    IP_ADDRESS 替換為您先前保留的 wsfc 位址 IP 位址。

  3. 設定容錯移轉叢集,回應健康狀態檢查服務:

    $SqlGroup = Get-ClusterGroup |
      Where-Object {$_.Name.StartsWith("SQL Server")}
    $SqlIpAddress = Get-ClusterResource |
      Where-Object {$_.Name.StartsWith("SQL IP Address")}
    
    $SqlIpAddress | Set-ClusterParameter -Multiple @{
     'Address'=$LoadBalancerIP;
     'ProbePort'= 59997;
     'SubnetMask'='255.255.255.255';
     'Network'= (Get-ClusterNetwork).Name;
     'EnableDhcp'=0; }
    
  4. 重新啟動叢集資源:

    $SqlIpAddress | Stop-ClusterResource
    $SqlIpAddress | Start-ClusterResource
    
  5. 重新啟動叢集群組:

    $SqlGroup | Stop-ClusterGroup
    $SqlGroup | Start-ClusterGroup
    

建立內部負載平衡器

為 SQL Server 用戶端提供單一端點,您現在將部署內部負載平衡器。負載平衡器會使用健康狀態檢查,確保流量會導向 WSFC 的有效節點。

  1. 返回現有的 Cloud Shell 工作階段。
  2. 建立非代管執行個體群組,並將兩個節點新增至群組:

    REGION=$(gcloud config get-value compute/region)
    
    gcloud compute instance-groups unmanaged create wsfc-group-a \
      --zone $REGION-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-a \ 
      --zone $REGION-a --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-b \
      --zone $REGION-b
    gcloud compute instance-groups unmanaged add-instances wsfc-group-b \ 
    --zone $REGION-b --instances node-2
    
  3. 建立健康狀態檢查,供負載平衡器用來判斷哪個是有效節點。

    gcloud compute health-checks create tcp wsfc-healthcheck \
      --check-interval="2s" \
      --healthy-threshold=1 \
      --unhealthy-threshold=2 \
      --port=59997 \
      --timeout="1s"
    

    健康狀態檢查探測器會探測 59997 通訊埠,這是您先前為 WSFC 叢集 IP 位址設定為 ProbePort 的通訊埠。

  4. 建立後端服務並新增執行個體群組:

    gcloud compute backend-services create wsfc-backend \
      --load-balancing-scheme internal \
      --region $REGION \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-a \
      --instance-group-zone $REGION-a \
      --region $REGION
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-b \
      --instance-group-zone $REGION-b \
      --region $REGION
    
  5. 建立內部負載平衡器:

    gcloud compute forwarding-rules create wsfc-sql \
      --load-balancing-scheme internal \
      --address $LOADBALANCER_ADDRESS \
      --ports 1433 \
      --network $VPC_NAME \
      --subnet $SUBNET_NAME \
      --region $REGION \
      --backend-service wsfc-backend
    

測試容錯移轉叢集

容錯移轉叢集的安裝作業已完成,但您仍須測試叢集是否正常運作。

準備用戶端

建立新的 VM 執行個體,以便連線至容錯移轉叢集:

  1. 返回現有的 Cloud Shell 工作階段。
  2. 建立新的 VM 執行個體:

    gcloud compute instances create sqlclient \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd
    
  3. 查看 VM 的序列埠輸出內容,監控 VM 的初始化程序:

    gcloud compute instances tail-serial-port-output sqlclient
    

    請等候幾分鐘,直到輸出執行個體設定完成,然後按下 Ctrl+C 鍵。此時,VM 執行個體已可供使用。

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

  5. 使用遠端桌面連線至 VM,然後使用上一個步驟建立的使用者名稱和密碼登入。

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

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

  8. 將 VM 執行個體加入 Active Directory 網域:

    Add-Computer -Domain DOMAIN
    

    DOMAIN 替換為 Active Directory 網域的 DNS 名稱。

  9. 重新啟動 VM 執行個體:

    Restart-Computer
    

    等待 VM 執行個體重新啟動。

執行測試

使用 sqlclient VM 測試是否能連線至容錯移轉叢集,並驗證容錯移轉功能是否正常運作:

  1. 使用遠端桌面連線至 sqlclient,然後使用您的網域使用者登入。
  2. 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後按一下「Windows PowerShell」
  3. 使用 SQL Server 叢集的網路名稱 sql 連線,並查詢 dm_os_cluster_nodes 資料表:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    輸出內容應如下所示:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   0 up                                1
    NODE-2                                   0 up                                0
    
    (2 rows affected)
    

    請注意,node-1 是 SQL Server 容錯移轉叢集資源目前的擁有者。

  4. 返回 Cloud Shell,關閉 node-1 VM 來測試容錯移轉情境:

    gcloud compute instances stop node-1
    
  5. 重複執行查詢:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    輸出內容應如下所示:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   1 down                              0
    NODE-2                                   0 up                                1
    
    (2 rows affected)
    

    請注意,雖然失去 node-1,查詢還是執行成功,並顯示 node-2 現在是容錯移轉叢集目前的擁有者。

清除所用資源

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

刪除專案

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

如要刪除專案:

  1. In the Google 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.