如何管理一台集群的虚拟机

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
应用型负载均衡 ALB,每月750个小时 15LCU
简介:

现如今的企业组织需要保证全年的每一天都24小时全天候的正常运营。而且,他们的服务必须保持时刻在线,否则就会失去客户。同时,在今天的全球市场上,确保企业的系统总是可用,以使得企业组织保持竞争优势,进而保持和提升用户满意度是至关重要的。数据中心的高度可用性可以通过几种方式来实现,但最常见的和最简单的方式则是通过服务器虚拟化和故障转移群集(Failover Cluster)。

服务器虚拟化为许多企业组织的IT部门带来了诸多的益处,包括允许他们将多款不同的系统整合到一台单一的主机服务器,带来了更高的资源利用率 和密度,同时还为运行在每台虚拟机内的不同的工作负载提供了隔离。而通过隔离每台虚拟机中的应用程序,一个不安全事故或组件出现故障失败进而影响其他业务的风险得以降低,需要修补的组件数量得到减少,进一步减少了系统宕机和重新启动的次数。因为克隆虚拟机或从模板部署虚拟机很容易,这简化了部署,从而最大限度的减少了人为配置的错误,并提供快速的可扩展性。虚拟化还为该虚拟机提供了移动性,并允许其迁移到不同的虚拟化主机,而不会让虚拟机内运行的应用程序发生停机,进而使得主机能够被修补或更新。虚拟化是任何现代数据中心的一个重要组成部分。因此,拥有一套高可用性解决方案,以便从计划外停机中断中获得保护和恢复,同时简化因维护而带来的计划停机的管理是非常关键的。

对虚拟机而言,当前有几款不同的高可用性的解决方案。而最为普遍的便是集群,负载均衡,复制和备份,而如果VM虚拟硬盘被删除或损坏的话,可以通过使用Veeam公司的Backup &Replication软件产品,System Center Data Protection Manager或Windows Server Backup定期复制虚拟数据,然后将其恢复。复制将把虚拟硬盘和虚拟机的配置文件拷贝到一个次要位置,并且如果主要虚拟机出现故障失败,还将启动复制的虚拟机。最常见的解决方案包括Veeam公司的Backup &Replication和Windows Server Hyper-V Replica技术。而借助一款负载均衡解决方案,如Windows Server网络负载平衡,多款虚拟机的配置都相同。而负载均衡器跨每台虚拟机相当均匀的分发服务请求。此过程减少了任何一台单一的虚拟机超载的风险。使用负载均衡是一种用来消除虚拟机停机时间的简单的方法,因为虚拟机可以单独运转和服务,而不会让服务下线。然而,负载平衡只能用于同样无状态的虚拟机,它们没有共享的或集中式的数据,如一个网站前端。

故障转移群集为虚拟机提供了最好的高可用性解决方案,包括快速自动恢复,对共享数据的访问几乎没有停机中断。其为诸如服务、维护、升级所带来的计划停机时间以及由于安全威胁、停电甚至自然灾害所导致的计划外的停机时间提供了高可用性。本文中,我们将为广大读者朋友们介绍关于保持服务在微软的虚拟化和集群平台、Windows Server Hyper-V和故障转移群集网络运行的相关场景、设计考虑因素、特点和最佳实践方案。

故障转移群集的工作原理

故障转移集群是一个复杂的分布式系统,其需要在应用程序,操作系统,虚拟机,虚拟化主机、存储和网络之间的互操作性。以下,我们将快速地为广大读者朋友们回顾关于故障转移集群的关键要求,以及每一项要求是如何为虚拟机提供高可用性的:

· 随处部署冗余硬件。在您企业高可用的解决方案中消除每一个单点故障是非常必要的。此外,除了具备多台主机服务器(称为集群节点),您企业必须通过具备多个互连的到达存储的路径,如使用MPIO(多路径I/O),以便在存储结构中有冗余。存储本身应该使用数据可用性功能,如RAID、镜像和备份。而网络应该有多个路径和所有网络适配器应使用NIC组合(NIC teaming)。

· 在共享存储上所存储的数据能够为所有的节点所访问。因为应用程序运行在一个需要共享某些类型的信息的集群上(例如,一台虚拟机的虚拟硬盘或一个SQL Server数据库),这些数据必须保持在一个使得每个节点都能访问到的单一的位置。这使得应用程序能够在集群中的任何节点上运行,但仍读取和写入同一个集中化的信息。

· 群集将其配置写入注册表。Windows Server包含一个内置的、层次型数据库用来跟踪系统和应用程序的设置,这被称为注册表。故障转移群集通过当应用程序运行在该节点上时写入将需要的信息以利用注册表,具体如下:

① 工作负载应该在哪个节点上运行

② 每个群集虚拟机或应用程序的属性是什么,如其名称、IP地址、磁盘、网络等

③ 每个群集虚拟机或应用程序的状态如何,如其是否应该在线,离线的,失败等

· 群集注册表跨所有节点进行复制。为了确保虚拟机在每个节点上的操作都是相同的,群集注册表中的设置必须保持跨每个节点的一致性。这是通过一个隐藏的群集复制服务来管理的,即在集群中将虚拟机性质或状态的改变拷贝到所有节点。

· 群集节点健康状况的互相检查。通过使用一个简单的请求和响应测试,每个群集节点都将检查群集节点的健康状况,以确保所有节点都是在线且响应的。如果某个特定的节点错过了太多的健康状况检查,集群中的其他节点将确定其是否已经失败,并采取纠正措施,以重新启动在该节点崩溃之前所运行的任何服务。

