Share via


部署叢集集合

適用於: Windows Server 2019

本文提供如何使用 PowerShell 為 Windows Server 容錯移轉叢集部署叢集集合的資訊。 叢集集合是多個容錯移轉叢集的一個群組。 您可以使用叢集集合,依據重要順序增加單一軟體定義資料中心 (SDDC) 雲端中的伺服器節點數目。

叢集集合已經過測試並支援總計最多 64 個叢集節點。 然而,叢集集合可以根據更大的限制調整規模,而且不會因限制而硬式編碼。

優點

叢集集合提供下列優點:

  • 將多個較小的叢集結合成單一大型網狀架構,同時將軟體錯誤界限保持在單一叢集,即可為執行高可用性虛擬機器 (VM) 大幅提升支援的 SDDC 雲端規模。 您可以輕鬆地跨叢集集合移轉 VM。

  • 提升復原能力。 在叢集集合中擁有四個 4 節點的叢集,可提供比單一 16 節點叢集更好的復原能力,因為多個計算節點可以關閉,同時生產環境保持不變。

  • 容錯移轉叢集生命週期的管理,包括上線和淘汰叢集,而不會影響租用戶 VM 可用性。

  • 跨個別叢集的 VM 彈性並呈現統一儲存體命名空間。

  • 在超融合環境中輕鬆變更計算與儲存體工作負載比例。

  • 在初始 VM 放置和後續移轉中,受益於跨個別叢集的類 Azure 容錯網域和可用性設定組

  • 即使叢集節點之間的計算和儲存體硬體不同,仍可使用。

  • 叢集之間的 VM 即時移轉。

  • 跨多個叢集的類 Azure 可用性設定組和容錯網域。

  • 在叢集之間移動 SQL Server VM。

需求和限制

叢集集合有一些使用需求和限制:

  • 叢集集合中的所有成員叢集都必須位於相同的 Active Directory (AD) 樹系中。

  • 集合中的成員伺服器必須執行相同的作業系統版本。 虛擬機器無法在不同作業系統之間即時移轉。 您可以擁有由下列任一選項 (但不可有多個) 組成的叢集集合:

    • Windows Server 2019 容錯移轉叢集和 Windows Server 2019 容錯移轉叢集
    • Windows Server 2019 容錯移轉叢集和 Windows Server 2019 儲存空間直接存取
    • Windows Server 2019 儲存空間直接存取和 Windows Server 2019 儲存空間直接存取
  • 所有成員伺服器都需要相同的處理器硬體,才能在成員叢集之間進行即時移轉;否則,您必須在虛擬機器設定中選取 [CPU 處理器相容性]

  • 叢集集合 VM 必須以手動方式跨叢集進行即時移轉 - 它們無法自動容錯移轉。

  • 必須在成員叢集之間使用儲存體複本,以實現叢集失敗的儲存體復原能力。 使用儲存體複本時,請記住,命名空間儲存體 UNC 路徑不會在儲存體複本容錯移轉至複本目標叢集時自動變更。

  • 儲存空間直接存取不會在叢集集合中的成員叢集之間作用。 儲存空間直接存取反而會套用至單一叢集,且每個叢集都有自己的存放集區。

架構

下圖說明在高層級的叢集集合:

Diagram showing a cluster set.

以下提供所顯示每個元素的摘要:

管理叢集

管理叢集會託管高可用性管理平面,以及叢集集合的命名空間轉介向外延展檔案伺服器 (SOFS)。 管理叢集在邏輯上會與執行 VM 工作負載的個別成員叢集分離。 這會讓叢集集合管理平面從任何本機全叢集失敗復原,例如成員叢集失去電源。

叢集集合命名空間轉介 SOFS

叢集集合的命名空間會提供在管理叢集上執行的 SOFS 伺服器角色。 這與分散式檔案系統命名空間 (DFSN) 相似。 但不同於 DFSN,叢集集合命名空間轉介中繼資料會在所有叢集節點上自動填入,您完全不需要介入,因此儲存體存取路徑幾乎沒有效能負擔。 此輕量型轉介機制不會參與 I/O 路徑。

