Hyper-V レプリケーションの設定方法[ステップバイステップ]

あなたはHyper-V仮想マシン(VM)を管理して、災害復旧計画を立てたいですか? Hyper-Vレプリケーションを導入して始めることができます。問題が発生する可能性があり、おそらく発生します。そして、仮想マシンのコピーが1つしかない場合、それは苦痛の世界に備えていることになります。

特に重要なものを含む1つ以上のVMのレプリカを持つことは、複雑で高価である必要はありません。MicrosoftはHyper-Vに組み込まれたレプリケーション機能を提供しており、これを導入する際にはサードパーティのソフトウェアやアプライアンスをインフラに導入する複雑さがありません。

Hyper-Vレプリケーションを有効にする方法を学び、潜在的な壊滅的なデータ損失を防ぐ準備ができているなら、始めましょう!

前提条件

このチュートリアルは実演形式です。一緒に進めたい場合は、以下を確認してください:

2つのHyper-Vホストサーバー。これらの2つのホストはActive Directory(AD)ドメインまたはワークグループにある場合があります。このチュートリアルでは、次の詳細を持つ2つのサーバーを使用します。

Hostname IP Address Designation Location Operating System
hyperv-ny 10.1.0.4 Primary Server Primary Site Windows Server 2019 Datacenter (version 1809)
hyperv-wa 10.0.0.4 Replica Server Secondary Site Windows Server 2019 Datacenter (version 1809)

プライマリHyper-Vホストには、少なくとも1つのレプリケートするゲスト仮想マシンが必要です。このチュートリアルでは、プライマリホストにwebserverという名前の1つのゲストVMがあります。

Hyper-V システム要件の詳細については、Windows Server の Hyper-V に関するシステム要件を参照してください。

Hyper-V レプリケーションのためのホストの準備

前提条件が整っていると仮定しても、まだ Hyper-V レプリケーションを開始することを考えないでください。仮想マシンをレプリケートする前に、まだいくつかの準備が必要です。以下は、全てが準備できる前にチェックオフする必要がある一般的な項目です。

Hyper-V レプリケーショントラフィックを許可する

このセクションは、Hyper-V ホストで Windows ファイアウォールを使用している場合にのみ適用されます。そうでない場合は、次の部分にスキップできます。

または、現在 Windows ファイアウォールを使用しており、完全に無効にしたい場合は、Windows ファイアウォールを無効にする方法(すべての方法)を読んでください。

サーバーに Hyper-V の役割をインストールすると、Windows は Windows ファイアウォールに追加の受信ルールを2つ作成します。これら2つのルールは、Hyper-V レプリケーショントラフィックを許可するかどうかを制御し、それらは次のとおりです:

  • Hyper-V レプリカ HTTP リスナー (TCP-In) – レプリケーション用の HTTP 接続を受け入れるための Hyper-V レプリカリスナーの受信ルール(ポート 80 経由、暗号化されていません)。
  • Hyper-V レプリカ HTTPS リスナー(TCP-In) – レプリケーションのためのHTTPS接続を受け入れるHyper-Vレプリカリスナーの入力ルール(ポート443経由で、証明書で暗号化されています)。

これらのWindowsファイアウォールはデフォルトで無効になっており、実質的にはHyper-Vレプリケーショントラフィックをホストにブロックしています。ただし、このチュートリアルの焦点はHTTPではなくHTTPS経由でのHyper-Vレプリケーションの設定です。

Hyper-Vレプリケーションファイアウォールルールを有効にするには、次の手順に従ってください。

1. レプリカサーバーにログインし、管理者としてPowerShellを開きます

2. 以下のPowerShellコマンドを実行して、Enable-Netfirewallruleコマンドを実行します。

# Hyper-V HTTPSレプリケーショントラフィックファイアウォールルールを有効にする。
Enable-Netfirewallrule -DisplayName 'Hyper-V Replica HTTPS Listener (TCP-In)'

3. 最後に、正常にファイアウォールルールを有効にしたかどうかを確認するために、以下のコマンドを実行します。

