打造零停机的虚拟环境 --- 详解Hyper-V高可用性部署

服务器虚拟化最大的风险是“把所有鸡蛋放在同一个篮子里”,一旦服务器发生故障就可能导致大规模服务中断,在规划Hyper-V项目时,一定要将系统可用性及服务连续性纳入首要考虑因素。

相关统计数据显示,服务器整合是企业部署虚拟化的主要原因,虽然服务器整合帮助用户提升了资源利用率,同时获得了节能及集中管理等种种优势,但是也带来了极大的风险。在物理环境中,出于对稳定性和安全性的考虑,一台服务器通常只执行一个应用程序,一旦服务器发生故障,只会影响这个应用程序所提供的服务;虚拟化之后,多台应用服务器以虚拟机的形式集中在一台物理服务器上运行,虽然彼此独立,但就像“把所有鸡蛋放在同一个篮子里”,一旦发生硬件故障,所有虚拟机都会停止运行,换句话说,一台服务器故障就可能造成大规模的服务瘫痪。

服务器虚拟化厂商都很清楚虚拟化之后的风险,纷纷将缩短停机时间、确保服务器连续性的高可用性视为重点,例如VMware Virtual Infrastructure 3的HA,以及Virtual Iron V4 XEE的LiveRecovery,微软的Hyper-V当然也不例外,比较特?的是,Hyper-V的高可用性功能可与Windows Server 2008操作系统内置的故障转移集群(Failover Cluster)功能整合,在服务器发生故障时将服务迅速切换至另一台正常运行的服务器,将意外导致的非计划停机时间降到最低。

相比于其他服务器虚拟化技术提供的高可用性,Windows Server 2008 Hyper-V的故障转移集群具备以下优势:

1.是Windows Server 2008 Enterprise/Datacenter版本的标准功能,Hyper-V被视为集群支持的服务,不需另外购买授权

2.最多可支持16个节点,测试时可手动指定转移的节点,当灾难发生时,集群系统会自动寻找并移转至有足够内存容量的节点

3.相比于Windows Server 2003以前的MSCS(Microsoft Cluster Service),Failover Cluster大幅简化了设置管理步骤,新手也能很快熟悉如何操作

Hyper-V故障转移集群的架构

在实际部署Hyper-V故障转移集群之前,首先要了解故障转移集群的架构。基本的故障转移集群的组件必需包含两台物理服务器、一台共享存储设备以及SAN环境,此架构称为2-node failover cluster(如下图0)。物理服务器必须完全兼容Windows Server 2008的64位处理器,而且强烈建议两台型号、规格完全相同的服务器。共享存储设备一般指的是FC或iSCSI介面的磁盘阵列,不过这类设备通常价格不便宜,功能与扩展性也有一定限制。近年兴起的一种称之为存储服务器(Storage Server)的共享存储设备,将行业标准服务器和存储虚拟化软件完全集成,由于其功能完整、价格合理,而且具备高扩展能力,成为不少企业构建虚拟环境存储系统的首选。

以飞康 NSS(FalconStor Network Storage Server)为例,它结合了4核、双处理器的x64服务器强大的运算能力,以及大容量、低成本的SATA、SAS硬盘作为存储资源,提供与中高级磁盘阵列相同、甚至更高的I/O性能。此外,中高级磁盘阵列具备的快照、镜像、自动精简配置(Thin Provisioning)等高级功能,飞康NSS也都一应俱全,还可以通过远程复制功能,将本地的故障转移集群延伸到远程的灾备机房,成为多重站台集群(Multi-site Cluster),也就是Hyper-V的异地灾备。

Hyper-V故障转移集群设置实操

了解故障转移集群的基本架构之后,接下来就要着手进行实际部署了。首先,简单介绍一下测试环境的构成,如下所示:

服务器规格

Dell PowerEdge 2950 x2 (Intel Xeon x3210, 8GB RAM)
共享存储设备
飞康 NSS 存储管理器
网络环境
1Gb LAN (iSCSI SAN)
操作系统
Windows Server 2008 Enterprise Service Pack 1

Hyper-V故障转移集群的部署并不复杂,只需要三个步骤:环境验证、建立集群、建立HA。实操的详细步骤如下:
步骤1:打开Hyper-V主控制台,新增Failover Cluster选项,接着打开Failover Cluster Management,点选中间部位的Validate a Configuration,指定需要新增到集群内的两台Hyper-V虚拟机,按下一步后开始执行集群环境验证,这个的目的是确认目前的服务器、存储、网络等配置是否符合故障转移集群的要求。你可以选择Run all test执行所有验证项目,或是Run only tests I select只选择执行其中的几项,或是全部跳过。(图1)

步骤2:通过验证后,在Failover Cluster Management内点选Create a Cluster,启动集群创建向导后,即可按照提示,以输入IP位址或点选服务器名称的方式,选择欲纳入集群的节点,确认后会显示验证警告,问你是否需要微软原厂支持,请选择No之后按下一步。(图2)

步骤3:指定集群管理员的集群名称和IP地址,确认后即可开始创建集群。(图3)

步骤4:创建向导开始自动执行创建集群的程序,一切无误的话,大约1分钟内即可完成。(图4)

步骤5:接着就可以将Hyper-V虚拟机设定为Windows Server 2008故障转移集群所管理的服务。首先打开Hyper-V主控台,新增或复制一台虚拟机,并将虚拟机的磁盘路径指向飞康 NSS提供的共享磁盘资源。接着关闭这台虚拟机,在Failover Cluster Management内点选Configure a Service or Application,并选择Virtual Machine项。(图5)

步骤6:选择之前新创建的虚拟机,确认后即可开始建立高可用性,建立完成后按Finish就大功告成了。(图6)

测试Hyper-V故障转移集群

创建完Hyper-V故障转移集群后,别忘记最后也是最重要的步骤—测试集群能否正常执行故障转移功能,测试Hyper-V故障转移集群的步骤也相当简单:
步骤1:在Failover Cluster Management的左侧树状目录内的Service and Applications下,确认集群中的虚拟机处于Online的正常运行状态后,在该虚拟机点右键选择Move this service or application to another node,并选择另一台集群节点,下面我们将示范从geo-node1转移到geo-node3。(图7)

步骤2:Summary of Virtual Machine视窗内会显示虚拟机正处于离线存档的状态,此时虚拟机的所在位置(Current Owner)还在geo-node1。(图8)

步骤3:等待约30秒左右(时间根据硬件规格不同而有差异),Current Owner会显示虚拟机位置已经变为geo-node3,所有服务也都正常上线后,启动虚拟机确认运行是否正常。(图9)