適用対象: Windows Server 2019
この記事では、PowerShell を使用して Windows Server フェールオーバー クラスターのクラスター セットをデプロイする方法について説明します。 クラスター セットは、一緒にクラスター化された複数のフェールオーバー クラスターのグループです。 クラスター セットを使用すると、1 つのソフトウェア定義データ センター (SDDC) クラウド内のサーバー ノードの数を桁違いに増やすことができます。
クラスター セットはテストされ、最大 64 個のクラスター ノードがサポートされています。 ただし、クラスター セットははるかに大きな制限にスケーリングでき、制限に対してハードコーディングされません。
メリット
クラスター セットには、次の利点があります。
ソフトウェア障害の境界を 1 つのクラスターに維持しながら、複数の小さいクラスターを 1 つの大きなファブリックに結合することで、高可用性仮想マシン (VM) を実行するためにサポートされる SDDC クラウド スケールを大幅に向上させます。 クラスター セット間で VM を簡単に移行できます。
回復性の向上。 1 つのクラスター セットに 4 つの 4 ノード クラスターがあると、1 つの 16 ノード クラスターよりも回復性が向上します。複数のコンピューティング ノードがダウンし、運用環境はそのまま残ります。
テナント VM の可用性に影響を与えずに、クラスターのオンボードやインベントリからの削除を含む、フェールオーバー クラスターのライフサイクルの管理。
個々のクラスター間の VM の柔軟性と、現在の統合ストレージ名前空間。
ハイパーコンバージド環境でコンピューティングとストレージのワークロード比率を簡単に変更できます。
最初の VM 配置とその後の移行では、個々のクラスター間で Azure に似た障害ドメインと可用性セット を利用できます。
クラスター ノード間のコンピューティング ハードウェアとストレージ ハードウェアが同一でない場合でも使用できます。
クラスター間の VM のライブ マイグレーション。
複数のクラスターにわたる Azure に似た可用性セットと障害ドメイン。
クラスター間での SQL Server VM の移動。
要件と制限
クラスター セットの使用には、いくつかの要件と制限があります。
クラスター セット内のすべてのメンバー クラスターは、同じ Active Directory (AD) フォレスト内にある必要があります。
セット内のメンバー サーバーは、同じオペレーティング システム バージョンを実行する必要があります。 異なるオペレーティング システム間で仮想マシンをライブ マイグレーションすることはできません。 次のオプションのうち1つだけで構成されたクラスター セットを作成できますが、複数のオプションを選ぶことはできません。
- Windows Server 2019 フェールオーバー クラスターと Windows Server 2019 フェールオーバー クラスター
- Windows Server 2019 フェイルオーバー クラスターと Windows Server 2019 ストレージ スペース ダイレクト
- Windows Server 2019 記憶域スペース ダイレクトと Windows Server 2019 記憶域スペース ダイレクト
メンバー クラスター間のライブ マイグレーションを行うために、すべてのメンバー サーバーに同一のプロセッサ ハードウェアが必要です。それ以外の場合は、仮想マシンの設定で [CPU プロセッサの互換性 ] を選択する必要があります。
クラスター セット VM は、クラスター間で手動でライブ マイグレーションする必要があります。自動的にフェールオーバーすることはできません。
クラスターの障害に対するストレージの回復性を実現するには、メンバー クラスター間で記憶域レプリカを使用する必要があります。 記憶域レプリカを使用する場合は、記憶域レプリカのレプリカ ターゲット クラスターへのフェールオーバー時に名前空間記憶域 UNC パスが自動的に変更されないことに注意してください。
記憶域スペース ダイレクトは、クラスター セット内のメンバー クラスター間では機能しません。 代わりに、記憶域スペース ダイレクトは 1 つのクラスターに適用され、各クラスターには独自の記憶域プールがあります。
アーキテクチャ
次の図は、高次元でのクラスターセットを示しています。
次に示す各要素の概要を示します。
管理クラスター
管理クラスターは、高可用性管理プレーンと、クラスター セットの名前空間紹介スケールアウト ファイル サーバー (SOFS) をホストします。 管理クラスターは、VM ワークロードを実行する個々のメンバー クラスターから論理的に分離されます。 これにより、クラスター セット管理プレーンは、メンバー クラスターの電源が失われるなど、クラスター全体のローカライズされた障害に対して回復性が高くなります。
クラスター セット名前空間の参照 SOFS
クラスター セットの名前空間には、管理クラスターで実行されている SOFS サーバー ロールが用意されています。 これは、分散ファイル システム名前空間 (DFSN) に似ています。 ただし、DFSN とは異なり、クラスター セットの名前空間参照メタデータは、介入なしですべてのクラスター ノードに自動的に設定されるため、ストレージ アクセス パスのパフォーマンス オーバーヘッドはほとんどありません。 この軽量の紹介メカニズムは、I/O パスには参加しません。
クラスター セット名前空間参照 SOFS の各サーバー メッセージ ブロック (SMB) 参照共有は、SimpleReferral
型です。 この紹介により、SMB クライアントは、メンバー クラスター SOFS でホストされているターゲット SMB 共有にアクセスできます。 紹介は各クライアント ノードに永続的にキャッシュされ、クラスター セット名前空間によって、必要に応じて紹介が自動的に動的に更新されます。 紹介情報は、再起動中でも、各クラスター セット ノードに永続的にキャッシュされます。
クラスター セット マスター
メンバー クラスター間の通信は、クラスター セット マスター (CS-Master) リソースによって疎結合および調整されます。 他のクラスター セット リソースと同様に、CS-Master は可用性が高く、個々のメンバー クラスターの障害や管理クラスター ノードの障害に対する回復性があります。 クラスター セット WMI プロバイダーを通じて、CS-Master は、すべてのクラスター セット管理アクションの管理エンドポイントを提供します。
メンバー クラスター
メンバー クラスターは、VM と記憶域スペース ダイレクトのワークロードを実行します。 複数のメンバー クラスターがクラスター セットのデプロイに参加し、より大きな SDDC クラウド ファブリックを形成します。 メンバー クラスターは、障害ドメインと可用性セットのコンストラクトに参加し、メンバー クラスターは VM と記憶域スペース ダイレクトワークロードをホストするようにサイズ設定されるという 2 つの重要な側面で管理クラスターとは異なります。 このため、メンバー クラスター間で移動する VM は管理クラスターでホストされません。
クラスター セット worker
CS-Master は、クラスター セット ワーカー (CS-Worker) と呼ばれるメンバー クラスター上のクラスター リソースと対話します。 CS-Worker は、VM の配置やリソース インベントリなど、CS マスターによる要求に応答します。 メンバー クラスターごとに 1 つの CS-Worker インスタンスがあります。
障害ドメイン
障害ドメインは、一緒に障害が発生する可能性があるハードウェアとソフトウェアのグループです。 1 つ以上のクラスターをまとめて障害ドメインとして指定できますが、各ノードは可用性セット内の障害ドメインに参加できます。 障害ドメインの境界は、データ センター トポロジ、ネットワーク アーキテクチャ、およびその他の考慮事項に基づいています。
可用性セット
可用性セットは、ワークロードをグループ化してデプロイすることで、障害ドメイン間でクラスター化されたワークロードの必要な冗長性を構成するために使用されます。 2 層アプリケーションの場合は、各層の可用性セットに少なくとも 2 つの VM を構成する必要があります。これにより、可用性セット内の障害ドメインがダウンしたときに、アプリケーションは各層に少なくとも 1 つの VM が異なる障害ドメインでホストされます。
クラスター セットを作成する
次のワークフロー例で PowerShell を使用して、2 つのクラスターを使用してクラスター セットを作成します。 ここで設定するクラスターの名前は CSMASTER です。
クラスター名 | インフラストラクチャ SOFS 名 |
---|---|
SET-CLUSTER | SOFS-CLUSTERSET |
CLUSTER1 | SOFS-CLUSTER1 |
CLUSTER2 | SOFS-CLUSTER2 |
Windows Server 2022 または Windows Server 2019 を実行している管理クライアント コンピューターを使用します。
管理クラスター サーバーにフェールオーバー クラスター ツールをインストールします。
2 つのクラスター メンバーを作成し、各クラスターに少なくとも 2 つのクラスター共有ボリューム (CSV) を使用します。
メンバー クラスターをまたぐ管理クラスター (物理またはゲスト) を作成します。 これにより、メンバー クラスターの障害が発生した可能性があるにもかかわらず、クラスター セット管理プレーンを引き続き使用できるようになります。
クラスター セットを作成するには:
New-ClusterSet -Name CSMASTER -NamespaceRoot SOFS-CLUSTERSET -CimSession SET-CLUSTER
注
静的 IP アドレスを使用している場合は、New-ClusterSet コマンドに -StaticAddress x.x.x.x を含める必要があります。
クラスター セットにクラスター メンバーを追加するには:
Add-ClusterSetMember -ClusterName CLUSTER1 -CimSession CSMASTER -InfraSOFSName SOFS-CLUSTER1 Add-ClusterSetMember -ClusterName CLUSTER2 -CimSession CSMASTER -InfraSOFSName SOFS-CLUSTER2
クラスター セット内のすべてのメンバー クラスターを列挙するには:
Get-ClusterSetMember -CimSession CSMASTER
管理クラスター ノードを含むクラスター セット内のすべてのメンバー クラスターを列挙するには:
Get-ClusterSet -CimSession CSMASTER | Get-Cluster | Get-ClusterNode
すべてのメンバー クラスターのすべてのサーバー ノードを一覧表示するには:
Get-ClusterSetNode -CimSession CSMASTER
クラスター セット全体のすべてのリソース グループを一覧表示するには:
Get-ClusterSet -CimSession CSMASTER | Get-Cluster | Get-ClusterGroup
クラスター セットに、各クラスター メンバー CSV ボリュームのインフラストラクチャ SOFS に 1 つの SMB 共有 (インフラストラクチャ ファイル サーバー名
ScopeName
) が含まれていることを確認するには、Get-SmbShare -CimSession CSMASTER
クラスター セット、管理クラスター、および各クラスター メンバーのクラスター セット デバッグ ログ ファイルを確認します。
Get-ClusterSetLog -ClusterSetCimSession CSMASTER -IncludeClusterLog -IncludeManagementClusterLog -DestinationFolderPath <path>
すべてのクラスター セット メンバー間 で制約付き委任を使用して Kerberos を構成します。
クラスター セット内の各ノードで、クロスクラスター VM ライブ マイグレーション認証の種類を Kerberos に構成します。
foreach($h in $hosts){ Set-VMHost -VirtualMachineMigrationAuthenticationType Kerberos -ComputerName $h }
クラスター セット内の各クラスター メンバー サーバー ノードのローカル管理者グループに管理クラスターを追加します。
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
- 1 つの仮想プロセッサ
- 使用可能な CPU 最小使用率 10%
# 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
VM を追加するのに十分なメモリ、CPU 容量、またはディスク領域がない場合は、次のエラーが表示されます。
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 パスを追加します。
たとえば、ローカル クラスター共有ボリューム (CSV) に存在する事前構成済みの VM を使用して、既存のクラスターがクラスター セットに追加されるとします。 VHDX のパスは、 C:\ClusterStorage\Volume1\MYVM\Virtual Hard Disks\MYVM.vhdx1
のようになります。
CSV パスは 1 つのメンバー クラスターに対してローカルに設計されているため、メンバー クラスター間でライブ マイグレーションされると VM からアクセスできないため、ストレージの移行が必要です。
この例では、スケールアウト ファイル サーバー SOFS-CLUSTER3 で Add-ClusterSetMember
を使用して、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 ストレージまたは構成ファイルは移動されず、VM へのパスは \\SOFS-CLUSTER1\VOLUME1 のままであるため、必要ありません。 VM がインフラストラクチャ ファイル サーバー共有パスに登録されると、ドライブと VM は VM と同じノード上にある必要はありません。
インフラストラクチャ スケールアウト ファイル サーバーを作成する
クラスターには 1 つのインフラストラクチャ SOFS クラスター ロールがあります。 インフラストラクチャ SOFS ロールは、-Infrastructure
コマンドレットに Add-ClusterScaleOutFileServerRole
スイッチ パラメーターを指定することによって作成されます。 例えば次が挙げられます。
Add-ClusterScaleoutFileServerRole -Name "my_infra_sofs_name" -Infrastructure
作成された各 CSV ボリュームは、CSV ボリューム名に基づいて自動生成された名前を持つ SMB 共有の作成を自動的にトリガーします。 CSV ボリュームの作成および変更操作を使用する以外に、SOFS ロールで SMB 共有を直接作成または変更することはできません。
ハイパーコンバージド構成では、インフラストラクチャ SOFS により、SMB クライアント (Hyper-V ホスト) が継続的可用性 (CA) とインフラストラクチャ SOFS SMB サーバーと通信できるようになります。 このハイパーコンバージド SMB ループバック CA は、所有する VM ID がクライアントとサーバーの間で転送される仮想ディスク (VHDX) ファイルにアクセスする VM によって実現されます。 この ID 転送により、以前と同様に、標準のハイパーコンバージド クラスター構成と同様に、VHDx ファイルに ACL を使用できます。
クラスター セットが作成されると、クラスター セット名前空間は、各メンバー クラスターのインフラストラクチャ SOFS と、管理クラスター内のインフラストラクチャ SOFS に依存します。
メンバー クラスターがクラスター セットに追加されるときに、そのクラスター上のインフラストラクチャ SOFS の名前が既に存在する場合は指定できます。 インフラストラクチャ SOFS が存在しない場合は、新しいメンバー クラスターに対する新しいインフラストラクチャ SOFS ロールが作成されます。 メンバー クラスターにインフラストラクチャ SOFS ロールが既に存在する場合、追加操作によって、必要に応じて、指定した名前に暗黙的に名前が変更されます。 既存の SMB サーバー、またはメンバー クラスター上のインフラストラクチャ以外の SOFS ロールは、クラスター セットでは使用されません。
クラスター セットが作成されると、既存の AD コンピューター オブジェクトを管理クラスターの名前空間ルートとして使用できます。 クラスター セットの作成により、管理クラスターにインフラストラクチャ SOFS クラスター ロールが作成されるか、既存のインフラストラクチャ SOFS ロールの名前が変更されます。 管理クラスター上のインフラストラクチャ SOFS は、クラスター セットの名前空間紹介 SOFS として使用されます。
障害ドメインと可用性セットを作成する
Azure に似た障害ドメインと可用性セットは、クラスター セットで構成できます。 これは、初期 VM の配置とクラスター間の移行に役立ちます。
次の例では、クラスター セットに 4 つのクラスターがあります。 セット内では、2 つのクラスターで 1 つの障害ドメインが作成され、2 つ目の障害ドメインが他の 2 つのクラスターで作成されます。 これら 2 つの障害ドメインは、可用性セットで構成されます。
次の例では、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"
それらが正常に作成されたことを確認するために、FD1 の出力を表示して Get-ClusterSetFaultDomain
を実行できます。
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-ClusterSetVM
コマンドと Move-VMStorage
コマンドを使用して行うことができます。
VM が最初にクラスターから移動されない場合、削除対象のクラスターでホストされている残りのクラスター セット VM はすべて、そのクラスターにバインドされた高可用性 VM になります(ストレージにアクセスできる場合)。 また、クラスター セットは、削除されたクラスターとその上で実行されている VM の正常性を追跡しなくなったり、削除されたクラスターでホストされている共有への名前空間とすべての参照を削除したりして、インベントリを自動的に更新します。
たとえば、クラスター セットから CLUSTER1 クラスターを削除するコマンドは次のとおりです。
Remove-ClusterSetMember -ClusterName CLUSTER1 -CimSession CSMASTER
システム状態のバックアップ
システム状態のバックアップでは、クラスターの状態とメタデータがバックアップされます。 Windows Server バックアップを使用すると、必要に応じてノードのクラスター データベースのみを復元したり、権限のある復元を実行してクラスター データベース全体をすべてのノードにロールバックしたりできます。 クラスター セットの場合は、最初にメンバー クラスターに対して権限のある復元を行い、次に管理クラスターに対して権限のある復元を行うことをお勧めします。 システム状態のバックアップの詳細については、「 システム状態とベア メタルのバックアップ」を参照してください。
次のステップ
- 記憶域レプリカの詳細を確認する。