Hyper-V ホスト 3 台でフェールオーバー クラスタを作り、iSCSI の LUN をクラスタの共有ボリューム(CSV)と監視ディスクに設定する手順です。あわせて、クラスタ ネットワークの名前と、ライブ マイグレーションに使うネットワークを設定します。
この記事の前提
参照した公式ドキュメント
- Create a failover cluster(Microsoft Learn)
- Cluster Shared Volumes overview(Microsoft Learn)
- Deploy a quorum witness for a failover cluster in Windows Server(Microsoft Learn)
構成
| 項目 | 内容 |
|---|---|
| ノード | DOC-HV1/DOC-HV2/DOC-HV3(ドメイン hvdoc.local に参加済み) |
| クラスタ名 | HVDOC-CL(クラスタの管理用 IP アドレス:192.168.1.126) |
| 共有ディスク | iSCSI の LUN 0(100 GB、CSV 用)、LUN 1(2 GB、監視ディスク用)。iSCSI+MPIO の設定手順で接続・フォーマット済み |
| 機能 | インストール手順で「Failover Clustering」を追加済み |
| 作業する場所 | DOC-HV1 のフェールオーバー クラスター マネージャー(cluadmin.msc)。ドメインの管理者(HVDOC\Administrator)でサインインします |
構成の検証
クラスタを作る前に、ノードのハードウェアと設定がクラスタに対応しているかを検証します。
(1) フェールオーバー クラスター マネージャーを開き、[Actions] の [Validate Configuration] をクリックします。ウィザードの最初のページで [Next] をクリックします。

(2) [Enter name] にノードの名前を入力して [Add] をクリックし、3 台のノードを追加して [Next] をクリックします。

(3) [Run all tests (recommended)] を選んで [Next] をクリックします。

(4) 確認画面で、テストするサーバーとテストの一覧を確認して [Next] をクリックします。

(5) テストが始まります。この環境では約 10 分かかりました。

ストレージのテストでは、共有ディスクを一時的にオフラインにします。稼働中のクラスタで実行するときは、仮想マシンへの影響に注意してください。
(6) 結果が表示されます。[View Report] をクリックすると、テストごとの結果をブラウザーで確認できます。

この検証環境では、次の結果になりました。
| テスト | 結果 | 内容と対応 |
|---|---|---|
| List Information About Servers Running Hyper-V | 失敗 | 1 台のノードで「Object reference not set to an instance of an object.」のエラー。このテストで止まったため、ほかの Hyper-V のテストは [Canceled] になりました。下のコマンドで Hyper-V のテストだけを実行し直すと成功しました |
| Validate Switch Enabled Teaming Configurations | 警告 | SET の NIC の設定(RDMA・MTU・速度・ドライバー)は 3 台で一致していましたが、[Team Adapter Network Direct Technology] が判定できませんでした(Unknown)。この検証環境の NIC はエミュレーションの NIC(Intel 82574L)のためです |
| Validate Software Update Levels | 警告 | DOC-HV3 だけ Windows Defender のプラットフォーム更新(KB4052623)が未適用でした。本番では全ノードの更新をそろえます |
| System Configuration(SPN・OU の権限・メモリ ダンプ) | 警告 | ドメインと OS の既定の設定によるものです。クラスタの作成には影響しませんでした |
Hyper-V のテストだけを実行し直すコマンドです(DOC-HV1 の PowerShell で実行します)。
Test-Cluster -Node DOC-HV1,DOC-HV2,DOC-HV3 -Include "Hyper-V Configuration"
この検証では、後の S2D の作業の途中で、画面のサインインがドメインの管理者ではなくローカルの Administrator になっていたことに気づきました。ローカルの Administrator では Kerberos 認証が使えず、WinRM を使うテストなどが失敗することがあります。クラスタの作業は、ドメインの管理者(HVDOC\Administrator)でサインインして行ってください(
whoamiで確認できます)。
マイクロソフトのサポートを受けるには、すべてのテストが成功(または警告のみ)している必要があります。失敗したテストはレポートで原因を確認し、解消してから作成してください。
クラスタの作成
(1) [Actions] の [Create Cluster] をクリックします。ウィザードの最初のページで [Next] をクリックします。

(2) 検証と同じように 3 台のノードを追加して [Next] をクリックします。