· 使用来自群集注册表的数据重新启动群集工作负载。即使一个集群节点崩溃,集群中的其他每一个节点均能够通过注册表中数据复制知道该崩溃的节点曾经托管了哪台虚拟机。而健康的节点将使用这些信息以节点崩溃之前相同的状态来重新启动虚拟机。其将配置相同的属性(名称、IP地址、磁盘、状态等)和相同的状态(在线、离线等),并从共享的存储上访问相同的数据。这实质上通过在健康的群集节点上以相同的连接设置再造了完全同样的虚拟机。在节点崩溃之前,使用虚拟机的任何服务或客户端届时都将能够重新连接到这台新的虚拟机,这会出现与节点在崩溃之前相同的虚拟机。

部署一个故障转移群集

由于一个故障转移群集需要很多的硬件和软件组件,故而在进行其部署时,需要充分考虑多种因素。随后的大多数管理任务都将通过故障转移群集GUI控制台来完成,其被称为故障转移群集管理器,虽然这些任务也可以通过借助PowerShell来完成。欲了解更多关于借助PowerShell来管理一个群集的相关信息,请点击:https://technet.microsoft.com/en-us/library/hh847239.aspx

主机SKU选择

支持故障转移群集的Windows Server有几个版本,它们均提供相同的功能设置。而如下所述,适用于每款SKU又有一些区别:

Windows Server数据中心版——由于其允许企业组织用户在客户端操作系统中使用Windows Server运行数量不限的虚拟机,故而该版本的SKU在虚拟化环境的备受推崇。当您企业为主机购买一份许可证授权时,运行在该主机上的所有Windows Server虚拟机可以共享相同的许可证授权,甚至可以通过主机使用自动虚拟机激活功能来实现自动激活。

Windows Server标准版——该SKU受到了其虚拟化权限的限制,故而其在Hyper-V主机中并不被推荐。借助每个主机许可授权,您企业组织只能为两台额外的运行Windows Server的虚拟机提供一个共享的许可授权。该SKU一般用于服务器,而不用于托管的虚拟机,如一款域控制器或SQL Server。

Hyper-V Server——该SKU专为Hyper-V主机设计,是完全免费且永不过期的。并且其目的在于提供一个零成本的选择,以帮助Hyper-V的发展。其支持所有其他SKU所能够支持的虚拟化和高可用性功能。但是,其没有图形用户界面(GUI),只具备核心的虚拟化、存储盒网络功能。并不包括任何其他Windows Server的功能和角色作用,如AD(活动目录,Active Directory),DNS或IIS。也不包括任何许可证授权以在客户端操作系统运行 Windows Server。尽管如此,如果您企业在客户端操作系统中使用Linux,您几乎可以得到一款完全免费的Hyper-V解决方案。Hyper-V Server可以在此获得:aka.ms/HyperVServer。

Windows Server数据中心版和标准版均为完全的安装(具有一个GUI)和服务器核心安装(没有GUI)提供了一个安装选择。而两种选择均支持Hyper-V和故障转移群集的全部功能特征。服务器核心安装是Hyper-V主机所推荐的,因为其通过降低了网络攻击风险,具有较小的服务足迹占地面积,而且其可以使用完全安装(具有一个GUI)的Windows Server或使用远程服务器管理工具(aka.ms/RSAT)实现远程管理。服务器核心安装也可以使用PowerShell实现本地管理,或可以使用5nine Software公司的5nine管理器直接为其添加一个GUI。

Windows 8也支持Hyper-V,但是其并不包括任何企业级的功能,不具备实时迁移或故障转移群集的功能。然而,可以使用Windows客户端创建一台虚拟机,然后,其可以被导入导出到一台Hyper-V主机上,并可以像任何其他虚拟机一样的访问所有企业的功能。

角色作用和功能安装

Hyper-V的角色作用和故障转移群集的功能必须安装在每一个群集节点。在Windows Server 2012及更高版本中,您企业组织可以创建一个多达64个节点和8000台虚拟机的集群,这样的角色作用和功能的安装可以使用PowerShell来编写脚本,以及任何其他重复的Hyper-V或故障转移群集来管理任务。

  图1 - 故障转移群集功能的安装

活动目录配置

使用故障转移群集需要AD(活动目录,Active Directory),尽管Hyper-V并不需要它。这意味着即使您企业打算为您的群集节点使用免费的Hyper-V Server SKU,您仍然需要至少有一个完全版本的Windows Server运行AD在您的企业环境中。所有的群集节点必须是相同的AD域的一部分,在至少是Windows Server 2003的一个域功能级别运行。群集节点也必须是成员服务器,这意味着您企业不能直接在主机上运行的域控制器。这些要求是因为当开始聚集虚拟机和其他工作负载时,AD需要用于身份验证,所以如果群集节点托管域控制器发生通讯中断或被集群网络流量堵塞,则可能无法启动应用程序。这对于在同一个组织单位中的所有的群集节点计算机对象也是一个很好的最佳实践方案。以便使得群组策略可以跨所有节点始终应用。如果要使用BitLocker以保护虚拟机的数据不会被物理窃取,那么,域控制器必须运行Windows Server 2012 R2。

也可以在专用的集群虚拟机上运行域控制器,为其提供任何集群虚拟机所具有的相同的高可用性的益处。此外,您可以在AD中预配置集群帐户,使得只有较少特权的管理员能够在一个只读的域控制器 (RODC)环境创建集群或虚拟机。当然,这一话题其实已经超出了本文的讨论范围,更多的信息可以访问此处。

存储配置

故障转移群集需要某种类型的共享存储,以便使得数据可以被所有节点访问,并能够与使用一款支持协议的最现代的SAN(存储区域网络)兼容。幸运的是,故障转移群集包括一个内置的最佳实践分析工具(集群验证),其将能够验证存储是否能够正常运转。您企业可以从Windows Server目录和微软私有云快速追踪计划购买预测试的解决方案。许多购买了新的硬件的Hyper-V用户选择融合系统,把所有的群集节点、存储和网络组件捆绑打包到一个单一的机架上,如StarWind超融合平台,其中包括戴尔服务器和来自xByte Technologies公司的存储技术、采用StarWind虚拟SAN的存储管理、集中的Hyper-V、5nine管理器的集群管理及Veeam公司Backup &Replication工具进行的备份。

