复制(Replica)
1、 Hyper-V主机启用复制配置
        在之前的章节中我已经简单的介绍了复制(Replica)功能,Hyper-V 复制功能是Hyper-V 3.0的新功能之一,它是一种异步虚拟机复制技术,主要用于商业连续性与灾难的恢复,可用于任何服务器、网络或者存储,它并不需要任何共享存储,可以是单个或者多个虚拟机进行复制。它使用Hyper-V卷影复制服务(VSS)编辑器将主机上的虚拟机(VM)的快照数据转移到辅助主机。就是将主的Hyper-V主机中的虚拟机复制到另外的Hyper-v主机上,并可进行增量的复制。当主的Hyper-v主机上的虚拟机出现问题,则复制过来的虚拟机就会接替工作,给数据损失降低到最小。复制服务器可接受来自1台或者多台主机服务器的传入复制通信。所以说,复制功能是Hyper-V 3.0增加了灾难恢复功能。一个真正的多站点灾难恢复解决方案,在相同的位置(本地备份)或者是不同的物理位置都是可以实现的。它还允许常规备份可以通过存储介质运输到异地,同时备份每5分钟更新1次。
clip_p_w_picpath002
 
        在实际生产环境中,如果使用复制功能,要配置相应的物理网络,启用复制后,首次同步开始复制数据时,副本需要传输虚拟机的当前状态。然后进行快照(卷影复制服务(VSS)),之后进行虚拟机传输,需要大量的带宽。但复制也可以采用不同的复制方式,Hyper-V3.0支持3中复制方式;一种是使用网络复制,就是通过网络将所选VHD传输到服务器,可以立刻进行或是在指定时间进行。第二种是在复制服务器上使用备份的副本,就是将虚拟机的备份副本传输到复制服务器上,第三种就是使用外部介质,将要复制的虚拟机VHD到外部介质,可将外部介质交送到复制站点。
        在完成第一次复制后,Hyper-V 复制功能会按照计划的频率将虚拟机的变更发送出去。这些变更是通过日志文件追踪的,并且在将变更发往复制服务器之前会进行压缩。在主服务器上,变更会被保存在一个 .hrl 文件中,该文件与被复制的 VHD 文件位于相同位置下。
 
clip_p_w_picpath004
 
        使用Powershell命令来开启复制功能+使用Kerberos验证+允许任何经过身份验证额服务器中进行复制。
[Hyper-v01.mbf.com]: PS C:\Users\administrator.MBF\Documents> Set-VMReplicationServer $true -AllowedAuthenticationType Kerberos -KerberosAuthenticationPort 80 -ReplicationAllowedFromAnyServer $true -DefaultStorageLocation 'C:\Hyper-V\Virtual Hand Disks'
p_w_picpath
 
      从命令中可以看到这么几个关键词,只要设置这几个就可以了。
Set-VMReplicationServer 启动此计算机作为副本服务器
-AllowedAuthenticationType 选择身份验证方式
Kerberos -KerberosAuthenticationPort 指定验证类型和端口
-ReplicationAllowedFromAnyServer 允许从任何经过身份验证的服务器中进行复制
-DefaultStorageLocation 指定副本的默认存储位置
 
        在主服务器和副本服务器之间发送的复制数据采用加密技术,为了提供加密复制数据传输,副本会使用基于证书的身份验证,因此必须拥有或创建合适的安全证书。Kerberos 身份验证只有在主服务器和副本服务器均为同一域的成员或者位于相互信任的域内的时候才可用。其它的则需要基于证书的身份验证。如果将副本配置为使用 Kerberos 身份验证,则从主服务器传输到副本服务器的数据就没有加密。对于需要加密的数据,你应该使用基于证书的身份验证。你可以提供现有的 X.509v3 证书或创建一个自签名证书。
        我们可以使用Makecert.exe 实用工具来创建自签名证书,MakeCert.exe 可以从 Microsoft .NET Framework 中获得。如果安装了VS2008或VS2012后发现路径\Tools\Bin\下有许多小工具。MakeCert.exe 也可从 Platform SDK 中获得。MakeCert.exe 用于创建 X.509 证书。它为数字签名创建公钥和私钥对,并将其存储在证书文件中。此工具也将密钥对与指定发布服务器相关联,创建将用户指定的名称绑定到密钥对公共部分的 X.509 证书。
 
clip_p_w_picpath006
 
        首先,将makecert拷贝到Hyper-V01主服务器上,命令来创建自签名测试根颁发机构证书:
makecert -pe -n "CN=PrimaryTestRootCA" -ss root -sr LocalMachine -sky signature -r "PrimaryTestRootCA.cer"
 
        然后使用命令提示符运行以下命令来创建测试根颁发机构证书签名的一个证书,提供主服务器的 FQDN:
clip_p_w_picpath007
 
        然后将将makecert拷贝到Hyper-V02副本服务器上,然后使用命令提示符运行以下命令来创建测试根颁发机构证书签名的一个证书,提供副本服务器的 FQDN:
clip_p_w_picpath008
        clip_p_w_picpath009
 
        创建完成证书后,将文件 ReplicaTestRootCA.cer 从副本服务器复制到主服务器,然后使用以下命令将其导入:
certutil -addstore -f Root "ReplicaTestRootCA.cer"
 
        将文件 PrimaryTestRootCA.cer 从主服务器复制到副本服务器,然后使用以下命令将其导入:
certutil -addstore -f Root "PrimaryTestRootCA.cer"
 
        默认情况下,需要进行证书吊销检查;不过自签名证书不支持吊销检查。使用以下命令编辑主服务器和副本服务器上的注册表即可禁用检查:
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\FailoverReplication" /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f
clip_p_w_picpath010
 
 
2、 Hyper-V主机防火墙开启复制
       无论是使用HTTPS还是HTTP的验证方式,在启动复制前,必须要开启相对应的防火墙规则,要不,服务器就无法正常的复制到副本服务器。如果使用GUI界面的Hyper-v复制功能启动后,则会提示你要开启防火墙的的端口“80”的入站TCP例外。必须启用Hyper-V副本HTTP侦听器的入站规则。
clip_p_w_picpath011
 
        如果是GUI界面下的防火墙,首先打开windows防火墙的输入规则,按照自己的复制设置,点选打开相应的入站规则。建议将要复制的主服务器和副本服务器都同时打开相应的端口,因为不可避免会有反向复制的需求,就是主服务器和副本服务器的角色互换,如果没开,则复制会失败。
clip_p_w_picpath013
 
        如果是使用Powershell的方式打开防火墙,这就非常方便,首先我们先通过命令来查看Hyper-v01的复制设置。
clip_p_w_picpath014
 
        之后通过Powershell命令查看复制设置的存放虚拟机的路径地址。
clip_p_w_picpath015
 
        在windows Hyper-v server 2012里,通过Powershell命令打开防火墙,由于是中文环境,所以必须输入中文。打开HTTP和HTTPS的命令相同。
clip_p_w_picpath016
clip_p_w_picpath017
 
        这里要注意一下,如果是英文版本的windows Hyper-v server 2012,则通过下面的命令打开,如果是繁体版的,则和简体版的也不同。
clip_p_w_picpath018
 
 
3、 虚拟机启用复制配置
        当设定好了Hyper-V的复制功能设置,并且打开了防火墙,接下来就可以启动复制了,如果启用复制,那么会对主服务器的虚拟机执行复制工作,由于初始复制是将主服务器的虚拟机完整的复制到副本服务器上,所以非常消耗带宽,所以建议指定在网络压力较低的时候进行复制,这样就可以降低复制的时间。不会影响到其他的虚拟机。
        首先我们在主服务器上建立一台虚拟机win7,然后保持他正常的运作,我们先使用Powershell的方式来进行复制。
clip_p_w_picpath020
 
        如果使用Powershell命令,在启动虚拟机复制前,可以通过命令来测试下2台Hyper-V主机的复制通信是否正常,这是在GUI见面下无法进行测试的。在Hyper-v01上测试副本服务器Hyper-v01,验证方式为kerberos 80。
clip_p_w_picpath022
 
        之后我们使用命令来针对win7启用复制功能,实际上在使用这个命令后,win7虚拟机并没有正真开始复制,而是在副本服务器上创建了win7的副本,并没有进行初始的复制,不会将虚拟机的资料复制过去。
clip_p_w_picpath023
 
        当使用启动复制命令后,此时win7才开始初始的复制。
clip_p_w_picpath024
 
        设置Hyper-v01上的虚拟机win7复制到Hyper-v02的副本服务器上,验证方式为Kerberos,端口为80,复制点为7个,增量VSS复制频率为7。
clip_p_w_picpath025
 
        如果在GUI界面中,使用Hyper-V管理器连接到2台Hyper-V主机,在要做复制的虚拟机上,右键选择启动复制,或者是在Hyper-V管理员右下角虚拟机点击启用复制。
clip_p_w_picpath027
 
        指定副本副本服务器,可以手动输入或是使用浏览的方式选取,为了避免错误,通过浏览域控来查找,如果是跨越数据中心的复制,则在此输入IP地址。如果这里出现指定的副本服务器未设定为从主服务器接收复制的错误,出现这样的错误有3种,一种是副本服务器没有指定主服务器或者是没有设置接受任意服务器的复制,另一种就是副本或是主服务器的防火墙没有打开相应的端口,导致通信不畅通。还有一种就是通过证书来认证的复制没有相互认证通过,要重新生成证书。