(3) クラスタの名前と、管理用の IP アドレスを入力して [Next] をクリックします。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Cluster Name | クラスタの名前。Active Directory にコンピューター オブジェクトとして作られます(15 文字まで) | HVDOC-CL |
| Networks | クラスタの IP アドレスを置くネットワーク | 192.168.1.0/24(管理用) |
| Address | クラスタの IP アドレス。使われていないアドレスを指定します | 192.168.1.126 |
[Address] の欄は、ネットワークの部分(192.168.1.)が入力済みで、最後の数字だけを入力する形式です。「192.168.1.126」をそのまま入力すると、意図しないアドレスになることがあります。入力後に表示されたアドレスを確認してください。
(4) 確認画面で [Add all eligible storage to the cluster] がオンになっていることを確認して [Next] をクリックします。iSCSI の 2 つのディスクが、クラスタのディスクとして自動で追加されます。

(5) クラスタが作成されます。[Summary] にノード・クラスタ名・クォーラム・IP アドレスが表示されたら [Finish] をクリックします。クォーラムは [Node and Disk Majority (Cluster Disk 1)] になりました。小さいほうのディスク(2 GB)が、自動で監視ディスクに選ばれています。

(6) 左のツリーに HVDOC-CL.hvdoc.local が表示されます。クラスタの概要で、名前と監視ディスク(Witness)を確認します。

PowerShell で作成する場合は、次のコマンドです。
New-Cluster -Name HVDOC-CL -Node DOC-HV1,DOC-HV2,DOC-HV3 -StaticAddress 192.168.1.126
監視ディスクと CSV の設定
(1) ツリーの [Storage] → [Disks] を開きます。Cluster Disk 1(2 GB)が [Disk Witness in Quorum]、Cluster Disk 2(100 GB)が [Available Storage] になっています。

監視ディスクが意図したディスクになっていない場合は、クラスタを右クリックして [More Actions] → [Configure Cluster Quorum Settings] で変更します。3 ノードのクラスタでも、監視(ディスクやファイル共有)を置くと、2 台が停止したときの判定が安定します。
(2) Cluster Disk 2 を右クリックして [Add to Cluster Shared Volumes] をクリックします。

(3) [Assigned To] が [Cluster Shared Volume] に変わります。CSV は、すべてのノードの C:\ClusterStorage\Volume1 にマウントされ、どのノードからも同時に読み書きできます。仮想マシンのファイルはここに置きます。

PowerShell で設定する場合は、次のコマンドです。
Add-ClusterSharedVolume -Name "Cluster Disk 2"
Get-ClusterSharedVolume
クラスタ ネットワークの設定
(1) ツリーの [Networks] を開くと、ノードの NIC のサブネットごとに、クラスタ ネットワークが作られています。名前は「Cluster Network 1」のような連番なので、用途がわかる名前に変えます。ネットワークを右クリックして [Properties] で変更できます。ここでは PowerShell でまとめて変更しました。
$map = @{ '192.168.1.0'='Management'; '10.20.81.0'='iSCSI-A'; '10.20.82.0'='iSCSI-B'; '10.20.83.0'='SMB'; '10.20.85.0'='LiveMigration' }
foreach ($n in Get-ClusterNetwork) { $n.Name = $map[$n.Address] }

[Cluster Use] は、作成時に自動で設定されます。iSCSI のネットワークは、クラスタの通信に使わない [None] になっていました。
| ネットワーク | Cluster Use | 用途 |
|---|---|---|
| Management | Cluster and Client | 管理・クラスタの IP アドレス・仮想マシンの通信(VMSwitch) |
| LiveMigration | Cluster Only | ライブ マイグレーション(SET スイッチの仮想 NIC) |
| SMB | Cluster Only | クラスタの通信・CSV のリダイレクト(SET スイッチの仮想 NIC) |
| iSCSI-A/iSCSI-B | None | iSCSI のストレージ通信だけに使います(MPIO で冗長化) |
iSCSI のネットワークが [Cluster Only] などになっている場合は、Properties で [Do not allow cluster network communication on this network] を選び、クラスタの通信がストレージの経路に流れないようにします。
(2) [Actions] の [Live Migration Settings] をクリックします。ライブ マイグレーションに使うネットワークだけをオンにし、[Up] / [Down] で優先順位を決めて [OK] をクリックします。

| ネットワーク | 設定 | 理由 |
|---|---|---|
| LiveMigration | オン(1 番目) | ライブ マイグレーション専用のネットワーク |
| SMB | オン(2 番目) | LiveMigration が使えないときの予備 |
| iSCSI-B/iSCSI-A | オフ | ストレージの通信と帯域を取り合わないようにします |
| Management | オフ | 管理と仮想マシンの通信に影響しないようにします |
LiveMigration と SMB は、2 本の物理 NIC をまとめた SET スイッチの上にあるので、物理 NIC が 1 本故障しても通信は続きます。