Microsoft SQL Server 容錯移轉叢集執行個體 (FCI) 是部署於多個 Windows Server 容錯移轉叢集 (WSFC) 節點的單一 SQL Server 執行個體。在任何時間點,其中一個叢集節點都會主動代管 SQL 例項。萬一發生故障,WSFC 會自動將執行個體資源的擁有權轉移至其他節點。
SQL Server FCI 要求資料必須位於共用儲存空間,以便在所有 WSFC 節點上存取。本指南說明如何部署 SQL Server 2022 容錯移轉叢集執行個體,並在多寫入端模式下使用 Hyperdisk 平衡高可用性功能,做為區域 (多區域) 共用儲存空間。
- 內部負載平衡器 (請參閱「執行 Windows Server 容錯移轉叢集」)
- 分散式網路名稱 (DNN) (請參閱「為容錯叢集執行個體設定 DNN」)
本文假設您已在 Google Cloud 上部署 Active Directory,且具備 SQL Server、Active Directory 和 Compute Engine 的基本知識。
目標
- 部署 WSFC,其中包含兩個 SQL Server VM 執行個體,以及用於擔任檔案共用區見證的第三個 VM 執行個體。
- 在 WSFC 上部署 SQL Server FCI。
- 設定負載平衡器或分散式網路名稱 (DNN),將流量路由至 SQL Server 的可用性群組。
- 模擬容錯移轉,驗證叢集是否正常運作。
費用
本教學課程使用 Google Cloud的計費元件,包括:
- Compute Engine
- Cloud Load Balancing (如果採用 DNN 設定,則不必使用)
使用Pricing Calculator 可根據您的預測使用量來產生預估費用。
事前準備
如要完成本指南,您需要:
- 至少有一個網域控制器的 Active Directory 網域。您可以使用 Managed Microsoft AD 建立 Active Directory 網域。或者,您也可以在 Compute Engine 上部署自訂 Active Directory 環境,並設定私人 DNS 轉送區域,將 DNS 查詢轉送至網域控制站。
- 具備將電腦加入網域權限的 Active Directory 使用者,且可使用 RDP 登入。如果您使用的是受管理的 Microsoft AD,可以使用
setupadmin
使用者。 - 具備與 Active Directory 網域控制站連線功能的 Google Cloud 專案和 VPC。
- 用於 WSFC VM 執行個體的子網路。
請務必查看多寫入模式下 Hyperdisk 磁碟區的限制,並選取區域,以便使用多寫入模式的 Hyperdisk 平衡高可用性磁碟。
如要完成指南,您還需要一個 Google Cloud 專案:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
完成本教學課程後,您可以刪除已建立的資源,避免繼續產生費用。
準備專案和網路
如要為 SQL Server FCI 部署作業準備 Google Cloud 專案和 VPC,請執行下列操作:
在 Google Cloud 控制台中,按一下「啟用 Cloud Shell」
按鈕,即可開啟 Cloud Shell。
初始化下列變數:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
其中:
VPC_NAME
:虛擬私有雲名稱SUBNET_NAME
:子網路名稱
設定預設的專案 ID:
gcloud config set project
PROJECT_ID
將
PROJECT_ID
替換為 Google Cloud 專案的 ID。設定預設區域:
gcloud config set compute/region
REGION
將
REGION
替換為您要部署的區域 ID。
建立防火牆規則
如要讓用戶端連線至 SQL Server、允許 WSFC 節點之間的通訊,以及讓負載平衡器執行健康狀態檢查,您需要建立多個防火牆規則。為簡化這些防火牆規則的建立程序,您可以使用網路標記:
- 2 個 WSFC 節點會加上
wsfc-node
標記。 - 所有伺服器 (包括見證伺服器) 都會加上
wsfc
標記。
建立使用這些網路標記的防火牆規則:
- 返回現有的 Cloud Shell 工作階段。
為 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
建立防火牆規則,允許來自 Google Cloud 探測器 IP 範圍的健康狀態檢查:(如果採用 DNN 設定,則不必建立防火牆規則)
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 執行個體。在任何時間點,只有其中一個 VM 會做為主動 FCI 節點,而其他節點則做為容錯節點。這兩個 VM 執行個體必須符合下列條件:
- 已安裝 Windows Server 容錯移轉叢集和 SQL Server。
- 已啟用 Compute Engine WSFC 支援。
您使用預先安裝 SQL Server 2022 的 SQL Server 進階映像檔。
如要針對容錯移轉情境提供關鍵票並達成仲裁,您必須部署第三個 VM,做為網域控制站和檔案共用見證。
返回現有的 Cloud Shell 工作階段。
為 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 EOF
建立 VM 執行個體,並將中繼資料鍵
enable-wsfc
設為true
,啟用 WSFC 節點上的 Windows Server 容錯移轉叢集代理程式:MACHINE_TYPE=c3-standard-8 REGION=$(gcloud config get-value compute/region) ZONE_1=$REGION-a ZONE_2=$REGION-b gcloud compute instances create node-1 \ --zone $ZONE_1 \ --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 hyperdisk-balanced \ --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 $ZONE_2 \ --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 hyperdisk-balanced \ --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 \ --machine-type n4-standard-2 \ --subnet $SUBNET_NAME \ --image-family=windows-2022 \ --image-project=windows-cloud \ --tags wsfc \ --boot-disk-size 50 \ --boot-disk-type hyperdisk-balanced \ --zone $ZONE_1 \ --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
如要將 3 個 VM 執行個體加入 Active Directory,請針對每個 VM 執行個體執行下列操作:
查看 VM 的序列埠輸出內容,監控 VM 的初始化程序:
gcloud compute instances tail-serial-port-output
NAME
將
NAME
替換為 VM 執行個體的名稱。請等待約 3 分鐘,直到您看到輸出
Instance setup finished
,然後按下 Ctrl+C。此時,VM 執行個體已可供使用。為 VM 執行個體建立使用者名稱和密碼
使用遠端桌面連線至 VM,然後使用上一個步驟建立的使用者名稱和密碼登入。
在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後按一下「Windows PowerShell (系統管理員)」。
按一下「是」,確認權限提升提示。
將電腦加入 Active Directory 網域並重新啟動:
Add-Computer -Domain
DOMAIN -Restart
將
DOMAIN
替換為 Active Directory 網域的 DNS 名稱。請等待約 1 分鐘,讓重新啟動程序完成。
在多寫入端模式下建立 Hyperdisk 平衡高可用性磁碟
您現在可以以多重寫入模式建立 Hyperdisk 平衡高可用性磁碟,並將磁碟附加至 WSFC 節點。Hyperdisk 的其中一個優點,就是能夠根據應用程式需求設定 IOPS 和處理量。詳情請參閱 Hyperdisk 說明文件。
- 返回現有的 Cloud Shell 工作階段。
建立 Hyperdisk 平衡高可用性磁碟:
SIZE=200 gcloud compute disks create multiwriter-datadisk-1 \ --size $SIZE \ --provisioned-throughput 200 \ --provisioned-iops 5000 \ --access-mode READ_WRITE_MANY \ --type hyperdisk-balanced-high-availability \ --replica-zones $ZONE_1,$ZONE_2
將磁碟連接至
node-1
:gcloud compute instances attach-disk node-1 \ --disk multiwriter-datadisk-1 \ --zone $ZONE_1 \ --disk-scope=regional
將磁碟連接至
node-2
:gcloud compute instances attach-disk node-2 \ --disk multiwriter-datadisk-1 \ --zone $ZONE_2 \ --disk-scope=regional
保留叢集 IP 位址
您現在已在 VPC 中保留兩個靜態 IP 位址。一個 IP 位址用於 WSFC 叢集 IP 位址,另一個則由內部負載平衡器使用。
為內部負載平衡器保留靜態 IP,並在名為
LOADBALANCER_ADDRESS
的新環境變數中擷取該位址:gcloud compute addresses create wsfc \ --region $REGION \ --subnet $SUBNET_NAME LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \ --region $REGION \ --format=value\(address\)) && \ echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
請記下 IP 位址,後續步驟會用到。
預留另一個用於叢集 IP 的靜態 IP 位址:(使用 DNN 設定時不必這樣做)
gcloud compute addresses create wsfc-cluster \ --subnet $SUBNET_NAME \ --region $REGION && \ CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \ --region $REGION \ --format=value\(address\)) && \ echo "Cluster IP: $CLUSTER_ADDRESS"
請記下 IP 位址,後續步驟會用到。
專案和 VPC 現已準備好部署 WSFC 和 SQL Server。
建立見證檔案共用
如要讓 witness
做為檔案共用見證,請建立檔案共用,並授予您和兩個 WSFC 節點的檔案共用存取權:
- 使用遠端桌面連線至
witness
。使用您的網域使用者帳戶登入。 - 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後按一下「Windows PowerShell (系統管理員)」。
- 按一下「是」,確認權限提升提示。
建立見證資料夾並共用該資料夾:
New-Item 'C:\QWitness' -type directory New-SmbShare ` -Name QWitness ` -Path 'C:\QWitness' ` -Description 'SQL File Share Witness' ` -FullAccess $env:username,node-1$,node-2$ Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-1$' -AccessRight Full -Force Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-2$' -AccessRight Full -Force
部署容錯移轉叢集
您現在可以使用 VM 執行個體部署 WSFC 和 SQL Server。
部署 WSFC
您現在可以建立容錯移轉叢集:
- 使用遠端桌面連線至
node-1
。使用您的網域使用者帳戶登入。 - 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後按一下「Windows PowerShell (系統管理員)」。
- 按一下「是」,確認權限提升提示。
建立新叢集:
- 負載平衡器設定
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -StaticAddress
CLUSTER_ADDRESS
將
CLUSTER_ADDRESS
替換為您先前建立的叢集 IP 位址。- 針對 DNN 設定
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -ManagementPointNetworkType Distributed
返回
witness
的 PowerShell 工作階段,並授予叢集的虛擬電腦物件檔案共用區存取權:icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)' Grant-SmbShareAccess ` -Name QWitness ` -AccountName 'sql-cluster$' ` -AccessRight Full ` -Force
返回
node-1
的 PowerShell 工作階段,並將叢集設為使用witness
上的檔案共用資料夾做為叢集法定數:Set-ClusterQuorum -FileShareWitness \\witness\QWitness
確認叢集是否已成功建立:
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 外掛程式,並查看叢集的健康狀態。如果您使用受管理的 AD,請將 WSFC 使用的電腦帳戶新增至「Cloud Service Domain Join Accounts」群組,讓 WSFC 能夠將電腦加入網域:
Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members sql-cluster$
新增叢集磁碟
您現在可以初始化先前建立的共用 Hyperdisk 平衡高可用性磁碟,並將其新增至叢集:
- 返回
node-1
的 PowerShell 工作階段。 初始化 Hyperdisk 平衡高可用性磁碟:
$NodeName = [System.Net.Dns]::GetHostName() $ClusterDisks = Get-PhysicalDisk -CanPool $True | Where-Object { ($_ | Get-PhysicalDiskStorageNodeView | Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') } Initialize-Disk -Number $ClusterDisks[0].DeviceId
在磁碟上建立使用 NTFS 檔案系統的新分區,並以 64 KB 區塊大小格式化磁碟:
New-Partition -DiskNumber $ClusterDisks[0].DeviceId ` -UseMaximumSize -DriveLetter D | Format-Volume ` -FileSystem NTFS -newfilesystemlabel DataDisk -AllocationUnitSize 65536
將磁碟新增至叢集:
Get-ClusterAvailableDisk | Add-ClusterDisk
由於底層 Hyperdisk 平衡高可用性磁碟已附加至兩個 VM 執行個體,因此磁碟會自動顯示在
node-2
上。開啟 容錯移轉叢集管理員 MMC 嵌入式管理單元:
cluadmin.msc
測試磁碟容錯移轉
您現在可以選擇測試磁碟容錯功能是否正常運作:
- 使用遠端桌面連線至
node-2
。使用您的網域使用者帳戶登入。 - 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後選取「執行」
- 輸入
cluadmin.msc
,然後選取「確定」。 在左側視窗窗格中,依序前往「Failover Cluster Manager」>「sql-cluster」>「Storage」>「Disks」。
您應該會看到名為「Cluster Disk 1」的磁碟,且「Owner node」已設為
node-1
。返回 Cloud Shell,並重設
node-1
VM 來模擬容錯移轉:gcloud compute instances reset node-1
返回
node-2
上的容錯移轉叢集管理員。按下 F5 鍵重複重新整理畫面,觀察磁碟的狀態。
約 30 秒後,擁有者節點應會自動切換至
node-2
。
移除預設的 SQL Server 安裝
您現在可以從兩個節點中移除預設的 SQL Server 安裝作業,並改用新的 FCI 設定。
針對兩個 WSFC 節點 node-1
和 node-2
,執行下列步驟:
- 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後按一下「Windows PowerShell (系統管理員)」。
- 按一下「是」,確認權限提升提示。
移除預設的 SQL Server 執行個體:
C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
移除 Microsoft OLE 驅動程式:
Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
移除 Microsoft ODBC 驅動程式:
Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
重新啟動電腦:
Restart-Computer
請等待約 1 分鐘,讓重新啟動程序完成。
安裝 SQL Server FCI
安裝新的 FCI 設定前,請確認 node-1
是叢集中的有效節點:
- 使用遠端桌面重新連線至
node-1
,然後使用您的網域使用者登入。 - 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後選取「執行」
- 輸入
cluadmin.msc
,然後選取「確定」。 在左側窗格中,依序前往「容錯移轉叢集管理員」>「sql-cluster」。
確認目前的主機伺服器已設為
node-1
。如果目前主機伺服器已設為
node-2
,請在左側視窗窗格中按一下 sql-cluster 的滑鼠右鍵,然後依序選取「More actions」>「Move core cluster resources」>「Select node…」>「node-1」,然後按一下「OK」。在左側窗格中,依序前往「容錯移轉叢集管理工具」>「sql-cluster」>「Storage」>「Disks」。
確認叢集磁碟 1 的擁有者節點已設為
node-1
。如果擁有者節點已設為
node-2
,請依序點選「移動可用儲存空間」>「選取節點... > node-1 從右側的「動作」選單 OK。
您現在可以在 node-1
上建立新的 SQL Server 容錯移轉叢集安裝:
- 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後按一下「Windows PowerShell (系統管理員)」。
- 按一下「是」,確認權限提升提示。
為 SQL Server 和 SQL 代理程式建立網域使用者帳戶,並指派密碼:
$Credential = Get-Credential -UserName sql_server -Message 'Enter password' New-ADUser ` -Name "sql_server" ` -Description "SQL Agent and SQL Admin account." ` -AccountPassword $Credential.Password ` -Enabled $true -PasswordNeverExpires $true
開始設定 SQL Server:
& c:\sql_server_install\setup.exe
在左側選單中,選取「安裝」。
選取「新 SQL Server 容錯移轉叢集安裝作業」
在「Edition」頁面上,勾選「I have a SQL Server license only」,然後選取「Next」。
在「授權條款」頁面中詳閱條款,如果同意,請選取「下一步」。
在「Microsoft Update」頁面上,選取「Next」開始安裝。
在「Install Failover Cluster Rules」頁面中,您會看到「MSCS cluster verification warnings」和「Windows firewall」警告。您可以忽略這些警告,然後選取「Next」。
在「Feature Selection」頁面上,選取「Database Engine Services」,然後選取「Next」。
在「Instance Configuration」頁面中,輸入聯播網名稱
sql
,然後選取「Next」。在「叢集資源群組」頁面中,保留預設設定,然後選取「Next」。
在「Cluster Disk Selection」(叢集磁碟選取) 頁面上,選取「Cluster Disk 1」(叢集磁碟 1) 和「Next」(下一步)。
在「Cluster Network Configuration」頁面上設定下列設定,然後選取「Next」:
- DHCP:清除
- IP 位址:輸入內部負載平衡器的 IP 位址。
在「伺服器組態」頁面中,為 SQL Server 代理程式和 SQL Server 資料庫引擎設定下列設定:
- 帳戶名稱:
DOMAIN\sql_server
,其中DOMAIN
是 Active Directory 網域的 NetBIOS 名稱 - 密碼:輸入先前建立的密碼
- 帳戶名稱:
選取「排序」分頁標籤,然後選取要使用的排序方式。然後點選「下一步」。
在「資料庫引擎設定」頁面中,選取「新增目前使用者」,將目前使用者指定為 SQL Server 管理員。然後選取「下一步」。
在「Ready to Install」(準備安裝)頁面上,檢查設定,然後選取「Install」(安裝)。
安裝完成後,請選取「關閉」。
接著將 node-2
新增至 SQL Server 容錯移轉叢集:
- 使用遠端桌面連線至
node-2
,然後使用您的網域使用者登入。 - 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後按一下「Windows PowerShell (系統管理員)」。
- 按一下「是」,確認權限提升提示。
開始設定 SQL Server:
& c:\sql_server_install\setup.exe
在左側選單中,選取「安裝」。
選取「Add node to a SQL Server failover cluster」(將節點新增至 SQL Server 容錯移轉叢集)。
按照安裝精靈的操作說明進行,並接受預設設定,直到看到「服務帳戶」頁面為止。
在「Service Accounts」頁面中,輸入您先前為 SQL Server 代理程式和 SQL Server 資料庫引擎建立的密碼。然後選取「下一步」。
在「Ready to Install」(準備安裝)頁面上,檢查設定,然後選取「Install」(安裝)。
安裝完成後,請選取「關閉」。
設定健康狀態檢查
最後,請設定叢集,公開可供內部負載平衡器使用的健康狀態檢查端點:
- 返回
node-2
上的 PowerShell 工作階段 使用負載平衡器的 IP 位址初始化變數。
$LoadBalancerIP = '
IP_ADDRESS
'將
IP_ADDRESS
替換為您先前保留的wsfc
位址 IP 位址。設定容錯移轉叢集,回應健康狀態檢查服務:
$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; }
重新啟動叢集資源:
$SqlIpAddress | Stop-ClusterResource $SqlIpAddress | Start-ClusterResource
重新啟動叢集群組:
$SqlGroup | Stop-ClusterGroup $SqlGroup | Start-ClusterGroup
建立內部負載平衡器
為提供單一端點給 SQL Server 用戶端,您現在要部署內部負載平衡器。負載平衡器會使用健康狀態檢查,確保流量會導向 WSFC 的有效節點。
- 返回現有的 Cloud Shell 工作階段。
建立非代管執行個體群組,並將兩個節點新增至群組:
gcloud compute instance-groups unmanaged create wsfc-group-1 \ --zone $ZONE_1 gcloud compute instance-groups unmanaged add-instances wsfc-group-1 \ --zone $ZONE_1 \ --instances node-1 gcloud compute instance-groups unmanaged create wsfc-group-2 \ --zone $ZONE_2 gcloud compute instance-groups unmanaged add-instances wsfc-group-2 \ --zone $ZONE_2 \ --instances node-2
建立健康狀態檢查,供負載平衡器用來判斷哪個是有效節點。
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
的通訊埠。建立後端服務並新增執行個體群組:
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-1 \ --instance-group-zone $ZONE_1 \ --region $REGION gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-2 \ --instance-group-zone $ZONE_2 \ --region $REGION
建立內部負載平衡器:
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
設定 DNN 資源和 DNN DNS 名稱
與內部負載平衡器類似,DNN 資源可做為 SQL Server 用戶端的單一閘道。在容錯移轉期間,叢集會將流量無縫轉送至有效的 SQL Server FCI 節點。用戶端會透過 DNS 名稱連線至 SQL Server FCI。
- 返回
node-1
的 PowerShell 工作階段。 執行指令碼以建立 DNN 資源
$DNNResourceName='fci-dnn' $DNN_DNSName='fcidnn' # create the DNN resource Add-ClusterResource -Name $DNNResourceName -ResourceType 'Distributed Network Name' -Group 'SQL Server (MSSQLSERVER)' # set the DNS name of the DNN resource Get-ClusterResource -Name $DNNResourceName | Set-ClusterParameter -Name DnsName -Value $DNN_DNSName # start the DNN resource Start-ClusterResource -Name $DNNResourceName
重新啟動
node-1
和node-2
測試容錯移轉叢集
容錯移轉叢集的安裝作業已完成,但您仍須測試叢集是否正常運作。
準備用戶端
建立新的 VM 執行個體,以便連線至容錯移轉叢集:
- 返回現有的 Cloud Shell 工作階段。
建立新的 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
查看 VM 的序列埠輸出內容,監控 VM 的初始化程序:
gcloud compute instances tail-serial-port-output sqlclient
請等候約 3 分鐘,直到看到輸出 Instance 設定完成,然後按下 Ctrl+C。此時,VM 執行個體已可供使用。
為 VM 執行個體建立使用者名稱和密碼
使用遠端桌面連線至 VM,然後使用上一個步驟建立的使用者名稱和密碼登入。
在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後按一下「Windows PowerShell (系統管理員)」。
按一下「是」,確認權限提升提示。
將電腦加入 Active Directory 網域:
Add-Computer -Domain
DOMAIN
將
DOMAIN
替換為 Active Directory 網域的 DNS 名稱。重新啟動電腦:
Restart-Computer
請等待約 1 分鐘,讓重新啟動程序完成。
執行測試
使用 sqlclient
VM 測試是否能連線至容錯移轉叢集,並驗證容錯移轉功能是否正常運作:
- 使用遠端桌面連線至
sqlclient
,然後使用您的網域使用者登入。 - 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win + X 鍵),然後按一下「Windows PowerShell」。
使用 SQL Server 叢集的網路名稱
sql
連線,並查詢dm_os_cluster_nodes
資料表:& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S
SQL_SERVER_NAME
-E -Q "SELECT * FROM sys.dm_os_cluster_nodes"將
SQL_SERVER_NAME
替換為 負載平衡器設定的sql
,或 DNN 設定的fcidnn
。輸出內容應如下所示:
NodeName status status_description is_current_owner ------------------------------ ----------- ------------------ ---------------- NODE-1 0 up 1 NODE-2 0 up 0 (2 rows affected)
請注意,
node-1
是 SQL Server 容錯移轉叢集資源目前的擁有者。返回 Cloud Shell,關閉 node-1 VM 來測試容錯移轉情境。
gcloud compute instances stop node-1
重複執行查詢:
& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S
SQL_SERVER_NAME
-E -Q "SELECT * FROM sys.dm_os_cluster_nodes"將
SQL_SERVER_NAME
替換為 負載平衡器設定的sql
,或 DNS 設定的fcidnn
。輸出內容應如下所示:
NodeName status status_description is_current_owner ------------------------------ ----------- ------------------ ---------------- NODE-1 1 down 0 NODE-2 0 up 1 (2 rows affected)
請注意,雖然失去
node-1
,查詢還是執行成功,並顯示node-2
現在是容錯移轉叢集目前的擁有者。
清除所用資源
完成教學課程後,您可以清除所建立的資源,這樣資源就不會占用配額並產生費用。下列各節將說明如何刪除或關閉這些資源。
刪除專案
如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。
如要刪除專案:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
後續步驟
- 進一步瞭解如何在多重寫入模式下共用磁碟。
- 瞭解如何設定使用儲存空間直接存取的 SQL Server 容錯移轉叢集執行個體。