如何设置 Hyper-V 复制 [逐步指南]

你管理Hyper-V虚拟机(VM)并希望建立灾难恢复计划吗?您可以开始使用Hyper-V复制。事情可能会出错,而且很可能会出错。如果您只有一个副本的虚拟机,那么您就为自己准备了一系列痛苦。

拥有一个或多个虚拟机的副本,尤其是关键的副本,不需要复杂和昂贵。微软在Hyper-V中内置了一个复制功能,您可以在不引入第三方软件或设备到您的基础架构中的情况下设置。

如果您准备好学习如何启用Hyper-V复制并准备防止可能的灾难性数据丢失,那么让我们开始吧!

先决条件

本教程将进行实际演示。如果您想跟着做,请确保您具备以下条件:

两台Hyper-V主机服务器。这两台主机可以在活动目录(AD)域或工作组中。本教程将使用以下详细信息的两台服务器。

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主机必须至少有一个要复制的客户虚拟机。在本教程中,主机将有一个名为webserver的客户虚拟机。

有关Hyper-V系统要求的更多详细信息,请参阅Windows Server上的Hyper-V系统要求

为Hyper-V复制准备主机

假设您已经准备好了先决条件,不要考虑开始Hyper-V复制。在复制虚拟机之前,还有一些准备工作要做。以下是准备好一切所需的一般事项。

允许Hyper-V复制流量

如果您在Hyper-V主机上使用的是Windows防火墙,则此部分仅适用。如果不是,则可以跳过下一部分。

或者,如果您当前正在使用Windows防火墙并希望彻底禁用它,请阅读如何禁用或关闭Windows防火墙(所有方法)

当您在服务器上安装Hyper-V角色时,Windows会在Windows防火墙中创建两个额外的入站规则。这两个规则控制是否允许Hyper-V复制流量,它们是:

  • Hyper-V复制HTTP监听器(TCP-In) – 用于Hyper-V复制监听器以接受HTTP连接进行复制的入站规则(通过端口80,不加密)。
  • Hyper-V 复制 HTTPS 监听器(TCP-In) – 用于接受复制(通过端口 443 加密证书)的 HTTPS 连接的 Hyper-V 复制侦听器的入站规则。

默认情况下,这些 Windows 防火墙是禁用的,有效地阻止了 Hyper-V 复制流量到主机的访问。但本教程的重点是仅通过 HTTPS 设置 Hyper-V 复制,而不是 HTTP。

要启用 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. 服务器上,以管理员身份打开 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复制的自签名证书。

对于两个Hyper-V主机之间基于证书的身份验证,您将需要三个证书。每个主机需要一个根证书和一个服务器证书。按照以下步骤生成这些证书。

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 cmdlet 在个人证书存储中创建自签名的根证书。

## 创建并保存根 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 Root CA.pfx)和副本服务器证书文件(hyperv-wa.pfx)复制到副本服务器。

Copying the certificate files to the replica host

在副本主机上安装证书

为了使基于证书的身份验证在两个 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-ItemProperty PowerShell命令。

## 禁用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 复制并开始复制虚拟机。

启用主机作为复制服务器

在 Hyper-V 主机可以托管 VM 复制之前,必须首先将主机启用为复制服务器。要执行此操作,请按照以下步骤进行。

  1. 在复制主机上,打开 Hyper-V 管理器。为此,请在 PowerShell 中运行 virtmgmt.msc 命令。
  2. Hyper-V 管理器 窗口中,右键单击复制服务器名称,然后单击 Hyper-V 设置。
Open the Hyper-V settings

3. 接下来,在 Hyper-V 设置窗口中,点击左窗格上的 复制配置

在右窗格中,勾选框,即 将此计算机启用为复制服务器。这将启用下面的所有其他配置选项。

身份验证和端口 部分,勾选 基于用户证书的身份验证(HTTPS) 框。将端口号值保留为 443。

Enabling the server as a replica

4. 在 身份验证和端口 部分下,点击 选择证书。在 Windows 安全 弹出框上,确认证书是否正确,然后点击 确定

Selecting the server certificate

选择证书后,您应该看到指定证书框现在显示证书详细信息。

Certificate details

注意:如果没有有效证书或者您没有正确安装证书,您将看到类似下图的错误。在这种情况下,您需要返回并安装证书。

The error shows no valid certificate

5. 接下来,在授权和存储下,选择允许来自任何经过身份验证的服务器的复制。这样做可以让任何 Hyper-V 服务器在证书验证成功的情况下将虚拟机复制到此服务器。

要仅允许特定服务器进行复制,请选择允许来自指定服务器的复制选项,并逐个添加每个服务器的详细信息。

输入或浏览存储副本文件的位置。在本示例中,存储位置为C:\Hyper-V\Virtual Hard Disks。确保选择一个具有足够存储空间来容纳虚拟机副本文件的位置。

最后,点击确定保存更改。

Choosing the authorization and storage

启用虚拟机复制

到目前为止,您已经启用了副本主机接受传入的 Hyper-V 虚拟机复制。此时,您已准备好启用虚拟机复制。按照以下步骤进行操作。

1. 在主机上打开 Hyper-V 管理器窗口。

2. 接下来,单击左窗格上的 Hyper-V 服务器。在虚拟机列表下,单击要复制的虚拟机,然后在操作窗格下单击启用复制

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. 接下来,在选择证书对话框中,单击选择之前生成的带有主机的服务器名称的证书。选择证书后,单击确定

Selecting the server certificate

7. 选择证书后,您现在应该看到证书信息,如下所示。单击下一步继续。

Confirming the certificate details

8. 接下来,选择要包括在复制中的虚拟硬盘(VHD)。如果有多个VHD,请确保选择包含VM操作系统的VHD。下面的示例只有一个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 的初始副本发送到副本服务器:

  • 通过网络发送初始副本。此选项通过网络复制 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

检查复制健康状况

因此,您已为所选的虚拟机启用了 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/