一、商业价值和技术原理
群集的意义何在?这就要从虚拟化的应用场景来说起。Hyper-V属于服务器虚拟化技术,这和我们熟悉的Virtual Server是同一类型的,而服务器整合则是其主要的应用场景之一。服务器整合可以极大地提升服务器的利用率(从原本的10~20%提升到60~70%)、可以很好地节省服务器采购的费用、可以大大节省电费和降温费用(每台服务器每年的电费和降温费用,超过服务器投资的1/3),更重要的是,服务器整合还可以大大提高服务响应的速度。
然而服务器整合也会带来一个潜在的问题。
在传统IT架构中,为了安全和稳定性,物理服务器通常是专机专用,也就是说,一台物理计算机只安装一个关键业务程序。一旦物理硬件损坏,只会影响到该服务器上的关键业务。而采用服务器整合的虚拟化技术后,物理主机上可能同时运行多台虚机(每台虚机里跑一个关键业务程序),多个虚机之间可以实现安全隔离,如附图所示。这好比把所有的鸡蛋放在一个篮子里,一旦物理主机硬件损坏,其上的多台虚机,及其中运行的关键业务都会同时中断。
而Hyper-V则支持高可用性群集功能,不管是有计划的主机维护、还是突发的硬件故障,虚机都可以在另外一台主机上快速重启,而且服务中断的时间很短,几乎可以忽略不计。盆盆自己做了总结,Hyper-V主机群集有以下一些显著特点:
而Hyper-V则支持高可用性群集功能,不管是有计划的主机维护、还是突发的硬件故障,虚机都可以在另外一台主机上快速重启,而且服务中断的时间很短,几乎可以忽略不计。盆盆自己做了总结,Hyper-V主机群集有以下一些显著特点:
1. 内置支持Hyper-V虚机
Windows Server 2008群集,现在已经内置支持Hyper-V虚机,可以把虚机作为Windows Server 2008群集中的可用服务。
2. 支持多节点
到目前为止(Hyper-V Beta),可以最多支持16个节点的遇故障转移群集(Failover Clustering)!我们既可以手动指定虚机迁移的目标主机,而当意外故障发生时,系统会自动寻找具备充足内存的目标主机,默认是下一个主机。
3. 操作步骤简单
Hyper-V基于Windows Server 2008群集功能,相对于Windows Server 2003,其设置的步骤非常简单,甚至是不熟悉原理的用户,也能轻松实现。
4. 极大减少停机时间
服务器停机有两种情况:计划维护和意外故障。根据VMware公司的统计,计划维护停机的时间约占日常停机事件的80~90%,例如我们要对服务器进行升级、打补丁或者进行其他维护。意外故障,例如硬件的突发故障,断电等等。
针对80~90%的计划维护停机,Hyper-V可以进行快速迁移(Quick Migration)。虚机的磁盘文件(.VHD)存放在共享存储设备(iSCSI或者光纤SCSI设备)上,同时挂载到多台主机上,所以快速迁移时,不需要迁移庞大的磁盘文件,如附图所示。
如果需要对主机Node1进行维护,只需把其上的虚机保存状态(save state),也就是把当前虚机内存里的内容保存到文件里,保存状态所产生的文件也保存在共享存储上,然后该虚机就可以在另外一台主机Node2上恢复。
如果需要对主机Node1进行维护,只需把其上的虚机保存状态(save state),也就是把当前虚机内存里的内容保存到文件里,保存状态所产生的文件也保存在共享存储上,然后该虚机就可以在另外一台主机Node2上恢复。
由此可见,快速迁移所需的时间和以下两大因素有关:
(1)共享存储的带宽
(2)虚机内存的容量
例如对于一台1GB内存的虚机,如果共享存储是带宽为1Gb(125MB)的iSCSI,只需约16秒的停机时间(1Gb/8≈125MB,1GB/125MB=8秒,8×2=16秒);如果是4Gb的光纤存储,则只需约4秒!不同虚机内存和存储带宽所对应的停机时间,如附图所示。
如果是突发性的硬件故障或者断电,则可以借助高可用性群集功能,该虚机可以在另外一个节点上重新启动。这时候相对快速迁移而言,虚机里的关键业务需要更长的停机时间。
如果是突发性的硬件故障或者断电,则可以借助高可用性群集功能,该虚机可以在另外一个节点上重新启动。这时候相对快速迁移而言,虚机里的关键业务需要更长的停机时间。
5. 支持跨区域故障转移
Hyper-V还支持所谓的stretch clustering(延伸群集),也就是跨越地理位置的故障转移群集功能,一旦某个站点发生故障,其他地方的另外一个站点可以立刻恢复工作!
6. 和System Center的完美集成
Hyper-V不仅可以实现高可用性,还可以实现负载平衡。这可以和System Center进行完美整合。例如企业通过两台虚机提供订单服务(负载平衡),当三月份业务繁忙时,System Center Operation Manager监测到两台虚机的性能开始不堪重负,则可以很方便地借助System Center Virtual Machine Manager根据模板创建一个新的虚机加入到这个NLB群集,继续提供服务,整个过程几乎不需要人工干预,而且非常有效。
二、Hyper-V/VMware/Xen,孰优孰劣?
说老实话,作为虚拟化市场的先驱,VMware的技术无疑更加成熟。VMware采用一种所谓的VMotion技术。VMotion采用内存后台备份的机制,可以实现在线迁移,也就是说,几乎没有停机时间。
VMotion也需要共享存储的支持,虚机的磁盘文件保存在共享存储设备上,但是需要指出的是,VMotion并不是基于群集的。
1. VMotion的原理
假设虚机要从主机A迁移到主机B上。VMotion的过程简述如下:
(1)VMotion首先尝试把虚机的内存映像从主机A拷贝到主机B。在这个过程中,主机A上的虚机继续对外提供服务。
(2)在内存映像拷贝过程中。用户对该虚机的任何内存写入操作,都会记录到一张叫做内存位图(Memory Bitmap)的表中。
(3)内存映像拷贝完成后,会把内存位图表拷贝到主机B上。这段时间虚机会暂时停止工作(时间极短,如果尝试Ping的话,通常只有一个数据包显示超时),如附图所示。
(4)当虚机在主机B上启动时,系统会把内存位图表里记录的已修改页(Modified Memory Page)继续拷贝到主机B中,直到结束。
(4)当虚机在主机B上启动时,系统会把内存位图表里记录的已修改页(Modified Memory Page)继续拷贝到主机B中,直到结束。
2. VMware VMotion和Hyper-V快速迁移之间的对比
(1)由于VMotion采用后台内存拷贝的模式,只有在拷贝内存位图表时,才会临时中止客户端访问,用户几乎感觉不到服务中断(一般最多1~2秒)
而Hyper-V快速迁移则需要有一个内存状态的保存和恢复时间,根据虚机内存和存储带宽的大小,有少量的服务中断时间(少则1~2秒,多则1~2分钟)。
从原理上讲,Hyper-V采用的是比较简单的内存状态保存的技术,以避免在内存映像传输时,后续的内存写入同步问题,以增加停机时间作为代价,但一般来说这点时间还是可以容忍的,通常不会有损SLA。
(2)VMotion需要相对比较昂贵的费用(必须采购更高版本才能获得)
而Hyper-V快速迁移则包含在Windows Server 2008的授权费用中,不需要额外付费。
(3)VMotion需要两台主机的CPU为同一系列(最好是同一型号),以避免CPU指令集的不同而导致的指令兼容问题。
Hyper-V快速迁移当然不需要这个限制。
(4)VMotion适用于计划维护停机事件,如果是突发故障,可以借助VMware的HA功能(需要付费),让虚机在另外一台主机上重启。
而Hyper-V则可以借助主机群集功能同时实现快速转移和高可用性。
(5)VMotion是VMware Infrastructure的核心功能之一,它也是DRS(动态资源调度)的基础。系统可以根据一定的优先级和性能监控,自动通过VMotion在不同主机之间在线迁移虚机,以便平衡数据中心的可用资源。
相信今后的Hyper-V的正式版本,也有类似的机制,例如可以借助System Center Operation Manager自动监控虚机和物理主机的性能,然后借助System Center Virtual Machine Manager进行快速迁移。
那么Xen呢,Citrix的XenServer Enterprise可以实现类似的XenMotion功能,盆盆没有测试过,估计类似于VMware的功能。今后盆盆会抽空进行测试,并给出相应的测试报告。
三、实验环境简述
至少需要两台物理计算机(必须 满足Hyper-V的安装条件 ),用来安装Windows Server 2008(Hyper-V),并加入到域。两个独立的网段,一个作为心跳网络(Heartbeat Network),还一个连接生产环境。如果有iSCSI共享存储设备,还需要有一个网段专门连接到该存储网络。
盆盆当然不可能购置iSCSI/FC共享存储设备,所以需要准备一台专门的虚机,借助IET或者Openfiler(基于Linux)、WinTarget(基于Windows)等工具虚拟出iSCSI共享存储设备。只是性能和真实的iSCSI设备相比,自然不可同日而语,而且也远不如普通的IDE/SATA硬盘(毕竟是用虚拟磁盘来模拟的)。不过我们这里只是一个实验,看看效果就行了。
所以盆盆这里有三台物理计算机,其中一台计算机安装虚机(可以是Virtual Server、Hyper-V或者VMware等虚机),并把该虚机提升为域控制器;另外两台安装Hyper-V,并加入到该域中,实验环境的网络拓扑结构如附图所示。
这里不再描述如何借助WinTarget或者IET、Openfiler搭建虚拟iSCSI共享存储设备,大家可以参考帮助文档。
这里不再描述如何借助WinTarget或者IET、Openfiler搭建虚拟iSCSI共享存储设备,大家可以参考帮助文档。
四、配置Hyper-V高可用性
在Windows Server 2008配置Hyper-V高可用性非常方便,只需分为三步走:配置验证、创建群集、设置高可用性。
1. 配置验证
在Hyper-V主机上添加“Failover Cluster”角色,然后打开“Failover Cluster Management”管理单元,如附图所示,并单击右侧操作窗格里的“Validate a Configuration”。
接下来指定需要添加到群集里的两个节点(Hyper-V主机),然后可以选择“Run only tests I Select”选项,并在接下来的页面里指定所需验证的选项,这里可以略过共享磁盘的相关验证(虚拟出来的设备,很难通过验证,但是不影响实验结果)。
接下来指定需要添加到群集里的两个节点(Hyper-V主机),然后可以选择“Run only tests I Select”选项,并在接下来的页面里指定所需验证的选项,这里可以略过共享磁盘的相关验证(虚拟出来的设备,很难通过验证,但是不影响实验结果)。
然后可以开始验证过程,并检查验证结果,如果有问题,则需要退回重新检查。
2. 创建群集
在“Failover Cluster Management”管理单元窗口里单击“Create a Cluster”,然后添加所需加入的Hyper-V主机节点。
然后指定群集的访问IP地址和群集名字,如附图所示。
接下来确认群集设置,即可开始创建群集,最后在群集创建成功页面上单击“Finish”按钮即可,如附图所示。
3. 设置高可用性
接下来就可以把某个Hyper-V虚机作为Windows Server 2008群集所管理的服务。这里我们首先需要打开Hyper-V管理单元,新建或者复制一个虚机,请注意必须把该虚机的磁盘文件保存在共享磁盘上。
确保关闭该虚机,然后在“Failover Cluster Management”管理单元上单击“Configure a Service or Application”,然后在“Select a Service or Application”页面确保选择“Virtual Machine”选项,如附图所示。
然后选中刚才所新建的虚机(本例是Hyper-VCluster),如附图所示。
确认无误后,即可开始配置该虚机的高可用性,最后在结果页面上单击“Finish”按钮,如附图所示。
五、测试Hyper-V快速迁移
一切就绪后,就可以开始测试Hyper-V的快速迁移功能了。很简单,只需启动该Hyper-V虚机,然后在“Failover Cluster Management”管理单元左侧控制台树里定位到“Services and Applications”分支,可以看到该虚机当前处于“Online”的状态。
鼠标右键单击该虚机,并在快捷菜单里单击“Move this service or application to another node”,并选择另外一台Hyper-V主机,如附图所示。
然后在“Failover Cluster Management”管理单元左侧控制台树里定位到“Services and Applications”分支下方的测试虚机,即可在中间的详细窗格里看到该虚机的当前所在的主机是Node1(本例是TOPHOME主机),并且可以看到该虚机正在保存状态,如附图所示。
一旦保存状态完毕后,即可看到该虚机已经切换到另外一台主机(本例是MarkThink),并且可以看到该虚机正在从保存状态中恢复,如附图所示。
整个迁移过程速度非常快,盆盆给这台虚机配置512MB内存,虽然是在模拟的共享存储上进行配置,但是迁移的速度很快,差不多20秒左右即可迁移完毕,这个速度还是完全可以承受的。