存储类型主要分为三个类别:

SAN使用主机总线适配器(HBA)——这是最传统的SAN类型。支持的类型包括光纤通道和串行连接SCSI(SAS)。光纤通道往往更昂贵,但比SAS提供更快的性能。

SAN使用以太网——近年来,网络带宽已经明显变得更快,匹配了以前只在基于HBA的存储架构才可能的速度。这使得基于以太网的解决方案能够以低得多的成本提供,但他们仍然需要专用的网卡和网络。由故障转移群集支持的两款协议是iSCSI与FCoE (Fibre Channel over Ethernet)。

SMB 3文件服务器——服务器消息块(SMB,Server Message Block)协议是一个以微软为中心,应用程序层的网络协议,用于文件服务器上的文件共享。一款传统的文件分享,如\MyShare,是一个能够被多台服务器访问的数据存储的位置。而随着Windows Server 2012的推出,为虚拟机在这一文件共享上存储虚拟硬盘成为了可能,这使得其能够作为一个共享存储类型,允许所有群集节点能够立刻对其进行访问。

在Windows Server 2008 R2中,故障转移群集推出了一款软件定义的、磁盘虚拟化层,称为群集共享卷(CSV),其允许一个单一LUN存储多台虚拟机,可在不同的集群节点上运行。当利用一个SAN为虚拟机部署故障转移群集时,强烈建议为您所有的共享磁盘打开CSV,以通过允许您在一个单一磁盘上整合多台虚拟机来简化存储管理。传统的群集磁盘不允许多个节点同时访问同一个磁盘,所以您需要为每台虚拟机分配一个LUN,而这为存储管理增加了复杂性。

网络配置

对于高可用性而言,优化集群的网络是至关重要的,因为网络用于管理、虚拟机访问、健康状况检查、实时迁移;以及如果通过SMB使用基于以太网的解决方案或Hyper-V的话通常用于存储。存储集群节点可以在相同的子网或不同的子网上,群集被创建或新的网络被添加时,集群将自动配置网络。

您必须使用Hyper-V管理器以在每个集群节点上创建相同的虚拟网络和交换机,使得您企业的虚拟机可以连接到其他服务。这些虚拟网络必须在集群中的每个节点上命名为相同的名称,所以虚拟机才能够始终使用其名称连接到相同的网络,而不管该虚拟机是在哪台主机上运行。

所有的集群需要至少两个网络的冗余,如果一个网络不可用,那么,其流量将过二级网络改变传输路径。最佳实践方案则是为每种网络流量的类型都有一个至少1 Gbps的专用网络,而这种专用网络最多可以有五个:

内部群集流量(必需的)——除了使用这个专用网络进行健康状况检查,当某个变化发生时,集群需要这个专用网络来更新群集数据库注册表,并与其他类型的内部通信。该网络不应该被其他类型的流量所使用,否则可能干扰集群的健康状况检查机制。

客户端和应用程序流量(必需的)——虚拟机很少在一个孤立的环境中运行,他们为其他应用程序或客户端提供服务。这意味着那些最终用户需要通过一个外部网络连接到虚拟机。出于安全方面的原因,将该流量从内部的集群流量分离,从而确保在这个网络上的拒绝服务攻击不影响集群流量是相当重要的。

实时迁移流量(强烈推荐) ——将正在运行的虚拟机从一台主机迁移到另一台,被称为实时迁移,虚拟机的内存通过网络连接在主机之间进行复制。随着数千兆字节的数据都是通过该网络尽可能快的发送,该数据带来了大量的网络流量。一个专用的网络是强烈建议的,以便使得其不会干扰到其他网络。

主机管理流量(推荐)——有某些特定类型的管理任务也需要通过网络发送大量的数据,例如借助Veeam Backup &Replication执行备份、从一个库在一台主机上部署一台虚拟机、或复制一台虚拟机。在理想的情况下,这种类型的流量应该有一个专用的网络。然而,如果需要的话,其可以实时迁移流量网络结合。

使用以太网存储的流量(如果使用基于以太网的存储则为必需的)——如果您企业组织使用的是iSCSI、FCoE或SMB 3文件服务器进行存储,那么,您企业必须有一个专用的网络以连接这些存储数据。这对于确保该网络有足够的带宽以支持在主机上的所有虚拟机的需要是相当重要的,否则如果他们不能足够快的访问数据的话,在一台主机上的所有虚拟机的性能将下降。

  图2 - 实时迁移网络的配置

当群集创建时,其将基于所发现的不同的网络适配器的命令为每个网络分配一个不同的值。网卡,能够访问一个默认网关,指定用于客户端和应用流量,因为该群集假设这一网络具有外部连接。这一值被称为网络优先。必须使用PowerShell来为每个群集网络配置不同的流量模式。关于该网络配置的具体细节,您可以访问这篇博客。

验证故障转移群集

创建一个故障转移群集的过程中,通过借助被称为群集验证向导的内置的测试最佳实践分析器,针对每一个组成部分进行测试,以确保解决方案能够正常使用是可能的。这款工具是随着故障转移群集管理器一起推出的,将能够对整个解决方案运行一系列的测试,包括存储、网络、Windows Server配置和Hyper-V配置。其也将以文档形式记录下群集节点的设置,而这对于提供支持和遵从合规性是有帮助的。这款工具甚至可以作为一款故障诊断的工具测试现有的集群。而运行的另一套额外的测试则是为了确保每个群集的工作负载的高可用性得到优化。