叢集集合命名空間轉介 SOFS 上的每個伺服器訊息區塊 (SMB) 轉介共用是類型 SimpleReferral。 此轉介可讓 SMB 用戶端存取在成員叢集 SOFS 上託管的目標 SMB 共用。 轉介會在每個用戶端節點上永久快取,而且叢集集合命名空間會視需要動態自動更新轉介。 即使在重新啟動期間,仍會持續在每個叢集集合節點中快取轉介資訊。

叢集集合主機

成員叢集之間的通訊會鬆散耦合,並由叢集集合主機 (CS-Master) 資源進行協調。 CS-Master 與其他叢集集合資源一樣都具有高可用性,並可從個別成員叢集失敗或管理叢集節點失敗復原。 CS-Master 透過叢集集合 WMI 提供者為所有叢集集合管理動作提供管理端點。

成員叢集

成員叢集會執行 VM 和儲存空間直接存取工作負載。 多個成員叢集會參與叢集集合部署,形成較大的 SDDC 雲端網狀架構。 成員叢集與管理叢集在兩個主要方面不同:成員叢集會參與容錯網域和可用性設定組建構,而成員叢集會根據託管 VM 和儲存空間直接存取工作負載調整大小。 因此,跨成員叢集移動的 VM 不會於管理叢集上託管。

叢集集合背景工作

CS-Master 會與成員叢集上的叢集資源互動,稱為叢集集合背景工作 (CS-Worker)。 CS-Worker 會回應 CS-Master 的要求,包括 VM 放置和資源清查。 每個成員叢集都有一個 CS-Worker 執行個體。

容錯網域

容錯網域是一組可能同時失敗的硬體和軟體。 雖然您可以將一或多個叢集共同指定為容錯網域,但每個節點都可以參與可用性設定組中的容錯網域。 容錯網域界限是以資料中心拓撲、網路架構和其他考量為基礎。

可用性設定組

可用性設定組可用於藉由工作負載分組和部署,設定跨容錯網域所需的叢集工作負載備援。 對於兩層式應用程式,您應在每一層的可用性設定組中至少設定兩個 VM,藉以確保當可用性設定組中的容錯網域關閉時,您的應用程式在每一層中至少有一個 VM 託管於不同的容錯網域上。

建立叢集集合

在下列範例工作流程中使用 PowerShell,以使用兩個叢集建立叢集集合。 此處的叢集集合名稱為 CSMASTER

叢集名稱 基礎結構 SOFS 名稱
SET-CLUSTER SOFS-CLUSTERSET
CLUSTER1 SOFS-CLUSTER1
CLUSTER2 SOFS-CLUSTER2
  1. 使用執行 Windows Server 2022 或 Windows Server 2019 的管理用戶端電腦。

  2. 在管理叢集伺服器上安裝容錯移轉叢集工具。

  3. 建立兩個叢集成員,每個叢集內至少兩個叢集共用磁碟區 (CSV)。

  4. 建立橫跨成員叢集的管理叢集 (實體或客體)。 這可確保即使可能的成員叢集失敗,仍可繼續提供叢集集合管理平面。

  5. 若要建立叢集集合:

    New-ClusterSet -Name CSMASTER -NamespaceRoot SOFS-CLUSTERSET -CimSession SET-CLUSTER
    

    注意

    如果您使用靜態 IP 位址,則必須在 New-ClusterSet 命令中包含 -StaticAddress x.x.x.x

  6. 若要將叢集成員新增至叢集集合:

    Add-ClusterSetMember -ClusterName CLUSTER1 -CimSession CSMASTER -InfraSOFSName SOFS-CLUSTER1
    Add-ClusterSetMember -ClusterName CLUSTER2 -CimSession CSMASTER -InfraSOFSName SOFS-CLUSTER2
    
  7. 若要列舉叢集集合中的所有成員叢集:

    Get-ClusterSetMember -CimSession CSMASTER
    
  8. 若要列舉叢集集合中的所有成員叢集,包括管理叢集節點:

    Get-ClusterSet -CimSession CSMASTER | Get-Cluster | Get-ClusterNode
    
  9. 若要列出所有成員叢集中的所有伺服器節點:

    Get-ClusterSetNode -CimSession CSMASTER
    
  10. 若要列出叢集的所有資源群組:

    Get-ClusterSet -CimSession CSMASTER | Get-Cluster | Get-ClusterGroup
    
  11. 若要驗證叢集集合包含每個叢集成員 CSV 磁碟區基礎結構 SOFS 上的一個 SMB 共用 (ScopeName 為基礎結構檔案伺服器名稱):

    Get-SmbShare -CimSession CSMASTER
    
  12. 檢閱叢集集合、管理集合和每個叢集成員的叢集集合偵錯記錄檔:

    Get-ClusterSetLog -ClusterSetCimSession CSMASTER -IncludeClusterLog -IncludeManagementClusterLog -DestinationFolderPath <path>
    
  13. 設定所有叢集集合成員之間有限制委派的 Kerberos

  14. 在叢集集合的每個節點上,將跨叢集 VM 即時移轉驗證類型設定為 Kerberos:

    foreach($h in $hosts){ Set-VMHost -VirtualMachineMigrationAuthenticationType Kerberos -ComputerName $h }
    
  15. 將管理叢集新增至叢集集合中每個叢集成員伺服器節點上的本機系統管理員群組:

    foreach($h in $hosts){ Invoke-Command -ComputerName $h -ScriptBlock {Net localgroup administrators /add <management_cluster_name>$} }
    

