LoginSignup
4
4

Hyper-V(Windwos Server 2022)でフェールオーバークラスターを構築する

Last updated at Posted at 2024-03-03

概要

これまでVMwareを愛用していたが、初めてHyper-Vも触ってみることにした。手元の環境でクラスター構築を試してみることでVMwareとの違いを理解できるようにしたい。
まずは MS Learn | HYPER-V テクノロジの概要 をひととおり読んだところ、vSphereクラスタに相当するものはHyper-Vでは「フェールオーバークラスター」と呼ばれるもののようだったのでこれを構築してみることにする。手順は基本的に公式ドキュメント MS Learn | フェールオーバー クラスターを作成する に沿って行った。

環境

  • 物理:NUC 7i5BNH
  • Hyper-Vホスト:Windows Server 2022
  • ADサーバー:Windows Server 2022
  • iSCSIサーバー:Rocky Linux9.3

image.png

①Windows Server 2022 インストール

Windows Server をダウンロードしてインストールする

Hyper-Vホスト用2台、ADサーバ用1台、計3台の Windows Server 2022 を用意

②ADサーバー

前提条件として、クラスター ノードとして追加するすべてのサーバーが同じ Active Directory ドメインに参加していることが必要と書かれている。

ありがたいことにActive Directory環境構築について公開してくれている記事がたくさんあり、いろいろ読んだ結果ほぼこの記事を参考にさせていただいた。
https://zenn.dev/yud/articles/f47dddc3321fa8

  • 「役割と機能の追加」から Active Directoryドメインサービス を役割追加してインストール
  • インストール完了後に「このサーバをドメインコントローラに昇格する」をクリック
    • ルートドメイン名:cluster.lab
    • フォレストの機能レベル: Windows Server 2016(デフォルト)
    • NetBIOS ドメイン名:cluster(自動的にルートドメイン名から作成される)

image.png

③iSCSI Target

//事前にiscsi用ディスクを作成してマウントしておく
$ df -h
Filesystem           Size  Used Avail Use% Mounted on
/snip/
/dev/sdb1            210G  1.5G  209G   1% /iscsi

//targetcliパッケージをインストール&起動
$ sudo dnf install -y targetcli
$ sudo systemctl start target
$ sudo systemctl enable target

//targetcliシェルを起動
$ sudo targetcli

//iscsiディスクイメージを作成
> cd backstores/fileio
> create disk0 /iscsi/disk0.img 1G
> create disk1 /iscsi/disk1.img 100G
> create disk2 /iscsi/disk2.img 100G

//icsiターゲットを作成
> cd /iscsi
> create iqn.2024-04.lab.cluster:target

//LUNを作成
> cd iqn.2024-04.lab.cluster:target/tpg1/luns
> create /backstores/fileio/disk0
> create /backstores/fileio/disk1
> create /backstores/fileio/disk2

//ACLを設定
> cd ../acls
> create iqn.2024-04.lab.cluster:hv-host01
> create iqn.2024-04.lab.cluster:hv-host02

④Hyper-Vホスト

この記事を参考にさせていただいた。
Hyper-V Mastery: A Step-by-Step Guide for Beginners to Elevate Your IT Skills and Boost Your Career

  1. iscsiターゲットへ接続
    https://www.server-world.info/query?os=Windows_Server_2022&p=iscsi&f=3#google_vignette
  2. ドメインに参加
    https://learn.microsoft.com/ja-jp/windows-server/identity/ad-fs/deployment/join-a-computer-to-a-domain
  3. Hyper-Vの役割をインストール
    https://learn.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/get-started/install-the-hyper-v-role-on-windows-server
  4. フェールオーバークラスターを作成
    https://learn.microsoft.com/ja-jp/windows-server/failover-clustering/create-failover-cluster

iscsiターゲット
image.png

フェールオーバークラスター
image.png

動作確認

  1. Hyper-Vで仮想マシンを作成する

  2. ライブマイグレーションの動作確認

このあとHA、DRS、Storage Live Migration、Snapshot、Resource Pool、RBAC、等についてもVMwareとの機能の違いを確認する。
image.png