测试结果在一个基于XML的网页中报告,而报告的一个副本会被保存在群集中的每个节点的C:WindowsClusterReports目录下。无论集群是否通过测试或是测试失败,或曾有一个警告,几十个测试中的每一个都将报告,这意味着该解决方案将工作,但并没有一直遵循最佳实践方案。对于完全由微软支持的集群,其必须满足两个要求。首先,不能有一个群集出现验证测试失败(仅仅只是发出警告是OK的);第二,每个硬件和软件组件必须是由制造商为Windows Server所鉴定的。然而,群集节点甚至可以有不同的硬件,推荐该节点尽可能的相似,以便确保当运行在任何群集节点上时,该虚拟机的行为相同。

  图3 - 集群验证测试配置

创建一个故障转移群集

在硬件和软件配置通过了群集验证后,该群集可以使用创建群集向导以几个步骤进行创建,其是从故障转移群集管理器推出的。在具体指定了将成为群集节点的Hyper-V主机后,您将被提示为集群提供一个IP地址和NetBIOS名称。如果一台DHCP服务器被检测到,它会自动为群集提供IPv4或IPv6地址,而这可以稍后进行更改。此群集名称实际上是另一个群集资源,将运行在任何活跃的节点上,而如果第一个节点不可用的话,其将会故障转移到一个不同的节点。这允许您通过通过唯一指定的群集名称或IP地址连接到该集群,实际上无需知道哪一个群集节点当前在线。

创建一个横向扩展文件服务器

如果您企业组织决定使用一款SMB 3.0文件服务器以访问虚拟机的虚拟硬盘,这是通过需要在一台文件服务器上运行的一个文件共享所提供的。如果该文件共享通往虚拟硬盘的路径,如\ MyShareMyVM.vhdx ,变得不可用,那么虚拟机将无法访问其磁盘,这将无法正常工作。因为这个原因,使得对于这个文件共享访问的高度可用性是非常重要的。这也可以通过一个故障转移群集来完成,虽然其应该在一个独立的群集上完成,因为Hyper-V群集的硬件需要为虚拟化进行优化。

创建一个高可用的文件服务器是通过高可用性向导来完成的,其是随故障转移群集管理器而一起推出的。不过,如果节点托管的文件共享不可用并需要故障转移的话,这种类型的文件服务器也可能造成暂时的虚拟机的停机中断,因为文件共享会暂时离线。

在Windows Server 2012中,推出了一种新的群集文件服务器类型,被称为横向扩展的文件服务器(SOFS)。这使得文件共享路径能够跨多个节点通过利用群集共享卷(CSV)技术同步创建。这意味着,多个节点可以失败,但只要托管文件路径的一个节点保持在线状态,那么虚拟机将能够获得对于其虚拟硬盘的持续访问,并保持运行。横向扩展的文件服务器不是必需的,但当为您企业集群的虚拟机提供最高水平的可用性时,建议使用。

  图4 - 创建一个横向扩展文件服务器

部署一台群集虚拟机

现在,既然您企业组织的故障转移群集已经创建。那么,是时候部署高可用的虚拟机了。而通过故障转移群集管理器,有几种不同的方法来做到这一点,具体则取决于其是否是一台新的或现有的虚拟机。

创建一台集群虚拟机

在群集上创建一台虚拟机与创建其他群集工作负载稍有不同,因为其不是使用高可用性向导,而是使用新的虚拟机向导,与Hyper-V管理器的工具相同。这提供了一个一致的体验,无论是创建一个集群或是单独的虚拟机,其中的主要不同点就在于:集群的虚拟机应存储在每个群集节点都能访问的共享存储上。而在新建虚拟机向导完成后,一个次向导会把虚拟机添加到集群,自动启动并完成,而不需要任何额外的信息。然后,虚拟机将以在线状态出现在集群上,这样您就可以在启动虚拟机之前,进行其他额外的设置了。其采用了与Hyper-V管理器相同的属性界面。您可以在一个集群上运行由Hyper-V支持的任何类型的客户操作系统,而Windows Server、Windows和Linux客户操作系统的一份最新列表则可以在这里找到。

  图5 - 创建一个高可用的虚拟机

添加一台现有的虚拟机到一个群集

如果您企业想要使得一台现有的虚拟机变得具有高可用性,其必须首先被迁移到其中一个集群节点。这可以通过一个实时迁移、一个导入/导出或从一个备份中恢复虚拟机来完成。一旦该虚拟机被托管到一个集群节点,其便可以通过高可用性的向导选择虚拟机的资源类型来实现高可用性。而如果您企业使用了Veeam公司的Backup &Replication,您可以恢复虚拟机到该集群,并立即使其具有高度可用性。该虚拟机将由故障转移群集管理器管理,并将在节点之间进行故障转移。

从现有的群集上迁移一台虚拟机

如果您在您企业的环境中已经有了群集的虚拟机,那么可以使用复制群集角色向导(Copy Cluster Roles Wizard )将它们迁移到新的集群,其是通过故障转移群集管理器启动的。在从您企业新的群集上启动向导之后,您将指定源群集,然后从运行在其之上的虚拟机列表清单中选择那些您想要迁移的虚拟机。您将被给予再次映射集群存储和网络路径的选择。而在完成迁移后,您可以在老集群上离线虚拟机,并在新的集群上让新迁入的虚拟机在线。

创建一个客户端的故障转移群集

通过从虚拟服务器而不是物理服务器创建一个新的群集,为虚拟化的工作负载提供更高的可用性是可能的。这被称为客户端群集。这使得一款应用程序能够在虚拟机上运行,如SQL Server,如果工作负载运行失败其能够通过其弹性具有高度可用性,虚拟机崩溃或客户端操作系统需要更新或服务,通过迁移该工作负载到一个不同的虚拟群集节点。配置一个客户端集群遵循与创建一个物理故障转移群集相同的步骤,同时也有一些额外的注意事项:

工作负载——不是让一台虚拟机变得高度可用,您企业将群集一款不同的应用程序运行在虚拟机的客户操作系统中。该工作负载可能需要特殊的配置。注意:在一台虚拟机中运行一台虚拟机(也称为嵌套虚拟化)是不可能的。

存储——存储也必须为虚拟机所共享。所以,所有的虚拟集群节点可以访问数据。该虚拟机只能连接到具有虚拟化的HBA的存储或是基于以太网的存储,因为他们无法连接到一个物理存储适配器。Hyper-V提供了一个虚拟光纤通道HBA以使得虚拟机能够连接到这种类型的存储,但一个虚拟的串行SCSI(Serial-Attached SCSI,SAS)适配器在Hyper-V不可用。虚拟机也可以使用iSCSI、光纤以太网(FCoE)或SMB 3.0文件共享连接到存储。

共享的VHDX——为了简化一个客户端群集的存储管理,让所有的群集节点均能够访问一个单一的在其之上具有多VHDX(虚拟硬盘)文件的LUN是可能的。每个磁盘都可作为共享存储的功能,将存储客户端群集数据,如虚拟化的SQL Server的数据库。

管理一个群集虚拟机

对于一个故障转移群集,有许多的管理选项,而那些管理选项对于Hyper-V集群是非常重要的。

虚拟机组

每个群集工作负载都被组织到了其自己的群组,其中包含几个相关资源和在不同的群集节点之间移动。一个虚拟机的群集组包含虚拟机,而该虚拟机的配置文件和磁盘在共享的存储中(不是一个CSV就是传统的群集磁盘)。当虚拟机迁移或故障转移到一个不同的节点上时,配置文件和磁盘的所有权也转移到该节点。

  图6 - 几个群集虚拟机的管理

虚拟机启动优先级

集群的虚拟机可以按照高、中、低或不自动启动几个级别来指定启动优先级。这四种设置让您组织可以将虚拟机组成几个管理组。当某项操作需要被用于一个组的虚拟机时,虚拟机的优先级设置将被用于首先执行高优先级虚拟机的动作,随后是中、低和不自动启动的级别。一些操作所考虑的优先级包括在一个节点上启动虚拟机,实时迁移的一组虚拟机,以及当进入维修模式时从一个节点消耗虚拟机。而如果您企业组织的群集崩溃,这可以让您确保您的基础设施或关键业务的虚拟机首先重启,而不必与不重要的虚拟机争夺资源。

一些管理人员还用虚拟机优先级设置将虚拟机安排进入不同的层次。例如,您可以为后台数据库虚拟机指定一个高优先级设置,这样他们就可以最先启动;随后将是对中间层业务虚拟机的一个中等优先级设置;最后是对于前端Web虚拟机的一个低优先级设置,这样他们将最后启动,进而在让客户端能够访问系统之前,留出额外的时间让后端服务上线。

不自动启动的设置稍微有点不同。因为如果一台虚拟机被指定了这一不自动启动的级别,而一旦主机崩溃,就会使得涉及到关键业务的虚拟机首先上线。故而当您企业为一台虚拟机制定了不自动启动的级别时务必要格外小心,因为其必需由群集管理员人工手动启动。

  图7 - 一台虚拟机的启动优先级配置

在主机上安置虚拟机

Windows Server故障转移群集不需要为每台主机配置相同的硬件,只要整个解决方案在任何群集验证测试中没有故障失败。由于某些主机较之其他主机可能会更强大,或对于存储有不同的访问速度,您可能希望某些虚拟机在特定的主机上运行。

首选所有者(Preferred Owner)设置允许您企业指定您倾向于让虚拟机在哪个群集节点上来运行。如果有任何首选所有者节点在线,虚拟机将被托管在那里。而如果没有任何一个首选所有者的节点处于联机状态,那么虚拟机将迁移到另一台活跃的主机。该虚拟机可以在任何群集节点上运行,并提供更多的故障转移选项,因为在默认情况下,没有一个节点是首选所有者。

  图8 - 为一个群集虚拟机配置首选所有者

可能的所有者(The Possible Owner)设置指定是否允许虚拟机在所有节点上运行。如果可能的所有者节点均不可用,虚拟机将保持在离线状态,等待一个可能的所有者节点回归在线。默认情况下,所有的群集节点都是可能的所有者,这意味着虚拟机可以运行在任何群集节点上,以获得高可用性。

使用PowerShell或系统中心虚拟机管理器,您企业可以将虚拟机指定为一个可用集合的一部分。在这个集合组中的所有虚拟机会故意尝试跨不同的主机来自行分配,以便提供更高的可用性。而如果您企业有两台或更多的虚拟域控制器,您可以将这些虚拟机纳入一个可用集合,以便使得并非所有的虚拟机都运行在同一主机上,因为这将创建一个单点故障。除了使用这个方法以按角色作用来群组虚拟机之外,另一个常见的案例是把来自相同客户端虚拟)集群的所有节点放入一个可用集合。这种方法跨不同物理节点分配客户端群集节点,并确保一个物理节点的故障不会影响到整个客户端群集。使用PowerShell,这种方法配置了反类名属性。关于这个话题的更多信息,请访问这篇博客。

您企业应该进行评估的另一个主机配置设置是故障恢复,其将决定一旦其从崩溃之后恢复联机,您企业是否想要虚拟机返回到该主机或保持在其位置。即使虚拟机正在使用实时迁移以消除停机时间,打开故障恢复会增加额外的实时迁移网络流量,所以默认情况下禁用。

虚拟机离线设置

群集节点偶尔会因意外停机或计划内检修时的停电而离线。当预计会发生停电时,建议将虚拟机实时迁移到一台不同的主机上,这样就不会发生停机中断。而当主机上发生计划外故障时,如停电或蓝屏,虚拟机将被关闭并在一个不同的群集节点上重启,或者在同一个节点上也是可能的,这取决于主机的位置设置。还需要考虑虚拟机的优先级是否已经设置为不自动启动,因为如果主机崩溃虚拟机将需要人工手动重新启动。