Get-Netfirewallrule -DisplayName 'Hyper-V Replica HTTPS Listener (TCP-In)'

すべてがうまくいけば、以下のスクリーンショットと同様の結果が表示されます。

Enabling Hyper-V replication firewall rules

Hyper-Vホストレコードの設定

Hyper-VホストがDNSルックアップを通じて互いの名前を解決できる場合は、このセクションをスキップできます。

Hyper-Vレプリケーションを有効にするときには、構成中にレプリカサーバーの名前を指定します。Hyper-Vが二次サーバーを名前で見つけられるかどうかは、適切な名前解決に依存します。

ネットワーク上でHyper-Vノードが互いの名前を見つけるためには、両方のサーバーのhostsファイルを編集し、それぞれの名前とIPアドレスを追加する必要があります。以下の手順に従って操作してください。

  1. 1. プライマリサーバーで、管理者としてPowerShellを開きます。

2. 以下のコマンドを実行してhostsファイルをnotepad.exeで編集します。

notepad.exe "$env:windir\system32\drivers\etc\hosts"

3. hostsファイルが開かれたら、テキストエディターの最下部までスクロールし、以下のようにレプリカサーバーのIPアドレスと名前を追加します。

IPアドレスとサーバー名は、ご自身のものを使用してください。

10.1.0.4	hyperv-wa

4. ファイルを編集した後、CTRL+Sを押すか、ファイル —> 保存をクリックして変更内容を保存します。

5. レプリカサーバーでも同じ手順を繰り返し、プライマリサーバーの名前とIPアドレスをレプリカサーバーのhostsファイルに追加します。以下のスクリーンショットは、両サーバーのhostsファイルの最終状態を並べて表示しています。

Updating the hosts file

自己署名証明書の作成

このセクションは、Hyper-Vレプリケーションが証明書ベースの認証(HTTPS)を使用する場合のみ適用されます。Hyper-Vホストがドメインに参加しており、Kerberos認証(HTTP)を使用する場合は、このセクションをスキップできます。

HTTPS経由のHyper-Vレプリケーションには、プライマリおよびレプリカホストの両方が共通の発行者によって発行された証明書を使用する必要があります。Hyper-Vはこれらの証明書を使用してプライマリサーバーをレプリカサーバーに対して認証します。

代わりに、DigiCertNameCheapのような外部の証明書プロバイダーから証明書を購入する代わりに、Hyper-Vレプリケーションで無料で自己署名証明書を生成できます。

2つのHyper-Vホスト間の証明書ベースの認証には、3つの証明書が必要です。各ホストにルート証明書サーバー証明書が必要です。これらの証明書を生成するための手順は以下の通りです。

1. プライマリホストサーバーで、管理者としてPowerShellを開きます。

2. 次に、PowerShellで以下のコマンドを実行して、次の変数を定義します。各変数を理解するためのインラインコメントを参照して、必要に応じて値を置換してください。

# 証明書変数の設定

## 新しいルートCA証明書の名前を指定します。
$rootCA_Name = 'Hyper-V Root CA'

## Hyper-Vサーバーの名前を指定します。
$hostnames = @('hyperv-ny','hyperv-wa')

## PFX証明書のエクスポートに使用するパスワードを指定します。
$CertPassword = 'this is a strong password' | ConvertTo-SecureString -Force -AsPlainText

## 作成後のPFX証明書のエクスポート先を指定します。このフォルダが存在することを確認してください。
$CertFolder = 'C:\HPVCerts'

3. 証明書変数を定義した後、以下のコマンドを実行してルート証明書を生成します。このコマンドは、サーバーのNew-SelfSignedCertificateコマンドレットを使用して、自己署名のルート証明書を作成します。個人証明書ストアに保存されます。

## ルートCA証明書を '個人' 証明書ストアに作成して保存します。
## 10年間有効です。
$rootCA = New-SelfSignedCertificate `
-Subject $rootCA_Name  `
-FriendlyName $rootCA_Name `
-KeyExportPolicy Exportable  `
-KeyUsage CertSign  `
-KeyLength 2048  `
-KeyUsageProperty All  `
-KeyAlgorithm 'RSA'  `
-HashAlgorithm 'SHA256'  `
-Provider "Microsoft Enhanced RSA and AES Cryptographic Provider"  `
-NotAfter (Get-Date).AddYears(10)