今回初めて知ったこと

Hyper-Vの構成

Hyper-V は Windows Server にインストールされる役割であり、Windows クライアント オペレーティング システムで有効になる機能であるため、多くの人が誤って Hyper-V をタイプ 2 ハイパーバイザーと認識しています。

ただし、Windows Server および Windows クライアント オペレーティング システムで Hyper-V が有効になると、Microsoft はいくつかの「魔法」を実行します。Hyper-V は基盤となるオペレーティング システムとしてインスタンス化され、Windows よりも前に開始されます。Windows Server およびクライアント オペレーティング システムは、Hyper-V の管理オペレーティング システムになります。そのため、オペレーティング システムの「上」にインストールされるのではなく、Windows オペレーティング システムの「下」にインストールされ、ベアメタル パフォーマンスを実現できます。
Hyper-V Mastery: A Step-by-Step Guide for Beginners to Elevate Your IT Skills and Boost Your Career

MS公式でもこのように書かれている。
image.png

Windows Server Core

Windows Server はGUI画面から操作するのがなんとなく嫌だなと思っていたが、Windows Server Core というコマンドラインのみのインストールオプションが使用できる。

Windows Server の Server Core インストール オプションとは
Server Core のインストールでは、一般的に使用される特定のサーバー ロールのサポートに不可欠ではないサービスや他の機能が排除されます。 たとえば、Hyper-V サーバーにはグラフィカル ユーザー インターフェイス (GUI) は必要ありません。これは、Windows PowerShell を使用してコマンド ラインから、または Hyper-V マネージャーを使用してリモートから Hyper-V の事実上すべての側面を管理できるからです。

今回はDatacenter Evaluation(デスクトップエクスペリエンス)を使用したが、次回はデスクトップエクスペリエンス無しのWindows Server Coreエディションを使ってGUIではなくすべてPowerShellで構築することを試したい。

追記)Windows Server Coreエディションを用いてCLIで構築する

  • 改めてiSCSIにLUNを2個追加
  • GUIではなくCLIでフェールオーバークラスターを構築
    image.png

Hyper-Vホスト用のWindows Server 2022インストール

デスクトップ無しのWindows Server Coreを使用。同様の手順でhv-host05、hv-host06の2台分をVM作成した。
image.png

初期設定

まず最初にネットワーク設定、ホスト名設定をコンソールから設定する。
image.png

WinRM設定

以降の設定はWinRMでリモート操作できるようにする。今回はADサーバをWinRM接続元として使用した。

//信頼済みホストを登録
$RemoteIP = "192.168.11.71"
Set-Item WSMan:\localhost\Client\TrustedHosts -Value ${RemoteIP}

//WinRM接続
$LoginName = "Administrator"
Enter-PSSession -ComputerName ${HVHOST05_IP} -Credential ${LoginName}

ADのドメインに参加

hv-host05、hv-host06それぞれで実施

//参照するDNSをAD DSへ変更
$InterfaceName1 = "Ethernet0"
$DNSServerAddress1 = "192.168.11.63"
Set-DnsClientServerAddress -InterfaceAlias ${InterfaceName1} -ServerAddresses ${DNSServerAddress1} -PassThru

//ドメイン参加
$Domain = "cluster.lab"
$Cred = Get-Credential
Add-Computer -DomainName ${Domain} -Credential ${Cred}

//再起動
Restart-Computer -Force

iSCSIターゲットに接続

hv-host05、hv-host06それぞれで実施

//iSCSIサービスを起動して、自動起動を有効にする
Start-Service -Name MSiSCSI
Set-Service -Name MSiSCSI -StartupType Automatic

//イニシエーター名を変更
$InitiatorNodeAddress = (Get-InitiatorPort).NodeAddress
Set-InitiatorPort -NodeAddress $InitiatorNodeAddress -NewNodeAddress iqn.2024-04.lab.cluster:hv-host05

//イニシエーター名が変更されたことを確認
Get-InitiatorPort

//iSCSIターゲットポータルを探索
$iscsi_target_ip = "192.168.11.65"
New-IscsiTargetPortal -TargetPortalAddress ${iscsi_target_ip}