当您在策略标签下查看虚拟机的性能时,您会看到当其运行失败时重新启动虚拟机的几个设置。一般情况下,您将要立即重新启动虚拟机,但,如果您想要审查该问题,或者相关服务需要被首先重新启动的话,您也可能想要添加一个延迟。

在设置选项标签中,当群集在线联机占有资源时,您将能够控制一台

虚拟机是如何关闭。默认情况下,其使用保存选项提交虚拟机的运行内存到磁盘。您同时也有关闭、(强制)关闭和关机的选项,其要么正常关闭虚拟机,要么立即将其关机。

虚拟机监控

聚类任何应用程序的一大优势就是该集群将通过一个被称为“心跳”的机制,定期检查并重新启动一个工作负载。如果该“心跳”已经停止,则说明该工作负载已经挂掉或崩溃。

群集Hyper-V虚拟机使用“心跳”,以确保虚拟机正在运行额外的健康状况检查,以判定客户端操作系统未挂掉或冻结,即使虚拟机的状况看起来是健康的。在Windows Server 2012 R2,这两个设置默认打开的。但是,在早期版本中,他们必须通过编辑群集虚拟机的性能来配置。

  图9 - 一台群集虚拟机的在线联机操作和“心跳”设置配置

如果您有访问运行Windows 8、Windows Server 2012或更高版本的虚拟机客户端操作系统的权限,那么,还有一个额外的设置,您可以配置,以便允许您从集群节点上监控任何客户端操作系统上的Windows服务。这使得您可以为这个错误的服务尝试先进的回收行动,否则可能永远无法检测到。这些补救措施包括重新启动服务,重启虚拟机,或将虚拟机迁移到另一台不同的主机。针对虚拟机监控的配置需要同时在主机和虚拟机上完成,而相关的步骤文档您可以从这篇博客中找到。

节点健康状况检查

一旦您企业的虚拟机已经部署,那么,在生产条件下来测试他们将如何发挥功用是非常重要的,特别是如果您企业的网络有带宽限制的话。群集使用一个简单的“请求-反应”机制,以便跨集群节点执行健康检查。速度慢的网络可能会影响其可靠性,这些设置都是可配置的,并且是让Hyper-V集群与其他类型的集群不同的,其他类型的集群每隔5秒发送健康状况检查;而在一个Hyper-V集群,健康状况检查每隔10秒在相同的子网的节点上出现,每隔20秒在不同的子网的节点上出现。每一分钟,一个更彻底的健康状况检查将被发送出。如果某个节点不能对几次连续的健康状况检查请求作出响应的话,那么,其将被认为已经失败,这可能是由于网络流量造成的,而即使该节点的状况是健康的。

默认设置应该适用于绝大多数的集群,但是,基于带宽、网络数量、节点和网络流量之间的距离等因素,在生产条件下的测试和根据需要进行的健康状况的调整检查很重要的。

  图10 - 集群节点的健康状况检查配置

节点维护

如果您企业需要为一个集群模式做计划性的维护,那么,有一套简单的以一个步骤就能实时迁移所有的虚拟机的方法。选择一个节点,将其暂停,并作出是否排出角色作用(Drain Roles)的选择。当您暂停一个节点时,会将该节点纳入维护,这意味着没有虚拟机将故障转移到该节点。如果您选择排出角色作用,集群会根据它们的优先级,将虚拟机实时迁移到其他群集节点。为了从维护删除一个节点,您可以选择节点并恢复它,您可以选择是否让失败的角色作用回来,其将实时迁移回该节点之前托管的所有虚拟机。

还有一个群集范围内的属性:DrainOnShutdown,其在默认情况下是启用的。当一位管理员关闭一台Hyper-V主机时,该关闭将被延迟,而与此同时虚拟机将实时迁移到其他节点,从高优先级的虚拟机开始。如果一位管理员试图关闭群集节点,但并没有意识到在其之上有虚拟机运行的话,这能够防止停机中断。

  图11 - 一个节点置入维护模式

群集感知更新

为了您企业的软件和硬件保持虚拟机的补丁更新是相当重要的。Windows Server 2012推出了一项被称为群集感知更新(Cluster Aware Updating,CAU)的功能,可以在物理和客户端(虚拟)集群上都自动重复集群修补进程。CAU可以在本地或远程运行,以集中管理集群修补。其连接到一个Windows Server Update Services server 或Windows Update。更新工作流程的步骤如下:

1、管理员创建一个更新的集合,被称为集群的基线。

2、CAU每个节点上基于基线进行更新比较,并确定哪些节点需要更新哪些补丁。

3、CAU选择工作负载最少的节点,以尽量减少中断,然后将其暂停,并把它置于维护,然后将虚拟机实时迁移到其他节点。

4、在所有虚拟机已经从节点上迁出后,下载更新并应用于节点并将其重新启动(如果需要的话)。

5、在节点重启并联机在线后,CAU将验证补丁是否安装成功和群集节点运行是否正常。

6、CAU将恢复节点,并将其从维修中取出,并允许其再次托管新的虚拟机。注:CAU在集群中对所有节点重复这个过程。

如果CAU遇到一个错误,其将暂停修补周期,并提醒管理员。这是为了确保一个故障更新不会被应用到集群中的每个节点。CAU也有一个自我更新模式,允许其运行在其所修补的同一集群上。这使得更新服务本身能够随着他们的重新启动移动到不同的集群节点,从而消除了专门修补基础设施的需要。

群集虚拟机安全

