Microsoft SQL Server Always On 容錯移轉叢集執行個體 (FCI) 可讓您在多個 Windows Server 容錯移轉叢集 (WSFC) 節點中執行單一 SQL Server 執行個體。在任何時間點,叢集節點都會主動代管 SQL 執行個體。如果發生故障,WSFC 會自動將執行個體資源的擁有權轉移至其他節點。
SQL Server FCI 需要將資料存放在共用儲存空間,以便在所有 WSFC 節點中存取。本指南說明如何部署 SQL Server 2019 容錯移轉叢集執行個體,並使用 Storage Spaces Direct (S2D) 做為共用儲存空間。S2D 提供以軟體為基礎的虛擬 SAN,可使用 Compute Engine VM 資料磁碟儲存 SQL 資料庫。
下圖說明部署作業:
實作超融合架構時,VM 執行個體 node-1 和 node-2 會做為 WSFC 節點,並代管共用儲存空間。第三個 VM 執行個體 witness 用於在容錯移轉情境中達到法定人數。這三個 VM 執行個體分布在三個可用區,並共用一個子網路。
用戶端會透過內部 TCP 負載平衡器與 SQL Server 執行個體通訊。這個負載平衡器會使用自訂健康狀態檢查,判斷目前是哪個 WSFC 節點代管 SQL 執行個體,並將流量轉送至該執行個體。
本文假設您已在 Google Cloud 上部署 Active Directory,且具備 SQL Server、Active Directory 和 Compute Engine 的基本知識。
目標
- 部署 WSFC,其中包含兩個 SQL Server VM 執行個體,以及做為檔案共用見證的第三個 VM 執行個體。
- 在 WSFC 上部署 SQL Server FCI。
- 模擬容錯移轉,確認叢集是否正常運作。
費用
本教學課程使用 Cloud de Confiance by S3NS的計費元件,包括:
使用 Pricing Calculator,根據您的預測用量來產生預估費用。
事前準備
如要按照這份指南完成操作,請準備下列項目:
- 至少有一個網域控制器的 Active Directory 網域。您可以使用 Managed Microsoft AD 建立 Active Directory 網域。或者,您也可以在 Compute Engine 上部署自訂 Active Directory 環境,並設定私人 DNS 轉送區域,將 DNS 查詢轉送至網域控制站。
- 有權將電腦加入網域,且可使用 RDP 登入的 Active Directory 使用者。如果您使用 Managed Microsoft AD,可以採用
setupadmin使用者。 - Cloud de Confiance 專案和虛擬私有雲,可連線至 Active Directory 網域控制站。
- 用於 WSFC VM 執行個體的子網路。
如要完成本指南,您也需要 Cloud de Confiance by S3NS 專案:
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
完成本教學課程後,您可以刪除建立的資源以避免繼續計費。詳情請參閱「清除所用資源」一節。
準備專案和網路
如要準備 Cloud de Confiance 專案和虛擬私有雲,以便部署 SQL Server FCI,請執行下列操作:
在 Cloud de Confiance 控制台中,按一下「啟用 Cloud Shell」
按鈕,開啟 Cloud Shell。
初始化下列變數:
VPC_NAME=
VPC_NAMESUBNET_NAME=SUBNET_NAME其中:
VPC_NAME:虛擬私有雲名稱SUBNET_NAME:子網路名稱
設定預設專案 ID:
gcloud config set project
PROJECT_ID將
PROJECT_ID替換為 Cloud de Confiance 專案 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 範圍的健康狀態檢查:
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 執行個體必須符合下列規定:
- 這些執行個體位於同一區域,因此可供內部 TCP 負載平衡器存取。
- 訪客代理程式已設定為使用 WSFC 模式。在這個模式下,客層代理程式會忽略內部負載平衡器的 IP 位址,並設定本機網路介面。這是必要行為,可避免在 WSFC 容錯移轉事件期間發生 IP 位址衝突。
您使用SQL Server 進階版映像檔,其中已預先安裝 SQL Server 2019。
如要提供決定性票數,並在容錯移轉情境中達到法定人數,請部署第三部 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 執行個體。在做為 S2D 和 WSFC 節點的兩個 VM 上,附加額外的資料磁碟,並將中繼資料鍵
enable-wsfc設為true,啟用 WSFC 模式:REGION=$(gcloud config get-value compute/region) PD_SIZE=50 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-2019-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-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-1-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-1-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-1-datadisk-4,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 $REGION-b \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-2019-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-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-2-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-2-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-2-datadisk-4,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 $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"
如要將 3 個 VM 執行個體加入 Active Directory,請針對每個 VM 執行個體執行下列操作:
查看 VM 的序列埠輸出內容,監控 VM 的初始化程序:
gcloud compute instances tail-serial-port-output
NAME將
NAME替換為 VM 執行個體名稱。等待幾分鐘,直到看到輸出內容
Instance setup finished, 然後按下 Ctrl+C 鍵。此時,VM 執行個體已可使用。使用遠端桌面連線至 VM,然後使用上一步建立的使用者名稱和密碼登入。
按一下滑鼠右鍵點選「開始」按鈕 (或按下 Win+X 鍵),然後點選「Windows PowerShell (系統管理員)」。
按一下「是」,確認提升權限提示。
將電腦加入 Active Directory 網域,然後重新啟動:
Add-Computer -Domain
DOMAIN -Restart將
DOMAIN替換為 Active Directory 網域的 DNS 名稱。等待約 1 分鐘,讓裝置完成重新啟動。
預留叢集 IP 位址
您現在已在虛擬私有雲網路中保留兩個靜態 IP 位址。這兩個地址的用途不同:
- 負載平衡器 IP:用戶端會使用這個 IP 位址連線至 SQL Server。
- 叢集 IP:這個 IP 位址僅供 WSFC 內部使用。
如要預留靜態 IP 位址,請執行下列操作:
為內部負載平衡器預留靜態 IP,並在名為
LOADBALANCER_ADDRESS的新環境變數中擷取位址:gcloud compute addresses create wsfc \ --subnet $SUBNET_NAME \ --region $(gcloud config get-value compute/region) LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \ --region $(gcloud config get-value compute/region) \ --format=value\(address\)) && \ echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
請記下 IP 位址,稍後會用到。
預留另一個靜態 IP 位址,做為叢集 IP:
gcloud compute addresses create wsfc-cluster \ --subnet $SUBNET_NAME \ --region $(gcloud config get-value compute/region) && \ CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \ --region $(gcloud config get-value compute/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 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
現在可以建立容錯移轉叢集:
node-1使用遠端桌面連線。 使用網域使用者帳戶登入。- 按一下滑鼠右鍵點選「開始」按鈕 (或按下 Win+X 鍵),然後點選「Windows PowerShell (系統管理員)」。
- 按一下「是」,確認提升權限提示。
建立新叢集:
New-Cluster ` -Name windows-fci ` -Node node-1,node-2 ` -NoStorage ` -StaticAddress
CLUSTER_ADDRESS將
CLUSTER_ADDRESS替換為先前建立的叢集 IP 位址。這個指令會在 Active Directory 網域中建立電腦帳戶
windows-fci。返回
witness的 PowerShell 工作階段,授予電腦帳戶windows-fci存取檔案共用的權限:icacls C:\QWitness\ /grant 'windows-fci$:(OI)(CI)(M)' Grant-SmbShareAccess ` -Name QWitness ` -AccountName 'windows-fci$' ` -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」群組,以便將電腦加入網域:
Install-WindowsFeature RSAT-ADDS Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members windows-fci$
啟用儲存空間直接存取功能
現在請啟用 S2D,並建立叢集共用磁碟區,合併您先前建立的三個永久磁碟:
- 返回
node-1的 PowerShell 工作階段。 啟用 S2D:
Enable-ClusterStorageSpacesDirect
如要提升磁碟效能,除了標準 SSD 永久磁碟,您也可以在 S2D 節點中新增 SCSI本機 SSD。本機 SSD 可做為 S2D 快取層。將容量磁碟 (在本例中為 SSD 永久磁碟) 數量設為本機 SSD 數量的倍數。如要啟用 S2D 並使用快取,請改為執行下列指令:
Enable-ClusterStorageSpacesDirect -CacheDeviceModel "EphemeralDisk"
系統提示您進行確認時,接受預設值。您可能會看到一些可以直接忽略的警告:
WARNING: 2021/04/08-13:12:26.159 Node node-1: No disks found to be used for cache WARNING: 2021/04/08-13:12:26.159 Node node-2: No disks found to be used for cache
如有需要,請將叢集共用磁碟區 (CSV) 的記憶體內快取設為 2048 MB,以提升讀取輸送量:
(Get-Cluster).BlockCacheSize = 2048
建立新的磁碟區,使用 ReFS 的叢集共用磁碟區版本和 64 KB 的叢集大小:
New-Volume ` -StoragePoolFriendlyName S2D* ` -FriendlyName FciVolume ` -FileSystem CSVFS_ReFS ` -UseMaximumSize ` -AllocationUnitSize 65536
測試儲存空間集區容錯移轉
現在可以視需要測試儲存空間集區容錯移轉是否正常運作:
node-2使用遠端桌面連線。 使用網域使用者帳戶登入。- 在「開始」按鈕上按一下滑鼠右鍵 (或按下 Win+X 鍵),然後選取「執行」。
- 輸入
cluadmin.msc,然後選取「確定」。 在左側視窗窗格中,依序前往「容錯移轉叢集管理員」>「windows-fci」>「儲存空間」>「集區」。
您應該會看到名為「Cluster Pool 1」的集區,且「Owner node」(擁有者節點) 設為
node-1。返回 Cloud Shell 並重設
node-1VM,模擬容錯移轉:gcloud compute instances reset node-1 --zone $REGION-a
返回
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,然後選取「確定」。 在左側視窗窗格中,依序前往「容錯移轉叢集管理員」>「windows-fci」。
確認「目前的代管伺服器」設為
node-1。如果目前的主機伺服器設為
node-2,請在左側視窗窗格中,對 windows-fci 按一下滑鼠右鍵,然後依序選取「More actions」(更多動作) >「Move core cluster resources」(移動核心叢集資源) >「Select node…」(選取節點…) >「node-1」,並按一下「OK」(確定)。在左側視窗窗格中,依序前往「容錯移轉叢集管理員」>「windows-fci」>「儲存空間」>「集區」。
確認「Cluster Pool 1」的擁有者節點已設為
node-1。如果擁有者節點設為
node-2,請在集區上按一下滑鼠右鍵,依序選取「Move」>「Select Node」>「node-1」,然後按一下「OK」。
現在請在 node-1 上建立新的 SQL Server 容錯移轉叢集安裝作業:
- 按一下滑鼠右鍵點選「開始」按鈕 (或按下 Win+X 鍵),然後點選「Windows PowerShell (系統管理員)」。
- 按一下「是」,確認提升權限提示。
為 SQL Server 和 SQL 代理程式建立網域使用者帳戶,並指派密碼:
Active Directory
$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
Managed Microsoft AD
$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 ` -Path "OU=Cloud,DOMAIN"
將
DOMAIN替換為網域的識別名稱,例如DC=example,DC=org。啟動 SQL Server 設定:
& c:\sql_server_install\setup.exe
在左側選單中選取「安裝」。
選取「New SQL Server failover cluster installation」(安裝新的 SQL Server 容錯移轉叢集)
在「Microsoft Update」頁面中,選取「下一步」開始安裝。
在「Install Failover Cluster Rules」(安裝容錯移轉叢集規則) 頁面中,您會看到「MSCS cluster verification warnings」(MSCS 叢集驗證警告) 和「Windows firewall」(Windows 防火牆) 警告。您可以忽略這些警告,然後選取「下一步」。
在「Product Key」(產品金鑰) 頁面中,保留預設值並選取「Next」(下一步)。
在「授權條款」頁面中詳閱條款,如果接受,請選取「下一步」。
在「功能選取」頁面中,選取「資料庫引擎服務」,然後選取「下一步」。
在「執行個體設定」頁面中,輸入網路名稱和具名執行個體的
sql,然後選取「下一步」。在「叢集資源群組」頁面中,保留預設值並選取「下一步」。
在「Cluster Disk Selection」(叢集磁碟選取) 頁面中,啟用「Cluster Virtual Disk (FciVolume)」(叢集虛擬磁碟 (FciVolume)),並停用所有其他磁碟。選取「下一步」。
在「叢集網路設定」頁面中,設定下列設定,然後選取「下一步」:
- DHCP:清除
- IP 位址:輸入內部負載平衡器的 IP 位址。
在「伺服器設定」頁面,為「SQL Server Agent」和「SQL Server Database Engine」設定下列項目:
- 帳戶名稱:
DOMAIN\sql_server,其中DOMAIN是 Active Directory 網域的 NetBIOS 名稱 - 密碼:輸入先前建立的密碼
- 帳戶名稱:
選取「對照」分頁,然後選取要使用的對照。 然後點按「下一步」。
在「Database Engine Configuration」頁面中,選取「Add current user」,將目前使用者指定為 SQL Server 管理員。然後選取「下一步」。
在「準備安裝」頁面檢查設定,然後選取「安裝」。
安裝完成後,選取「關閉」。
您的 Active Directory 網域現在包含代表 SQL Server 執行個體的電腦帳戶 sql,以及指向內部負載平衡器 IP 位址的對應 DNS 項目。
現在,請將 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 Agent」(SQL Server 代理程式) 和「SQL Server Database Engine」(SQL Server 資料庫引擎) 輸入先前建立的密碼。然後選取「下一步」。
在「準備安裝」頁面檢查設定,然後選取「安裝」。
安裝完成後,選取「關閉」。
設定健康狀態檢查
最後一個步驟是設定叢集,公開內部負載平衡器可用的健康狀態檢查端點:
- 返回
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 $REGION-a gcloud compute instance-groups unmanaged add-instances wsfc-group-1 --zone $REGION-a \ --instances node-1 gcloud compute instance-groups unmanaged create wsfc-group-2 --zone $REGION-b gcloud compute instance-groups unmanaged add-instances wsfc-group-2 --zone $REGION-b \ --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,也就是您先前為 SQL Server IP 位址資源設定的ProbePort。建立後端服務並新增兩個執行個體群組:
gcloud compute backend-services create wsfc-backend \ --load-balancing-scheme internal \ --region $(gcloud config get-value compute/region) \ --health-checks wsfc-healthcheck \ --protocol tcp gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-1 \ --instance-group-zone $REGION-a \ --region $REGION gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-2 \ --instance-group-zone $REGION-b \ --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
測試容錯移轉叢集
您已完成容錯移轉叢集的安裝作業,但仍須測試叢集是否正常運作。
準備用戶端
建立新的 VM 執行個體,用於連線至容錯移轉叢集:
- 返回現有的 Cloud Shell 工作階段。
建立新的 VM 執行個體:
gcloud compute instances create sqlclient \ --zone $REGION-a \ --machine-type n2-standard-2 \ --subnet $SUBNET_NAME \ --image-family sql-ent-2019-win-2022 \ --image-project windows-sql-cloud \ --boot-disk-size 50 \ --boot-disk-type pd-ssd
查看 VM 的序列埠輸出內容,監控初始化程序:
gcloud compute instances tail-serial-port-output sqlclient
等待幾分鐘,直到看到輸出內容
Instance setup finished,然後按下 Ctrl+C。此時,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」。
使用 TCP/IP 和 DNS 名稱
sql連線至 SQL Server 叢集,並查詢dm_os_cluster_nodes資料表:& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S tcp: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 容錯移轉叢集資源的現任擁有者。返回 Cloud Shell,並關閉 node-1 VM,測試容錯移轉情境。
gcloud compute instances stop node-1 --zone $REGION-a
重複查詢:
& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S tcp: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現在是容錯移轉叢集的現任擁有者。
限制
- S2D 僅支援 Windows Server 2016 以上版本。
- 使用 S2D 時,每個磁碟只會包含整體資料的部分檢視畫面。因此,光是建立永久磁碟的快照,並不足以備份資料。請改用原生 SQL 備份。
清除所用資源
完成教學課程後,您可以清除所建立的資源,這樣資源就不會繼續使用配額,也不會產生費用。下列各節將說明如何刪除或關閉這些資源。
刪除專案
如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。
刪除專案的方法如下:
- 前往 Cloud de Confiance 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。