//iSCSIターゲットに接続
$iscsi_initiator_ip = "192.168.11.71"
$TargetNodeAddress = (Get-IscsiTarget).NodeAddress
Connect-IscsiTarget -NodeAddress $TargetNodeAddress -TargetPortalAddress ${iscsi_target_ip} -InitiatorPortalAddress ${iscsi_initiator_ip} -IsPersistent $True -IsMultipathEnabled $True

//iSCSIターゲットに接続できたことを確認
Get-IscsiConnection

iSCSIディスクをオンライン化+GPTで初期化+NTFSでフォーマット

オンライン化はそれぞれのホストで実施するが、初期化+フォーマットはhv-host05のみで行う。

//iSCSIディスクを確認
Get-Disk | Format-Table -AutoSize -Wrap
Number Friendly Name       Serial Number                        HealthStatus OperationalStatus Total Size Partition Sty
                                                                                                          le
------ -------------       -------------                        ------------ ----------------- ---------- -------------
1      LIO-ORG disk0       5227045a-a551-4775-aed8-4118b740ce03 Healthy      Offline                 1 GB GPT
2      LIO-ORG disk1       206d181c-a544-449c-8f34-bf454a45f5bb Healthy      Offline               100 GB GPT
3      LIO-ORG disk2       70d55255-b124-4aac-84f9-b7e944f320b8 Healthy      Offline               100 GB GPT
4      LIO-ORG disk3       e9a712e5-9497-42a0-bccd-ef40bdb75026 Healthy      Offline                 1 GB RAW
5      LIO-ORG disk4       c55f0ac9-e14c-4b93-b108-d1609d52f4d9 Healthy      Offline               100 GB RAW
0      VMware Virtual disk 6000c29cac1c027b3f8b6b4a88afd231     Healthy      Online                 90 GB GPT

//ディスクをオンラインにする(今回はdisk3, disk4を対象)
Set-Disk -Number 4 -IsOffline $False
Set-Disk -Number 5 -IsOffline $False

//ディスクをGPTで初期化する(今回はdisk3, disk4を対象)
Initialize-Disk -Number 4 -PartitionStyle GPT
Initialize-Disk -Number 5 -PartitionStyle GPT

//ドライブレターは割当てず、パーティションを作成(今回はdisk3, disk4を対象)
New-Partition -DiskNumber 4 -UseMaximumSize
New-Partition -DiskNumber 5 -UseMaximumSize

//NTFSでフォーマット
$Partition4_2 = Get-Partition -DiskNumber 4 -PartitionNumber 2
Format-Volume -Partition ${Partition4_2} -FileSystem NTFS -Force
$Partition5_2 = Get-Partition -DiskNumber 5 -PartitionNumber 2
Format-Volume -Partition ${Partition5_2} -FileSystem NTFS -Force

//ボリュームの情報を確認
Get-Volume | Format-Table -AutoSize -Wrap
DriveLetter FriendlyName          FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining       Size
----------- ------------          -------------- --------- ------------ ----------------- -------------       ----
                                  NTFS           Fixed     Healthy      OK                    115.21 MB     599 MB
                                  NTFS           Fixed     Healthy      OK                     99.89 GB   99.98 GB
                                  FAT32          Fixed     Healthy      OK                     68.25 MB      96 MB
                                  NTFS           Fixed     Healthy      OK                    991.06 MB 1007.93 MB
C                                 NTFS           Fixed     Healthy      OK                     82.26 GB    89.3 GB
D           SSS_X64FREE_JA-JP_DV9 Unknown        CD-ROM    Healthy      OK                          0 B    4.85 GB

Hyper-Vインストール・設定

hv-host05、hv-host06それぞれで実施

//Hyper-Vの役割をインストール
$ComputeName = $env:computername | Select-Object
Install-WindowsFeature -Name Hyper-V -ComputerName ${ComputeName} -IncludeManagementTools -Restart

//インストール後に再起動が行われるので、再起動後に改めてWinRMで接続して確認
$ComputeName = $env:computername | Select-Object
Get-WindowsFeature -ComputerName ${ComputeName}