建立叢集集合 VM

建立叢集集合後,下一個步驟是建立 VM。 您應事先執行下列檢查:

  • 檢查每個叢集伺服器節點上的可用記憶體
  • 檢查每個叢集伺服器節點上的可用磁碟空間
  • 檢查任何特定的 VM 儲存體在速度和效能方面的需求

Get-ClusterSetOptimalNodeForVM 命令會識別叢集集合中的最佳叢集和節點,然後將 VM 部署在上面。 在以下範例中,建立包含下列項目的新 VM:

  • 4 GB 可用
  • 一個虛擬處理器
  • 10% 最小 CPU 可用
# Identify the optimal node to create a new virtual machine
$memoryinMB=4096
$vpcount = 1
$targetnode = Get-ClusterSetOptimalNodeForVM -CimSession CSMASTER -VMMemory $memoryinMB -VMVirtualCoreCount $vpcount -VMCpuReservation 10
$secure_string_pwd = convertto-securestring "<password>" -asplaintext -force
$cred = new-object -typename System.Management.Automation.PSCredential ("<domain\account>",$secure_string_pwd)

# Deploy the virtual machine on the optimal node
Invoke-Command -ComputerName $targetnode.name -scriptblock { param([String]$storagepath); New-VM CSVM1 -MemoryStartupBytes 3072MB -path $storagepath -NewVHDPath CSVM.vhdx -NewVHDSizeBytes 4194304 } -ArgumentList @("\\SOFS-CLUSTER1\VOLUME1") -Credential $cred | Out-Null

Start-VM CSVM1 -ComputerName $targetnode.name | Out-Null
Get-VM CSVM1 -ComputerName $targetnode.name | fl State, ComputerName

完成時,會向您顯示部署 VM 的叢集節點。 在上述範例中,則會顯示為:

State         : Running
ComputerName  : 1-S2D2

如果記憶體、CPU 容量或磁碟空間不足以新增 VM,您將會收到下列錯誤:

Get-ClusterSetOptimalNodeForVM : A cluster node isn't available for this operation.

建立 VM 後,它會在指定的特定節點上的 Hyper-V 管理員中顯示。 若要將它新增為叢集集合 VM,並將其新增至叢集,請使用此命令:

Register-ClusterSetVM -CimSession CSMASTER -MemberName $targetnode.Member -VMName CSVM1

完成時,輸出為:

Id  VMName  State  MemberName  PSComputerName
--  ------  -----  ----------  --------------
 1  CSVM1     On   CLUSTER1    CSMASTER

如果您已使用現有的 VM 建立叢集,則必須向叢集集合註冊 VM。 若要一次註冊所有 VM,請使用:

Get-ClusterSetMember -Name CLUSTER3 -CimSession CSMASTER | Register-ClusterSetVM -RegisterAll -CimSession CSMASTER

接著請將 VM 路徑新增至叢集集命名空間。

例如,假設現有的叢集已新增至預先設定 VM 位於本機叢集共用磁碟區 (CSV) 的叢集集合。 VHDX 的路徑可能會類似 C:\ClusterStorage\Volume1\MYVM\Virtual Hard Disks\MYVM.vhdx1

由於 CSV 路徑採用單一成員叢集的本機設計,因此在 VM 即時移轉至成員叢集之後無法存取,並需要儲存體移轉。

在此範例中,會使用 Add-ClusterSetMember 將 CLUSTER3 新增至包含向外延展檔案伺服器 SOFS-CLUSTER3 的叢集集合。 若要移動 VM 設定和儲存體,命令為:

Move-VMStorage -DestinationStoragePath \\SOFS-CLUSTER3\Volume1 -Name MyVM

完成後,您可能會收到警告:

WARNING: There were issues updating the virtual machine configuration that may prevent the virtual machine from running. For more information view the report file below.
WARNING: Report file location: C:\Windows\Cluster\Reports\Update-ClusterVirtualMachineConfiguration '' on date at time.htm.

由於虛擬機器角色儲存體設定中沒有實體變更,因此可能會忽略此警告。 實際實體位置不會變更;只有設定路徑會變更。

如需 Move-VMStorage 的詳細資訊,請參閱 Move-VMStorage

即時移轉叢集集合內的 VM 包含下列動作:

Set-VMHost -UseAnyNetworkForMigration $true

例如,若要將叢集集合 VM 從 CLUSTER1 移至 CLUSTER3 上的 NODE2-CL3,命令可能會是:

Move-ClusterSetVM -CimSession CSMASTER -VMName CSVM1 -Node NODE2-CL3

由於 VM 的路徑仍會是 \\SOFS-CLUSTER1\VOLUME1,因此此命令不會移動 VM 儲存體或設定檔,而且也不需要。 已向基礎結構檔案伺服器共用路徑註冊 VM 後,磁碟機和 VM 就不需要位於與 VM 相同的節點上。

建立基礎結構向外延展檔案伺服器

叢集上有一個基礎結構 SOFS 叢集角色。 向 Add-ClusterScaleOutFileServerRole Cmdlet 指定 -Infrastructure 切換參數,以建立基礎結構 SOFS 角色。 例如:

Add-ClusterScaleoutFileServerRole -Name "my_infra_sofs_name" -Infrastructure

每個建立的 CSV 磁碟區都會根據 CSV 磁碟區名稱自動觸發 SMB 共用的建立。 您無法直接建立或修改在 SOFS 角色下的 SMB 共用,只能使用 CSV 磁碟區進行建立和修改作業。

在超融合組態中,基礎結構 SOFS 可讓 SMB 用戶端 (Hyper-V 主機) 透過持續可用性 (CA) 與基礎結構 SOFS SMB 伺服器進行通訊。 此超融合 SMB 回送 CA 是透過存取其虛擬磁碟 (VHDX) 檔案的 VM 來達成,其中擁有的 VM 身分識別會在用戶端與伺服器之間轉送。 此身分識別轉送允許將 ACL 用於 VHDx 檔案,正如同之前在標準超融合叢集組態中。

建立叢集集合之後,叢集集合命名空間會依賴每個成員叢集上的基礎結構 SOFS,還有管理叢集中的基礎結構 SOFS。

成員叢集新增至叢集集合時,如果叢集已經存在,您可以指定該叢集上基礎結構 SOFS 的名稱。 如果基礎結構 SOFS 不存在,則會在新成員叢集上建立新的基礎結構 SOFS 角色。 如果成員叢集上已經存在基礎結構 SOFS 角色,Add 作業會視需要隱含地將此角色重新命名為指定的名稱。 叢集集合不會使用任何現有 SMB 伺服器或成員叢集上的非基礎結構 SOFS 角色。

