こんにちは。SB C&Sの湯村です。「基礎から学ぶ!Hyper-V 仮想化入門」シリーズ第6回は、「ライブマイグレーションとフェールオーバー」です。今回は、これまでに構築したフェールオーバークラスターの上で仮想マシンを作成し、ライブマイグレーションやフェールオーバーといった可用性機能の動作を確認します。本シリーズの最終回となります。是非最後までお付き合いください!
1. 仮想マシンをフェールオーバークラスターへ追加するには?
フェールオーバークラスターでは、フェールオーバーの対象となるサービスや機能を「役割」と呼び、フェールオーバークラスターに追加できます。Hyper-Vホストに障害が発生した際はそれらがフェールオーバーされ、異なるホストで役割が再起動されることでサービスを提供し続けるという仕組みになっています。追加できる役割は、「Windows Serverの役割と機能」がベースとなっているものが多く、Windows Serverで構築するサービスなどをフェールオーバーに対応させることができます。
フェールオーバークラスター上で稼働する仮想マシンも「役割」のひとつとして構成できます。下図のように、フェールオーバークラスターマネージャーから仮想マシンの役割を追加することで、初めて仮想マシンがフェールオーバーの対象となります。第3回の記事で作成した仮想マシンはフェールオーバークラスターを構築する前の状態であるため、フェールオーバーの対象とはなりません。フェールオーバークラスターに追加された仮想マシンでは、無停止でHyper-Vホストを移動する「ライブマイグレーション」も実行できます。
2. 本記事での構築対象
今回は、これまでの記事でご紹介した手順を全て実施した環境をそのまま使用します。参考にされる場合はこちらの記事をご覧ください。
加えて、フェールオーバークラスター上に仮想マシンを作成するため、下図の赤枠部分を新たに構築します。
3. 仮想マシンの作成(フェールオーバークラスター上)
「第3回 仮想マシンの作成」でHyper-Vマネージャーから仮想マシンを作成する際には、ホストのローカルディスクに仮想マシンファイルを格納しました。今回はフェールオーバークラスターマネージャーを使用して、クラスター共有ボリューム(CSV)に仮想マシンファイルを格納します。
1. サーバーマネージャーからフェールオーバークラスターマネージャーを起動します。
- サーバーマネージャーで [ツール] をクリックします。
- [フェールオーバー クラスター マネージャー] をクリックします。
2. フェールオーバークラスターマネージャーで「仮想マシンの新規作成ウィザード」を起動します。
- [役割] を右クリックします。
- [仮想マシン] をクリックします。
- [仮想マシンの新規作成] をクリックします。
3. 仮想マシンを作成するノードを選択します。
- [hv-host1] を選択します。
※ライブマイグレーションは [hv-host1] から [hv-host2] への動作、フェールオーバーは [hv-host2] から [hv-host1] への動作を予定しています。 - [OK] をクリックします。
4.「開始する前に」ページでは [次へ] をクリックします。
5.「名前と場所の指定」ページでは以下の手順を実行します。
- 「名前」欄に任意の仮想マシン名を入力します。
※本環境では [vm-cluster] と入力しています。 - [仮想マシンを別の場所に格納する] にチェックを入れます。
- [参照] をクリックします。
6. 第5回記事で作成したクラスター共有ボリュームを指定します。
- フォルダパスに [C:¥ClusterStorage¥Volume1] を指定します。
- [Volume1] を選択します。
- [フォルダーの選択] をクリックします。
7. [次へ] をクリックします。
8.「世代の指定」ページでは以下の手順を実行します。
- 仮想マシンの世代は [第2世代] を選択します。
- [次へ] をクリックします。
9.「メモリの割り当て」ページでは以下の手順を実行します。
- 「起動メモリ」に仮想マシンへ割り当てるメモリ容量を入力します。
※デフォルトでは [1024] MBとなっていますが、仮想マシンにインストールするOSのシステム要件に従って変更しましょう。本環境では仮想マシンにWindows Server 2022(Datacenter デスクトップエクスペリエンス)をインストールする予定ですので、[2048] MBを入力しています。 - [次へ] をクリックします。
10.「ネットワークの構成」ページでは以下の手順を実行します。
- 「接続」欄のプルダウンを開き、第2回記事で作成した外部仮想スイッチ [vm-switch] を選択します。
- [次へ] をクリックします。
11.「仮想ハードディスクの接続」ページでは以下の手順を実行します。
- [仮想ハード ディスクを作成する] を選択します。
※仮想ハードディスクの名前と場所についてはデフォルトで表示されています。任意の名前と場所を設定することもできますが、本環境ではデフォルトのまま進みます。 - 「サイズ」欄に仮想マシンへ割り当てるディスク容量を入力します。
※デフォルトでは [127] GBとなっていますが、仮想マシンにインストールするOSのシステム要件に従って変更しましょう。本環境では仮想マシンにWindows Server 2022(Datacenter デスクトップエクスペリエンス)をインストールする予定ですので、[50] GBを入力しています。 - [次へ] をクリックします。
12.「インストールオプション」ページでは以下の手順を実行します。
- [後でオペレーティング システムをインストールする] を選択します。
※[ブート イメージ ファイルからオペレーティング システムをインストールする] を選択すれば、この時点でインストールするOSのisoイメージを選択することができます。本環境では説明の都合上、選択していません。 - [次へ] をクリックします。
13.「仮想マシンの新規作成ウィザードの完了」ページでは [完了] をクリックします。
14.「高可用性ウィザード」が自動で表示され、作成した仮想マシン(役割)がフェールオーバーできるように構成されます。内容を確認したら [完了] をクリックします。
15. フェールオーバークラスターマネージャーの役割の欄に、作成した仮想マシン [vm-cluster] の情報が表示されていることを確認します。
4. ゲスト OS のインストール
作成した仮想マシンに、ゲストOSをインストールします。本環境では、Windows Server 2022 Datacenterのisoイメージを事前にHyper-Vホストに用意しています。
4.1. 仮想マシンの設定
仮想マシン作成時に仮想メモリ容量と仮想ハードディスク容量を指定しましたが、仮想CPUについては指定できていません。そのため、仮想マシン作成後は別途仮想CPUを割り当てる必要があります。忘れずに行いましょう。また、isoイメージをマウントするためのDVDドライブも仮想ハードウェアとして追加します。
1. フェールオーバークラスターマネージャー上で仮想マシンの設定画面を開きます。
- 作成した仮想マシン [vm-cluster] を右クリックします。
- [設定] をクリックします。
2. 仮想マシンにCPUを割り当てます。
- 左ペインで [プロセッサ] を選択します。
- 「仮想プロセッサの数」に任意のプロセッサ数を入力します。
※デフォルトでは [1] です。 - 左ペインで [ハードウェアの追加] を選択します。
3. 仮想ハードウェアを追加します。
- 「ハードウェアの追加」欄で [SCSI コントローラー] を選択します。
- [追加] をクリックします。
4. DVDドライブを追加します。
- 左ペインで [SCSI コントローラー] を選択します。
- 「SCSI コントローラー」欄で [DVD ドライブ] を選択します。
- [追加] をクリックします。
5. DVDドライブにisoイメージをマウントします。
- 「メディア」欄で [イメージ ファイル] を選択します。
- [参照] をクリックし、マウントするisoイメージファイルを指定します。
- [適用] をクリックします。
6. DVDドライブから仮想マシンを起動させたいため、起動順序を変更します。
- 左ペインで [ファームウェア] を選択します。
- 「ブート順」欄で [DVD ドライブ] を選択します。
- [上へ移動] を数回クリックして、一番上に移動させます。
7. [OK] をクリックして設定画面を閉じます。
4.2. ゲスト OS のインストール
1. 仮想マシンのコンソールを起動します。
- 仮想マシン名 [vm-cluster] を右クリックします。
- [接続] をクリックします。
2. [起動] をクリックします。
※コンソール上部の電源マークでも起動できます。
3.「Press any key to boot from CD or DVD ...」が表示されたら任意のキーを押します。
※コンソール画面の内部を一度クリックしてから実行してください。それでも反応しなければ、コンソール上部の [Ctrl+Alt+Del ] をクリックしてリセットしましょう。
4. あとはWindows Server 2022のインストールを通常通り行ってください。インストールが完了したら、IPアドレスやDNSの設定を行い、ゲストOSからインターネット等の外部ネットワークに接続できるか確認しましょう。
5. ライブマイグレーションの実行
フェールオーバークラスター上に仮想マシンを作成できたので、まずはライブマイグレーションを実行してみましょう。今回は、Hyper-Vホスト1(hv-host1)からHyper-Vホスト2(hv-host2)へ仮想マシンを移行します。
1. 仮想マシンからDVDドライブを取り出します。
※仮想マシンにisoファイルが接続している状態でライブマイグレーションを実行すると失敗してしまいますので、ゲストOSをインストールした際に接続したisoファイルを取り出しておく必要があります。(参考URLはこちら)
- 仮想マシンのコンソール上部にある [メディア] をクリックします。
- [DVD ドライブ] > [xxxx.iso の取り出し] の順にクリックします。
2. 移行先のノードを選択します。
- 作成した仮想マシン [vm-cluster] を右クリックします。
- [移動] をクリックします。
- [ライブ マイグレーション] をクリックします。
※[クイック マイグレーション] は、仮想マシンの電源をオフにした状態で別のノードに移行する機能です。 - [ノードの選択] をクリックします。
3. 移行先のノードを選択します。
- 「クラスター ノード」欄から移行先のノード [hv-host2] を選択します。
- [OK] をクリックします。
4. ライブマイグレーションが開始され、「所有者ノード」が [hv-host1] から [hv-host2] に変更されたことを確認します。
6. フェールオーバーの動作確認
フェールオーバーの動作を確認するために、仮想マシンが稼働しているノード「hv-host2」に疑似的な障害を発生させる必要があります。今回はノードの電源を強制的にパワーオフする方法を選択しています。ノードの電源をパワーオフして4分経過すると(デフォルト値)、仮想マシンが移行可能なノードに移行して再起動されます。
※ノードの電源を強制的にオフにするため、本番環境では行わずに必ず検証環境で実施するようにしましょう。
1.「hv-host2」の電源をオフにします。ノードの電源をオフにした瞬間に、ノード上で稼働していた仮想マシン「vm-cluster」もオフになります。
※管理OSのシャットダウンではなく、ノードの電源ボタンから直接シャットダウンします。
2.「hv-host1」のフェールオーバークラスターマネージャーを開き、ノードと仮想マシンの様子を確認します。
- ノード「hv-host2」の状態:分離(hv-host2の復旧を待ち続けている状態)
- 仮想マシン「vm-cluster」の状態:監視されていない(hv-host2の復旧を待ち続けている状態)
3. 仮想マシンが「監視されていない」状態になってから4分後、フェールオーバーが開始されます。フェールオーバーが完了し、「vm-cluster」が「hv-host1」で起動されることを確認してください。
※フェールオーバーが完了すると、「hv-host2」は分離状態から停止状態になります。
このように、フェールオーバーが完了すると仮想マシンが再び起動されますが、仮想マシン上で稼働しているサービスはそのまま停止したままです。仮想マシンが起動した後に、Windowsサービスやアプリケーションが自動で起動されるような設定がされていれば、フェールオーバーが完了した後もサービスが自動で再開されるようになります。
7. TIPS ~ Witness の重要性を再確認 ~
フェールオーバーの動作を実際に確認しましたが、その裏で「Witness」が重要な役割を果たしていたことにお気づきでしょうか?
Witnessは第4回記事でご紹介したように、クラスターがスプリットブレイン状態にならないようにするために重要な役割を担っています。中でも、2ノードで構成されるクラスターの場合にはWitnessが "必須" になるということもご紹介しました。それは、投票されたノードが停止した場合はクラスターが完全に停止してしまうからです。クラスターが停止すると、フェールオーバーマネージャーでの情報閲覧や操作ができなくなります。
※Hyper-Vマネージャーによる稼働中のホストへのアクセスは可能です。
<クラスター停止後のフェールオーバークラスターマネージャー>
<クラスター停止後のHyper-Vマネージャー>
今回フェールオーバーの動作を確認した環境も、2ノードクラスターです。Witnessが構成されていない状態で「hv-host2」の電源をオフにすると、投票されたノードが無くなってしまうため、クラスターが停止してしまいます。
しかし、今回はWitnessとして「ファイル共有監視」を事前に構成していたため、下図青枠部分のようにどちらのノードにも投票されている状態となります。この状態であれば、どちらのノードに電源障害が発生しても投票されたノードが必ず1台残るため、クラスターが稼働し続けることができます。
今回の記事で、「基礎から学ぶ!Hyper-V 仮想化入門」シリーズのラストとなります。これまでの記事をはじめから実施すれば、Hyper-Vの基本的な機能を検証できる環境を構築できます。昨今Hyper-V基盤が再注目されるようになっており、「知ってるようで知らない」という状態から脱却するためにも、是非ご活用ください。
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 技術統括部 第1技術部 2課
湯村 成一 - Seiichi Yumura -
Dell Technologies社製品のプリセールス業務を行うエンジニア。
主にVxRail・Azure Stack HCIといったHCI製品を担当している。