//仮想スイッチ作成
$NetAdapterName = (Get-NetAdapter).Name
$VMSwitchName = "vsw"
New-VMSwitch -Name ${VMSwitchName}  -NetAdapterName ${NetAdapterName}

//仮想スイッチを管理 OS と共有
Set-VMSwitch -Name ${VMSwitchName} -AllowManagementOS $true

フェールオーバークラスターを作成

インストールはそれぞれのホストで実施する。クラスタ検証テスト・作成はいずれかのホストで実施すればよい。

//インストール
Install-WindowsFeature Failover-Clustering -IncludeManagementTools

//クラスタ検証テストを実行 #クラスタの検証テスト・クラスタ作成はWinRMで実行しようとすると、直接コンソールで実行せよというエラーが出るので仕方なくコンソールで実施した
Test-Cluster -Node "hv-host05", "hv-host06"

//クラスタ作成
$ClusterVipAddress = "192.168.11.73"
New-Cluster –Name MyCluster –Node "hv-host05", "hv-host06" –StaticAddress ${ClusterVipAddress}

//クラスターノードの確認
Get-ClusterNode
Name      State Type
----      ----- ----
hv-host05 Up    Node
hv-host06 Up    Node

//クラスターリソースの確認
Get-ClusterResource
Name                        State  OwnerGroup ResourceType
----                        -----  ---------- ------------
Virtual Machine Cluster WMI Online クラスター グループ Virtual Machine Cluster WMI
クラスター IP アドレス               Online クラスター グループ IP Address
クラスター ディスク 1                Online クラスター グループ Physical Disk
クラスター ディスク 2                Online 使用可能記憶域    Physical Disk
クラスター名                      Online クラスター グループ Network Name

クラスターディスクを「クラスターの共有ボリューム(CSV)」として構成する

いずれかのホストで実施

//クラスター共有ボリューム(CSV)へ
Add-ClusterSharedVolume -Name "クラスター ディスク 2"

//確認
Get-ClusterResource | where {$_.ResourceType -eq "Physical Disk"} | fl *
OperationalStatus     : OK
HealthStatus          : Healthy
DriveType             : Fixed
FileSystemType        : CSVFS_NTFS
DedupMode             : NotAvailable
ObjectId              : {1}\\Mycluster\root/Microsoft/Windows/Storage/Providers_v2\WSP_Volume.ObjectId="{8d1593d6-2f75-
                        4bba-b483-4f72f42354b9}:VO:\\?\Volume{82a9ad71-2a98-4efb-b6a3-4e7c36d79786}\"
PassThroughClass      :
PassThroughIds        :
PassThroughNamespace  :
PassThroughServer     :
UniqueId              : \\?\Volume{82a9ad71-2a98-4efb-b6a3-4e7c36d79786}\
AllocationUnitSize    : 4096
DriveLetter           :
FileSystem            : CSVFS
FileSystemLabel       :
Path                  : \\?\Volume{82a9ad71-2a98-4efb-b6a3-4e7c36d79786}\
Size                  : 107356352512
SizeRemaining         : 107239075840
PSComputerName        :
CimClass              : ROOT/Microsoft/Windows/Storage:MSFT_Volume
CimInstanceProperties : {ObjectId, PassThroughClass, PassThroughIds, PassThroughNamespace...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

フェールオーバークラスターはこれで作成完了

Windows Admin Centerを使ってみる

Hyper-Vマネージャー、フェールオーバークラスタマネージャーは昔ながらの画面だったが、これから新たに使い始めるのならWindows Admin Centerのほうがモダンな画面で操作性も良さそうだった。
image.png

Windows Admin Centerインストール

今回はWindows10 PCへインストールすることとした。ダウンロードサイト からダウンロードしてインストール。

Windows Admin Center へサーバー追加

+追加 >> サーバー >>追加
image.png

サーバー名を入力、「この接続では別のアカウントを接続する」 >> ユーザー名/パスワードを入力
image.png

hv-host05、hv-host06の2台を追加できた
image.png

各ホストの設定やパフォーマンスをモニタできる
image.png

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4