作者:猫女莫尼卡
关键词:
Hyper-V
虚拟化
Live Migration
实时迁移是微软向Windows Server 2012 Hyper-V添加的最重要的功能,通过实时迁移功能,无需在Hyper-V主机之间移动虚拟机(VM)进行停机,同时在正常维护Hyper-V主机时,还可以将它托管的所有VM全部移走,等到维护结束后,再移回来,并且在这整个过程不用担心会引起业务中断。
此外,利用实时迁移功能还可以更好地动态调整主机资源利用率,将繁忙的Hyper-V主机上的部分VM移动到相对空闲的Hyper-V主机上,这样可以确保即便在业务高峰期也能给终端用户提供很好的性能。本文主要介绍Windows Server 2012 Hyper-V的实时迁移功能(Live Migration)。
一、约束委派设置的两种方法
1. 通过GUI界面设置
在我们进行实时迁移设置前,首先要进行配置约束委派,因为Hyper-V实时转移提供了两种验证通信协议,预设为CredSSP,另一种是Kerberos委派。不过相对比较安全的Kerberos委派可以阻绝任何不明启用的服务器使用委派,所以建议使用。如果使用Kerberos委派来验证实时迁移,那就必须要先设定限制委派,然后才可以继续其余的步骤,而且还要必须使用Domain Administrators群组成员的账户在Active Directory的Computers设置限制委派。如果使用CredSSP,那就不需要进行设定委派。
步骤1 打开“Active Directory 用户和计算机”管理单元。从服务器管理器 (SM) 中执行该操作,打开“Active Directory 用户和计算机”管理单元。从导航面板中选择域,然后双击“Computers”文件夹。在“Computers”文件夹中,右击源服务器的计算机账户,然后在弹出的快捷菜单中选择“属性”命令。
步骤2 在接下来弹出的“属性”对话框中,单击“委派”选项卡。在“委派”选项卡下选择“信任仅委派到特定服务的计算机”。在该选项下面,选择“仅限使用 Kerberos”。单击“添加。
步骤3 在接下来弹出的“添加服务”对话框中,单击“用户或计算机”按钮。
步骤4 在“选择用户或计算机”对话框中的“输入对象名称来选择”文本框中键入目标服务器的名称,单击“检查名称”按钮以验证你输入的名称是否正确,若无误,则单击“确定”按钮。
步骤5 在“添加服务”对话框,在可用服务列表中执行以下步骤,然后单击“确定”。要移动虚拟机存储器,请选择 cifs。如果要同时迁移存储器与虚拟机,而且仅迁移虚拟机的存储器,则需要执行此步骤。如果将该服务器配置为使用Hyper-V的SMB存储器,则应首先选中该选项。要迁移虚拟机,选择“Microsoft 虚拟系统迁移服务。
步骤6 在“属性”对话框的“委派”选项卡上,确定上一步选定的服务列在目标计算机可以为其提供委派证书的服务中,然后单击“确定”按钮。
委派要在域中的每台Hyper-V主机中都要添加相应的委派,否在会在迁移过程中报错。如在Hyper-V02中,就需要信任Hyper-V01中的Kerberos协议,并指定相应的服务类型。操作步骤与之前的相同。如果只设定一方,那就只能将虚拟机迁移过去,但却无法迁移过来。
2. 通过Powershell命令设置
下面我们用Powershell的方式进行委派,但是Powershell方式的委派非常麻烦,幸运的是在TeachNet Blogs中有提供了一个Set-KCD.ps1脚本文件,该脚本简化了烦琐的委派步骤,其地址为:http://blogs./b/matthts/archive/2012/06/10/configuring-kerberos-constrained-delegation-for-hyper-v-management.aspx
从Blogs上我们可以下载到Set-KCD脚本文件,下载之后解压后会有两个文件,一个是Set-KCD.ps1和Set-KCD.Zip。在解压Set-KCD.Zip后,会发现里面还有个Set-KCD.ps1,第二个Set-KCD.ps1文件大约9.2KB,第一个Set-KCD.ps1大小则为3KB,其实两种Set-KCD.ps1都能实现同样的效果,差别就是文件较大的Set-KCD.ps1文件包含服务类型的名称。
首先我先看大小为3KB的Set-KCD.ps1文件,其代码如图所示。
接下来我们看大小为9.2KB的Set-KCD.ps1文件,由于代码过长,这里只给出了部分代码,可自行下载后查看,其代码如图所示。
了解了Set-KCD脚本文件,在准备执行Set-KCD.ps1脚本文件之前,还需要进行一步操作,否则会在执行的过程中会出下无法加载文件的情况。
遇到这种事情是由于Set-KCD不是Windows Powershell内建的指令,所以必须要解除限制,设定为无限制才能执行。设置完成后,我们还可以恢复Windows Powershell内建的指令限制。首先使用Powershell命令Set-ExecutionPolicy Undefined,目的是降低Windows Powershell安全性,当执行完成后,可以使用Powershell命令Set-ExecutionPolicy RemoteSigned恢复其安全性。
下面我们就来设置mabofeng.com域中的Hyper-V01信任委派Hyper-V02的服务类型CIFS。将9.2KB大小的Set-KCD.ps1文件拷贝到C盘下,使用的Powershell命令为
.\SetKCD.ps1 –TrustedComputer Hyper-V01 –TrustingComputer Hyper-V02 –ServiceType CIFS –Add
如果要将3KB大小的Set-KCD.ps1文件拷贝到C盘下,使用的Powershell命令为:
.\SetKCD.ps1 –AdDN “cn=Hyper-V01,cn=computers,dc=mabofeng,dc=com” –HostFQDN Hyper-V02.mabofeng.com –Service CIFS –Add
接下来设置mabofeng.com域中的Hyper-V01信任委派Hyper-V02的服务类型Microsoft Virtual System Migration Service。将9.2KB大小的Set-KCD.ps1文件复制到C盘下,使用的Powershell命令为:
.\SetKCD.ps1 –TrustedComputer Hyper-V01 –TrustingComputer Hyper-V02 –ServiceType “Microsoft Virtual System Migration Service” –Add
如果要将3KB大小的Set-KCD.ps1文件复制到C盘下,使用的Powershell命令为:
.\SetKCD.ps1 –AdDN “cn=Hyper-V01.cn=computers,dc=mabofeng,dc=com” –HostFQDN Hyper-V02.mabofeng.com –Service “Microsoft Virtual System Migration Service” –Add
复制完成后,进行设置信任委派,我们可以使用如下命令:
Get-AdObject “cn=Hyper-V01,cn=computers,dc=mabofeng,dc=com” –Properties msDSAllowedToDelegateTo
在域控中设定完成委派后,接下来就是设定转移的来源和目的地Hyper-V主机了。设定来源和目的地服务器目的是,让它们可以传送和接收实时迁移。当设置服务器的时候,有两种方案可供选择:在任何可用网络允许实时迁移的流量或只在指定网络上允许实时迁移的流量。最安全做法就是指定专用的网络负责实时迁移的网络流量。要在非群集Hyper-V主机上开启实时迁移,只要在Hyper-V主机的Hyper-V设置中进行设置即可。
本站所有文章全部来源于互联网,版权归属于原作者。本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(yanjing@alibaba-inc.com),我们收到后立即删除。