确保虚拟化环境不受病毒,恶意软件和其他安全威胁的攻击的方法与通常是静态的服务器硬件的传统数据中心不同的。在虚拟环境中,很容易通过端点保护在每台服务器上安装和管理代理。虚拟化环境的安全管理与传统数据中心的安全管理存在不同之处的原因在于:虚拟机、磁盘和网络可以是动态的和不断变化的。通常,在每台虚拟机中安装安全代理是不切实际的。5nine Cloud Security产品为Hyper-V提供了唯一的无代理防病毒、防火墙和入侵检测的解决方案。这个安全软件通过到虚拟交换机的一个扩展,过滤进出虚拟机的流量。这意味着安全是集中管理的,而虚拟机用户从不担心更新或扫描客户操作系统,无论其是运行Windows Server、Windows或Linux系统。了解更多关于5nine Cloud Security产品的信息。

群集虚拟机复制

在Windows Server 2012中,为Hyper-V推出了一项新的功能,其通过将虚拟硬盘复制到一处不同的数据中心,甚至复制到微软的Azure,为Hyper-V提供了虚拟机灾难恢复。这项Hyper-V复制功能需要任何托管或接收一台复制虚拟机的服务器或群集启用。每台虚拟机都可以单独为复制配置及测试,然后每隔30秒,5分钟或15分钟异步发送复制数据。

在故障转移群集上的Hyper-V复制配置是不同的,其通过创建一个新的集群负载,从称为Hyper-V Replica Broker。这是一个高度可用,复制服务的版本,这意味着复制引擎将群集节点之间故障转移,以确保复制总会发生。

注意:如果您企业是在一个集群上配置复制,一定要将虚拟硬盘存储在共享存储上,而不是本地磁盘。

为一个集群设计一套灾难恢复计划应基于:工作负载、数据中心之间的距离和其他网络因素。本文中将介绍用于一个故障转移群集的不同的设计方案选项。

  图12 - Hyper-V Replica Broker的创建

集群虚拟机备份

一旦您企业的群集虚拟机运行,为虚拟机的配置文件和虚拟硬盘配置自动定期备份,以及定期测试恢复是相当重要的。Veeam公司的Backup &Replication产品支持所有类型的Hyper-V集群技术备份。无论是使用群集共享卷(Clustered Shared Volumes,CSV)或SMB 3.0共享,Veeam产品均可以轻松的保护这些Hyper-V虚拟机。另外,如果使用的是系统中心虚拟机管理器,将支持备份和复制工作。

注意:对于Veeam Backup &Replication产品,系统中心虚拟机管理器不是必须的。

虚拟机移动性

服务器虚拟化的一个主要的好处便是易于在不同的Hyper-V主机之间迁移虚拟机,而很少或没有停机时间。而如果您企业想在迁移虚拟机的同时,保持服务可用性,那么内存必须在主机之间复制,而且在迁移期间,他们必须保持在线,这是要记住的重要一点。基于这一原因,如果一台主机有一个意外的故障失败发生,会出现停机中断。因为一旦健康状况检查检测到故障失败,虚拟机将暂时离线并在另一个节点重启。

  图13 - 一台虚拟机迁移至另一节点

快速迁移

一台虚拟机迁移到另一不同群集节点的最快的方式是通过一个快速迁移,从而为磁盘节省了虚拟机的运行内存状态,重新启动虚拟机并加载存储到一个新的节点以重新在一台新的主机上创建虚拟机的运行。此方法将导致虚拟机的停机中断,因此其并不常用。除非如果您需要以最快的速度将所有的虚拟机从一台主机迁移。

当执行一次快速迁移时,您企业可以选择特定的节点迁移虚拟机,或者您也可以选择最佳的节点。此选项将以最大量的可用内存把虚拟机迁移到该节点。因为这通常是主机资源的最重要的限制,故而简化了管理。

实时迁移

大多数时候,您企业将执行实时迁移,以便将一台虚拟机迁移到其他节点或集群外的Hyper-V主机。而为了执行一次实时迁移,原始和新的主机都必须处于联机状态,他们应该通过实时迁移网络发送数据。一次实时迁移递归地在主机和看上去就像是一个虚拟机克隆的结果之间复制虚拟机内存,但却是在新的主机上。一旦所有虚拟机都具有了一致的内存,群集将更新网络路由表,以便新传入的网络数据包重定向到新的虚拟机。最后,旧的虚拟机被破坏,因此在旧主机上使用的内存可以回收。一次实时迁移可以在群集节点、独立的Hyper-V主机、或任意节点和主机的组合之间进行。

选择多台虚拟机,并在故障转移群集管理器中同时将它们进行实时迁移是可能的,而虚拟机将需要排队,迁移将基于优先级。您企业也可以为每台主机配置一个允许同时实时迁移的最大数量,通常在4到8之间,这取决于您企业的网络带宽和工作负载。如果您选择的值太大,您可以实际降低总的实时迁移的速度,因为处理器将花费太多的循环管理递归迁移过程。

Windows Server 2012 R2通过在将数据发送到网络之前,对数据进行压缩,使得实时迁移变得更快。然后,当数据被新的群集节点收到时解压缩。默认情况下,此功能是启用的,因为当较少的网络流量必须在主机之间发送时,传输速度通常会快几倍。而一些更新的网络则支持被称为远程直接数据存取(Remote Direct Memory Access ,RMDA )的技术,其允许更快的数据传输速度,使得实时迁移的速度比标准的迁移速度快10倍。

存储迁移

Hyper-V还支持迁移一台虚拟机的虚拟磁盘的存储位置,而不会造成虚拟机运行的停机中断。在一个类似于实时迁移的过程中,Hyper-V将虚拟硬盘上的数据复制到另一个位置,然后重新定向未来的IO到新创建的磁盘。使用存储迁移,您可以通过排出存储阵列执行SAN维修,而不会让您的虚拟机离线。

有可能存在您需要在同一时间对正在运行的虚拟机及其虚拟硬盘都进行迁移的情况。使用一个无共享迁移(shared nothing migration),无论是虚拟机或是其磁盘都将被复制到新主机作为一个单一的操作,而不会发生虚拟机停机。这使您企业可以在一个集群和一台独立主机之间,甚至两台独立主机之间迁移虚拟机,只有本地存储。

