✌️

Azure で Nested Hyper-V 上に WSFC を立ててみる

2024/02/07に公開

はじめに

Azure ネイティブ人間として、一度 Windows Server Failover Cluster (WSFC) を素で組む苦労を体験しようというのが今回のモチベーションです。Azure Stack HCI のアップデートでどうやら楽に組めるようになりそうな気配はありますが、1回は経験しておこうと。

とはいえ、手元の環境で触るというよりは Nested Hyper-V 環境を用意してそこで組んでみたいと思います。

Nested Hyper-V 環境の構築

以前にも取り組んでいる内容ですので、このあたり[1]を参考に構築します。

[ホスト&ゲスト]ネットワーク設定

Hyper-V ホストとゲストの間で通信させるために Virtual Switch Manager で Internal スイッチを作成し、ゲスト側でもそのスイッチを参照します。

本環境では、ゲストを2台 (node1/node2) 用意して WSFC を組みます。Nested Hyper-V なので先の手順の設定をしておきます。インターネットアクセスが不要の場合は、Default のままでいいかもしれません。

手元の環境では以下のように設定しました。

  • ネットワーク:172.16.1.0/24
  • host: 172.16.1.1
  • node01: 172.16.1.5
  • node02: 172.16.1.10

Active Directory の構成

ADDS を構築します。iSCSI 周りの設定は IP アドレスで問題ないですが、WSFC にノードを追加する手順でコケます。構築したら各ノードをドメインに参加させておきましょう。ドメイン参加は、[システム] > [詳細情報] > [このPCの名前を変更(詳細設定)] から行います。

各ゲストの DNS サーバーもホストに向けておきます。

[ホスト] iSCSI 仮想ディスクの作成

役割の追加

まずは何するにしても役割を追加してからです。[iSCSI Target Server]をインストールします(画像では後撮りのため installed となっています)。

iSCSI 仮想ディスクの追加

サーバーマネージャーの[File and Storage Services] > [iSCSI] からディスクを作成します(画像では後撮りのためディスクが存在する状態となっています)

新規作成する場合は以下のようなウィザードに従います。

スクリーンショット







サーバーマネージャー上で [iSCSI VIRTUAL DISKS] と [iSCSI TARGETS] が存在することを確認します。

[ゲスト] iSCSI イニシエーターの構築

接続確認

ゲストマシンへサインインし、サーバーマネージャーの[ツール]>[iSCSI イニシエーター]をクリックします。

[iSCSI イニシエーターのプロパティ]のウィンドウで、ターゲットにホストの IP アドレスを指定し、[クイック接続] によって利用可能かどうかチェックします。ホスト側の [iSCSI ターゲット]にこの今設定しているゲストの IP が登録されていないと接続できないため注意してください。

共有ディスクの初期設定

[ディスクの管理] ウィンドウを開くと、不明なディスクが追加されているため、通常のディスクを追加する場合と同様の手順でディスクを使用可能にします。手元の環境では E ドライブに割り当てました。

フェールオーバークラスタリングの構築

[ホスト&ゲスト]機能の追加

例によって、サーバーマネージャーの[役割と機能の追加]から[フェールオーバークラスタリング]を追加します。

[ホスト] クラスターの作成

事前検証

[Windows Administrative Tools] > [Failover Cluster Manager] を開きます。[Actions] > [Validate Configuration] により構成をチェックします。

[Select Servers or a Cluster] でクラスターに追加したいノードの FQDN を追加します。ここで名前解決できる必要があるため、ADDS の構築が必要だったわけですね。

テストが完了すると、レポートを確認できます。

クラスターの作成

[Failover Cluster Manager] から、[Create Cluster] を選択します。

検証のときと同様にクラスターのノードにするゲストサーバーを追加します。[Access Point for Administering the Cluster] で、そのクラスターを代表する IP を設定します。この IP で何らかの通信を受け付ける場合は、アクティブ側のノードに接続されます。

画面に従って完了まで進めます。

動作確認

本環境では以下のサーバーをノードとしています。

  • wsfc-node-01.wsfc.local
  • wsfc-node-02.wsfc.local

初期状態

クラスターを作成したタイミングでは、wsfc-node-01 がアクティブ側となっています。

ノードはそれぞれ Up の状態です。

ディスクのオーナーはアクティブ側の wsfc-node-01 です。

wsfc-node-01 にログインしてみると iSCSIで設定した (E)ドライブが見えます。

wsfc-node-02 上では見当たりません。

wsfc-node-01 をダウンさせてみる

Hyper-V マネージャから node01 をシャットダウンします。

wsfc-node-01 が Down 状態になります。

アクティブ側が wsfc-node-02 に切り替わります。

ディスクオーナーも wsfc-node-02 に変わります。

wsfc-node-02 側に (E)ドライブがきます。

wsfc-node-01 側では見えなくなります。

wsfc-node-01 を起動し、クラスター上で上がっても wsfc-node-02 がアクティブ側のままとなります。

まとめ

枯れた技術ではありますが、WSFC を改めて一通り組んでみました。大体のことはこちらの記事[2]に記載があります。疎通確認という意味で、やはり実際に触ってみるのは大事ですね。今後、Azure と連携することでこのあたりがどれほど楽になるのかなど、楽しみに待ちたいと思います。

脚注
  1. https://github.com/zukakosan/blog-tech/blob/main/articles/1915815f81c87a.md#azure-vm上にnested-hyper-v-vmの作成 ↩︎

  2. https://tamnology.com/failover-clustering-part1/ ↩︎

GitHubで編集を提案
Microsoft (有志)

Discussion