4. サーバーがルート証明書を信頼するようにするには、以下のコマンドを実行してルート証明書を信頼されたルート証明機関証明書ストアにコピーします。

## 'パーソナル'ストアからルートCAを '信頼されたルート証明機関'ストアにコピーします。
$rootStore = [System.Security.Cryptography.X509Certificates.X509Store]::new("Root","LocalMachine")
$rootStore.Open("ReadWrite")
$rootStore.Add($rootCA)
$rootStore.Close()

5. 次に、以下のコマンドを実行して、Export-PfxCertificate cmdlet を使用してルート証明書をファイルにエクスポートします。後で レプリカサーバーにコピーできるように証明書をエクスポートする必要があります。

## ルートCAのエクスポート
$rootCA | Export-PfxCertificate -FilePath "$CertFolder\$($rootCA_Name).pfx" -Password $CertPassword -Force
Exporting the Root Certificate

6. 今度は、作成したルート証明書で署名されたサーバー証明書を生成します。各 Hyper-V ホスト用のサーバー証明書を作成し、各証明書をファイルにエクスポートするために、以下のコマンドを実行します。

$hostnames | ForEach-Object {
	$name = $_
	## 証明書の作成
	New-SelfSignedCertificate `
	-FriendlyName $name `
	-Subject $name `
	-KeyExportPolicy Exportable `
	-CertStoreLocation "Cert:\LocalMachine\My" `
	-Signer $rootCA `
	-KeyLength 2048  `
	-KeyAlgorithm 'RSA'  `
	-HashAlgorithm 'SHA256'  `
	-Provider "Microsoft Enhanced RSA and AES Cryptographic Provider"  `
	-NotAfter (Get-Date).AddYears(10) |
	## 証明書のエクスポート
	Export-PfxCertificate -FilePath "$CertFolder\$($name).pfx" -Password $CertPassword -Force
}
Generating and exporting the server certificates

7. 最後に、ルート証明書ファイル(Hyper-V ルート CA.pfx)とレプリカサーバー証明書ファイル(hyperv-wa.pfx)をレプリカサーバーにコピーします。

Copying the certificate files to the replica host

レプリカホストに証明書をインストールする

2つの Hyper-V ホスト間の証明書ベースの認証を機能させるには、レプリカホストにも同じルート証明書とサーバー証明書が存在する必要があります。以下の手順に従って、ルート証明書とサーバー証明書をインストールします。

1. レプリカホストで、管理者として PowerShell を開きます。

Import- PfxCertificateコマンドを以下に実行して、ルート証明書を信頼されたルート証明機関ストアにインストールします。必要に応じて変数の値を変更してください。

## ルートCA証明書の名前を指定します。
$rootCA_Name = 'Hyper-V Root CA'

## PFX証明書ファイルの場所。
$CertFolder = 'C:\HPVCerts'

## エクスポートされたPFX証明書のパスワードは何ですか。
$CertPassword = 'this is a strong password' | ConvertTo-SecureString -Force -AsPlainText

## ルートCAをインポートします。
Import-PfxCertificate  "$CertFolder\$($rootCA_Name).pfx" -CertStoreLocation Cert:\LocalMachine\Root -Password $CertPassword
Importing the root certificate

3. サーバー証明書を個人証明書ストアにインストールするには、以下のコマンドを実行します。

## サーバー証明書をインポートする
Import-PfxCertificate  "$CertFolder\$($env:COMPUTERNAME).pfx" -CertStoreLocation Cert:\LocalMachine\My -Password $CertPassword
Importing the server certificate

4. 最後に、Hyper-Vレジストリを設定して証明書の失効の確認を無効にします。これにより、Hyper-Vは自己署名証明書に存在しない証明書の失効詳細を確認しようとしません。以下のNew-ItemPropertyPowerShellコマンドを実行します。