实时迁移和存储迁移可以通过Hyper-V管理器调整Hyper-V的设置来启用和配置。

  图14 - 同步实时迁移的配置

结论

Windows Server故障转移群集应该是您企业数据中心的高可用性计划的一个关键组成部分,因为其提供了持续的服务可用性。在本文中,我们为您提供了优化您企业群集虚拟机的最佳时间方案。您同时也了解了虚拟化堆栈只是您数据中心的一部分,而在整个数据中心消除任何单点失败是非常重要的。

其他务必要记住关键的贴士包括:

确保您企业的硬件冗余和容错。

制定一套灾难恢复计划,以便能够在另一处数据中心或Microsoft Azure上运行您的服务。

所有的管理和监控系统都需要高度可用性,并尽可能自动化,以减少人工干预以检测和解决任何问题的次数。

请务必记住,微软公司的System Center 2012 R2管理套件通过与Hyper-V和故障转移群集的全面的集成整合提供集中的虚拟化和云计算管理。*系统中心通过虚拟机管理器提供集群管理;而通过操作管理器提供集群监控;通过Orchestrator协调器(虚拟机管理器)提供自动化;通过数据保护管理器提供备份;通过Azure Pack提供集群虚拟机自助服务。

*关于System Center与Windows Server故障转移群集集成整合的更多信息,请访问这里。

索引

Channel 9: Hyper-V的高可用性和故障转移群集的最佳实践方案:https://channel9.msdn.com/events/teched/europe/2014/cdp-b335

集群团队博客:http://blogs.msdn.com/b/clustering/

微软虚拟学院:在Windows Server 2012 R2中的故障转移群集:https://www.microsoftvirtualacademy.com/en-us/training-courses/failover-clustering-in-windows - server-2012-r2-8489

TechNet故障转移群集:https://technet.microsoft.com/en-us/library/hh831579.aspx

TechNet Hyper-V:https://technet.microsoft.com/en-us/library/mt169373.aspx

虚拟实验室:Windows Server 2012 R2:故障转移群集介绍:http://go.microsoft.com/?linkid=9846211

关于作者

本文作者西蒙·佩里曼是5nine Software公司的业务发展和市场营销副总裁。此前他曾经是微软的高级技术专家,覆盖虚拟化(Hyper-V)、基础设施(Windows Server)、管理 (System Center) 和云服务 (Microsoft Azure) 等诸多领域的全球技术领导。作为微软最广为人们所熟悉的面孔之一,西蒙曾先后培养了数以百万计的IT专业人士,拥有多项专利和行业认证。他在2013年与人合著了《Introduction to System Center 2012 R2 for IT Professionals 》一书。(微软出版社)

关于Veeam软件公司

Veeam公司充分认识到当今世界各地的企业组织所面临的必须保持其业务24 / 7全天候正常运行的新的挑战。而为了解决这个问题,Veeam公司已率先开辟了现代数据中心可用性这一新兴市场,以帮助企业用户在15分钟内满足其所有应用程序和数据的恢复时间目标和点目标(RTPOTM)。通过一种全新的解决方案,其能够提供高速的恢复,避免数据损失,验证保护,并利用数据和完整的可视化。Veeam公司的可用性套件,包括了Veeam Backup &Replication,利用虚拟化、存储和云计算技术,使得企业组织能够利用现代数据中心来节省时间,降低风险,并大幅降低资本和运营成本。

Veeam公司成立于2006年,目前在全球拥有30500家专业的合作伙伴和超过145500家客户。Veeam公司的全球总部位于瑞士巴尔,公司办事处遍布世界各地。





====================================分割线================================


本文转自d1net(转载)

目录
相关文章
|
7月前
|
存储 运维 API
云计算中的虚拟机管理
云计算中的虚拟机管理
136 0
|
存储 虚拟化 块存储
存储与虚拟机管理 3
存储与虚拟机管理
305 0
|
7月前
|
存储 Java Linux
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群
339 1
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
|
6月前
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
67 2
|
7月前
|
分布式计算 大数据 Hadoop
【经验分享】用Linux脚本管理虚拟机下的大数据服务
【经验分享】用Linux脚本管理虚拟机下的大数据服务
61 1
|
存储 虚拟化
存储与虚拟机管理2
存储与虚拟机管理
76 0
|
域名解析 存储 Linux
Mac M1 搭建虚拟机节点集群过程及软件分享
Mac M1 搭建虚拟机节点集群过程及软件分享
375 0
|
7月前
|
XML 数据格式
virsh一个管理虚拟机的命令行工具
virsh是一个管理虚拟机的命令行工具,提供了丰富的命令来查看、创建、管理虚拟机。以下是一些常用的virsh命令: 1. **查看帮助和版本**: - `virsh --help`:查看virsh命令的帮助信息。 - `virsh -version`:查看virsh的版本信息。 2. **查看虚拟机**: - `virsh list`:显示当前正在运行的虚拟机。 - `virsh list --all`:显示主机下的所有虚拟机,包括未运行的。 3. **创建和管理虚拟机**: - `virsh define xml`:使用XML文件定义(创建)虚拟机。
349 0
|
7月前
|
网络协议 Linux 数据安全/隐私保护
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(一)
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群
348 1
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(一)
|
NoSQL Linux Redis
linux虚拟机环境快速搭建redis5.x版本的主从集群总结
我在阿里云服务器上曾参与过公司redis集群的搭建,但时间久了,都快忘记当时的搭建过程了,故而决定在虚拟机centOS 7的环境,自行搭建一套redis5.x版本的集群,该版本集群的搭建比较方便,不用再像以前版本那样还得再搞一个 Ruby,5.x版本可直接使用 redis-cli的方式来构建集群。
124 0