clip_p_w_picpath029
 
        指定连接的参数验证类型,由于是统一域环境,则通过使用Kerberos验证,跨越域的情况则需要指定相应的证书。
clip_p_w_picpath031
 
        在配置恢复历史界面中,来指定在副本服务器上保留的复原点数目,如果选择不存储任何其它的恢复点,副本服务器就只会保留收到的最新复制资料,会在5-15分钟更新一次,这取决于复制整个虚拟机所需的时间,如果是选择保留1个或多个恢复点,这些恢复点则会每个小时建立一次。此外,也可以选择在指定间隔时间储存一致性快照,使用VSS增量复制。
clip_p_w_picpath033
 
        前面也说过了,由于第一次的复制是复制整个虚拟机,所以相对复制的内容比较多,文件较大,比如win7这台虚拟机就需要6.91GB的虚拟硬盘的初始大小。在选择初始复制方法的页面中,除了可以选择通过网络进行复制以外,还可以通过外部介质发送外部副本,或是使用副本服务现有的虚拟机作为初始副本,使用副本服务现有的虚拟机作为初始副本的前提就是已已经通过外部介质把虚拟机的副本考到副本服务器了,然后可以选择副本服务器的现有虚拟机。
clip_p_w_picpath035
 
 
4、 虚拟机TCP/IP容错转移设置
        如果启用了虚拟机的复制功能,则在虚拟机的设置中,网络设置里就会出现一个容错转移TCP/IP的设置,主要用处就是当主服务器上的虚拟机出现故障,容错转移后,副本服务器上的虚拟机变成主虚拟机,容错转移TCP/IP就会将设置好的IP地址套用到虚拟机上面,这样就节省了当出现容错后,虚拟机里服务无法正常运作的问题。如果复制虚拟机采用的是动态IP分配,那么就不需要填写IP地址。当需要设置容错转移TCP/IP,一定要在主虚拟机和副本虚拟机要同时设置。
clip_p_w_picpath037
 
        如果使用Powershell来设置容错转移TCP/IP,是非常简单的。在主服务器或者副本服务器设定win7虚拟机网络界适配器容错转移TCP/IP,IPv4地址为192.168.1.222,掩码为255.255.255.0,网关192.168.1.1,DNS为192.168.1.200
Get-VMNetworkAdapter win7 "网络适配器" | Set-VMNetworkAdapterFailoverConfiguration -IPv4Address 192.168.1.222 -IPv4SubnetMask 255.255.255.0 -IPv4DefaultGateway 192.168.1.1 -IPv4AlternateDNSServer 192.168.1.200
p_w_picpath
 
        使用Powershell来清除容错转移TCP/IPv4设置。
Get-VMNetworkAdapter win7 "网络适配器" | Set-VMNetworkAdapterFailoverConfiguration –ClearFailoverIPv4Settings
p_w_picpath
 
      在主服务器或者副本服务器设定win7虚拟机网络界适配器容错转移TCP/IP,IPv6地址为910a:2222:5498:8475:1111:3900:2020
Get-VMNetworkAdapter win7 "网络适配器" | Set-VMNetworkAdapterFailoverConfiguration -IPv6Address CDCD:910A:2222:5498:8475:1111:3900:2020 -IPv6SubnetPrefixLength 12
p_w_picpath
 
        使用Powershell来清除容错转移TCP/IPv6设置。
Get-VMNetworkAdapter win7 "网络适配器" | Set-VMNetworkAdapterFailoverConfiguration –ClearFailoverIPv6Settings
p_w_picpath
 
        设置完成后查看容错转移TCP/IP的设置。
clip_p_w_picpath038
 
 
5、 监控虚拟机复制
        在GUI界面里,通过Hyper-V管理器来查看复制的健康情况,复制类型显示为主要,代表你目前开启的复制健康状况是由主服务器开启,如果是副本服务器则显示副本。只要复制健康情况显示正常,基本上就没有什么大的问题,由于我这里是通过Powershell开启启动,但是还没有执行初始复制,所以在复制资料里面并没有统计信息,在启动复制以后,过几分钟会就会显示复制的状态,直到初始复制结束。
clip_p_w_picpath040
        通过Powershell的方式也能进行查看主机的复制状态。
clip_p_w_picpath041
        暂停虚拟机的复制
clip_p_w_picpath042
        继续虚拟机的复制
clip_p_w_picpath043
        检查虚拟机WIN7的状态
clip_p_w_picpath044
        重新整理虚拟机的状态
clip_p_w_picpath045