## Hyper-V証明書失効チェックを無効にします。
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication" -Name "DisableCertRevocationCheck" -Value 1 -PropertyType DWORD -Force

Hyper-Vレプリケーションの構成

Hyper-Vホストの準備が完了しました。これでHyper-Vレプリケーションを有効にし、VMのレプリケーションを開始できます。

ホストをレプリカサーバーとして有効にする

Hyper-VホストがVMレプリカをホストできるようにするには、まずホストをレプリカサーバーとして有効にする必要があります。以下の手順に従ってください。

  1. レプリカホストでHyper-V Managerを開きます。これには、PowerShellでvirtmgmt.mscコマンドを実行します。
  2. Hyper-V Managerウィンドウにあるときに、レプリカサーバー名を右クリックし、Hyper-V設定をクリックします。
Open the Hyper-V settings

3. 次に、Hyper-V設定ウィンドウで、左ペインのReplication Configurationをクリックします。

右ペインで、このコンピューターをレプリカサーバーとして有効にするのチェックボックスをオンにします。これにより、以下の他の構成オプションが有効になります。

認証およびポートセクションで、ユーザー証明書ベースの認証(HTTPS)のボックスをチェックします。ポート番号の値は443のままにします。

Enabling the server as a replica

4. 認証およびポートセクションで、Select Certificateをクリックします。Windows Securityのポップアップボックスで、証明書が正しいことを確認してOKをクリックします。

Selecting the server certificate

証明書を選択した後、証明書の指定ボックスに証明書の詳細が表示されるはずです。

Certificate details

注意: 有効な証明書がないか、証明書が正しくインストールされていない場合は、以下の画像のようなエラーが表示されます。その場合は、戻って証明書をインストールする必要があります。

The error shows no valid certificate

5. 次に、認証とストレージの下で、すべての認証済みサーバーからのレプリケーションを許可を選択します。これにより、証明書ベースの認証が成功する限り、任意のHyper-VサーバーがこのサーバーにVMをレプリケートできるようになります。

特定のサーバーのみをレプリケーションを許可するには、指定されたサーバーからのレプリケーションを許可オプションを選択し、各サーバーの詳細を追加してください。

レプリカファイルを保存する場所を入力するか、参照します。この例では、ストレージの場所はC:\Hyper-V\Virtual Hard Disksです。VMのレプリカファイルを収容できる十分なストレージスペースがある場所を選択してください。

最後に、変更を保存するためにOKをクリックします。

Choosing the authorization and storage

仮想マシンのレプリケーションの有効化

これで、レプリカホストがVMのHyper-Vレプリケーションを受け入れるようになりました。この時点で、VMのレプリケーションを有効にする準備が整いました。以下の手順に従って続行してください。

1. プライマリホストで、Hyper-V Managerウィンドウを開きます。

2. 次に、左側のペインでHyper-Vサーバーをクリックします。VMのリストの下で、レプリケーションを有効にするVMをクリックし、レプリケーションの有効化アクションペインの下でクリックします。

Selecting the VM for Hyper-V replication

3. <VM名> のレプリケーションを有効にする ダイアログボックスが表示されたら、次へ をクリックしてください。開始する前に ページで。

4. レプリカサーバーを指定 ページで、レプリカサーバー ボックスにレプリカサーバーのホスト名を入力し、次へ をクリックしてください。

Specifying the target replica server

5. 今、接続パラメーターを指定 ページで、レプリカサーバーポート 番号を 443 に変更してください。

認証タイプ オプションの下で、ユーザー証明書ベースの認証(HTTPS) を選択してクリックしてください。

この時点で証明書情報が空白になっていることに注意してください。証明書を選択するには、証明書を選択 をクリックしてください。

Specifying the port and authentication type

6. 次に、証明書を選択 ダイアログボックスで、以前に生成したプライマリホストのサーバー名を持つ証明書を選択してクリックしてください。証明書を選択した後は、OK をクリックしてください。

Selecting the server certificate

7. 証明書を選択した後、証明書情報が表示されるはずです。次に進むには、次へ をクリックしてください。

Confirming the certificate details