建立叢集集合時,您可以選擇使用現有的 AD 電腦物件做為管理叢集上的命名空間根目錄。 叢集集合建立作業會在管理叢集上建立基礎結構 SOFS 叢集角色,或重新命名現有的基礎結構 SOFS 角色。 管理叢集上的基礎結構 SOFS 會做為叢集集合命名空間轉介 SOFS 使用。

建立容錯網域和可用性設定組

您可以在叢集集合中設定類 Azure 容錯網域和可用性設定組。 這對初始 VM 放置和叢集間的移轉很有利。

以下範例在叢集集合中有四個叢集。 在集合中,一個容錯網域會隨著兩個叢集建立,而第二個容錯網域則會隨著其他兩個叢集建立。 這兩個容錯網域組成可用性設定組。

在下列範例中,CLUSTER1 和 CLUSTER2 在容錯網域 FD1 中,而 CLUSTER3 和 CLUSTER4 在容錯網域 FD2 中。 可用性設定組是 CSMASTER-AS

若要建立容錯網域,命令為:

New-ClusterSetFaultDomain -Name FD1 -FdType Logical -CimSession CSMASTER -MemberCluster CLUSTER1,CLUSTER2 -Description "First fault domain"

New-ClusterSetFaultDomain -Name FD2 -FdType Logical -CimSession CSMASTER -MemberCluster CLUSTER3,CLUSTER4 -Description "Second fault domain"

若要確保已成功建立容錯網域,則可以執行 Get-ClusterSetFaultDomain,FD1 顯示的輸出為:

PS C:\> Get-ClusterSetFaultDomain -CimSession CSMASTER -FdName FD1 | fl *

PSShowComputerName    : True
FaultDomainType       : Logical
ClusterName           : {CLUSTER1, CLUSTER2}
Description           : First fault domain
FDName                : FD1
Id                    : 1
PSComputerName        : CSMASTER

現在已建立容錯網域,也會建立可用性設定組:

New-ClusterSetAvailabilitySet -Name CSMASTER-AS -FdType Logical -CimSession CSMASTER -ParticipantName FD1,FD2

若要驗證是否已建立,請使用:

Get-ClusterSetAvailabilitySet -AvailabilitySetName CSMASTER-AS -CimSession CSMASTER

建立新 VM 時,請使用 -AvailabilitySet 參數來判斷放置的最佳節點。 以下是範例:

# Identify the optimal node to create a new VM
$memoryinMB=4096
$vpcount = 1
$av = Get-ClusterSetAvailabilitySet -Name CSMASTER-AS -CimSession CSMASTER
$targetnode = Get-ClusterSetOptimalNodeForVM -CimSession CSMASTER -VMMemory $memoryinMB -VMVirtualCoreCount $vpcount -VMCpuReservation 10 -AvailabilitySet $av
$secure_string_pwd = convertto-securestring "<password>" -asplaintext -force
$cred = new-object -typename System.Management.Automation.PSCredential ("<domain\account>",$secure_string_pwd)

從集合中移除叢集

有時候需要從叢集集合移除叢集。 最佳做法如下:所有叢集集合 VM 應事先從叢集移出。 這可以使用 Move-ClusterSetVMMove-VMStorage 命令完成。

如果未先從叢集移出 VM,假設 VN 可以存取其儲存體,則在正要移除之叢集上託管的所有其餘叢集集合 VM 都會變成繫結至該叢集的高可用性 VM。 叢集集合也不再追蹤已移除叢集及其執行的 VM 的健康情況,同時移除命名空間和在已移除叢集上託管之共用的所有參照,藉以自動更新其庫存。

例如,從叢集集合移除 CLUSTER1 叢集的命令如下:

Remove-ClusterSetMember -ClusterName CLUSTER1 -CimSession CSMASTER

系統狀態備份

系統狀態備份功能將會備份叢集狀態和中繼資料。 您可以視需要使用 Windows Server Backup 還原節點的叢集資料庫,或執行授權還原,以在所有節點復原整個叢集資料庫。 對於叢集集合,,建議您先對成員叢集執行授權還原,然後再對管理叢集執行授權還原。 如需系統狀態備份的詳細資訊,請參閱備份系統狀態和裸機

下一步