8. 次に、レプリケーションに含める 仮想ハードディスク (VHD) を選択します。複数の VHD がある場合は、VM のオペレーティングシステムを含む VHD を選択してください。以下の例では、1 つの VHD のみがあります。選択を行った後は、次へ をクリックしてください。

Selecting VHDs to replicate

9. 次のページで、ドロップダウンリストからレプリケーション間隔を選択します。この値は、Hyper-Vが変更をレプリカサーバーに送信する頻度を決定します。デフォルトの間隔は5分です。その他の利用可能なオプションは、30秒および15分です。次をクリックします。次へ

Choosing the Hyper-V replication interval

10. 追加のリカバリポイントの構成ページで、最新のリカバリポイントのみ保持するオプションをクリックします。

このオプションを選択すると、Hyper-VはVMの最新のリカバリポイントまたは状態のみをレプリカサーバーに保持します。このオプションは最も少ないストレージ容量を使用しますが、単一のポイントでのリカバリしか有効ではありません。次をクリックして進みます。次へ

Selecting the recovery points to maintain

11. 初期レプリケーション方法の選択では、VHDの初期コピーをレプリカサーバーに送信する方法について3つのオプションがあります:

  • ネットワーク経由で初期コピーを送信する。このオプションは、ネットワークを介してVHDをコピーします。
  • 外部メディアを使用して初期コピーを送信する。このオプションを選択すると、VHDのコピーを外部ストレージ(外付けハードドライブなど)に保存できます。その後、ストレージを物理的に輸送し、レプリカサーバーに接続してコピーします。
  • 既存の仮想マシンをレプリカサーバー上の初期コピーとして使用する。このオプションは、既にVMのコピーをレプリカサーバーに復元した場合にのみ適用されます。

実際の選択肢は評価に基づきます。ただし、このチュートリアルでは、ネットワーク経由で初期コピーを送信するを選択します。

次に、構成が完了したら即座にレプリケーションを開始して、レプリケーションプロセスを開始します。

Choosing the initial replication method

12. サマリーページでレプリケーション構成を確認し、確定するために完了をクリックします。

Finalizing the replication configuration

13. レプリケーションが正常に有効化されましたという確認メッセージが表示されるのを待ちます。 閉じるをクリックして、Hyper-V マネージャーウィンドウに戻ります。

Hyper-V レプリケーションは、仮想マシン、その構成、および VHD をレプリケーションします。ただし、レプリカサーバー上の生成されたレプリカは接続されていません。下記のように、まだレプリカ VM のネットワーク接続を構成する必要があります

Confirming the replication is now enabled

レプリケーションの状態をチェックする

選択した VM の Hyper-V レプリケーションを有効にしました。Hyper-V レプリケーションが進行中であるか、完了したか、失敗したかをどのように知ることができますか?幸いなことに、Hyper-V では Hyper-V マネージャー内でレプリケーションの健全性を確認する便利な機能が提供されています。

VM レプリケーションの健全性を確認するには、次の手順に従います。

プライマリホストの Hyper-V マネージャーウィンドウで VM 名を右クリック —> レプリケーション —> レプリケーションの健全性を表示

Opening the VM replication health

最初に、以下のスクリーンショットに示すようにレプリケーション状態メッセージが表示されます。これは、レプリケーションがまだ進行中であることを示しています。

Initial replication in progress

そして、Hyper-Vレプリケーションが完了したら、以下のようなメッセージが表示されます。

And that’s it! You’ve successfully set up Hyper-V replication for your VM.

以上です!VMのHyper-Vレプリケーションを正常に設定しました。

結論

最終的に、Hyper-Vレプリケーションの設定は、システム管理者が災害復旧を計画し実装する際に検討すべきものです。これを行うことは、データの損失や延長されたサービスのダウンタイムよりもコストがかかる可能性があります。もしもあなたの給与サーバーがオフラインになったらどうなるでしょうか?

Hyper-Vレプリケーションを使用したことがありますか?どう思いましたか?他の人にお勧めしますか、それとも組織が避けるべき理由があると思いますか?

Source:
https://adamtheautomator.com/hyper-v-replication/