可以利用许多不同类型和级别的集群技术来确保应用程序的高可用性。虚拟基础设施的现代时代带来了在过去几十年根本不可能实现的机制。

Microsoft的Hyper-V管理程序是一个现代的、强大的、面向企业的管理程序,它具有许多内置功能,允许应用程序以高可用性的方式运行。但是,有一种类型的集群可以在来宾虚拟机级别上执行,它可以确保应用程序在单靠管理程序无法实现的级别上具有高可用性。这被称为客户集群。

在这篇分为两部分的文章中,我们将了解什么是客户集群,为什么需要它,以及如何配置客户集群以确保应用程序的高可用性。

什么是Hyper-V来宾群集?

如果虚拟机运行在一组集群在Windows Server集群中的Hyper-V hypervisor主机上,为什么需要虚拟机客户集群?

Hyper-V主机群集可确保来宾虚拟机的高可用性。借助托管在Windows Server的Windows故障转移群集功能之上的Hyper-V角色,Hyper-V可以确保虚拟机在Hyper-V主机发生故障时具有弹性。这需要主机之间共享存储。如果其中一台Hyper-V主机出现故障,则该主机上的虚拟机将在Hyper-V群集中剩余的正常主机上重新启动。这确保了虚拟机对单个主机故障具有弹性。

下载的横幅

但是,由于正常主机上的虚拟机重新启动操作,虚拟机提供的应用程序将受到影响。这意味着,客户虚拟机操作系统在健康主机上启动所需的时间是,它提供的应用程序不可用。这将导致应用程序的可用性中断,即使Hyper-V集群在虚拟机级别提供高可用性。

Guest集群基本上是运行“集群中的集群”的操作。

换句话说,在虚拟机中构建一个“嵌套的”Windows Server故障转移集群。当在虚拟机上运行的Windows故障转移群集受到物理Hyper-V主机故障的影响时,Windows故障转移群集功能将在应用程序级别启动,并假定使用不受故障主机影响的虚拟机为应用程序提供服务的所有权。这意味着在故障主机上的虚拟机重新启动事件期间,用户仍然可以使用应用程序。一旦虚拟机在健康主机上重新启动,它将重新加入嵌套的Windows故障转移集群配置,并将再次能够为应用程序提供高可用性。

例如,如果Exchange数据库可用性组正在利用Hyper-V集群上运行的服务器,而其中一个集群节点发生故障,那么DAG中受主机故障影响的虚拟机将不会导致Exchange应用程序的可用性下降。

Exchange应用程序受到客户集群技术的保护,该技术允许应用程序对底层故障具有弹性。虚拟机来宾集群允许我们将Windows Server Hyper-V故障转移集群提供给我们的高可用性直接扩展到集群虚拟机中运行的应用程序。此功能允许在Hyper-V虚拟机工作负载中直接支持集群感知的应用程序。

hyper-v-guest-cluster

虚拟机客户集群架构概述(图片由微软提供)

正如我们所看到的,虚拟机来宾集群可以为任何应用程序添加大量冗余和恢复能力。

Hyper-V Guest集群的组件和要求

如前所述,设置Hyper-V来宾群集涉及在物理Hyper-V群集中运行的来宾虚拟机,这有点复杂。Hyper-V来宾群集需要以与物理Windows故障转移群集非常相似的方式进行配置。在创建物理Windows故障转移群集时,这些要求基本上与物理主机群集相同。但是,在来宾虚拟机内运行的集群“主机”的配置方式上存在一些差异。来宾虚拟机当然是虚拟机。这有助于减轻通常需要使用群集主机验证的一些硬件问题。

然而,你仍然有以下要求:

  • 通过共享VHDX或VHDS(虚拟硬盘集)共享存储
  • 网络要求-集群网络等
  • Windows Server 2012 R2和更高版本在虚拟机中运行
  • 需要在两个客户虚拟机上安装Windows故障转移集群特性
  • 反关联规则可将来宾群集虚拟机保留在单独的物理Hyper-V主机上

共享存储-共享VHDX和VHD集

共享存储可能是虚拟环境中最重要的需求之一。

在Windows Server 2012 R2中,微软引入了新的共享VHDX文件,可以在虚拟机之间共享。这是客户集群的一个完美用例,因为创建Windows故障转移集群(并扩展为客户集群)的需求之一是共享存储。然而,从Windows Server 2016开始,微软推出了VHD Set,这是一个VHD创建与VHDS扩展。

Windows Server 2016中提供的新VHD集解决了共享VHDX的一些缺点。其中一些缺点包括无法调整VM大小或执行主机备份。

VHDX Set是一个包含元数据的文件,允许用户集群中访问共享VHDX磁盘的节点。在Windows Server 2016中,共享VHDX文件可以是固定的或动态扩展的自动VHDX或AVHDX文件。

通过VHD Set File, Microsoft增加了使用存储快照然后更新VM配置以引用正确配置的能力。VHDS文件是一个指针文件,它仅仅包含关于Shared VHDX的检查点元数据。该配置文件作为外部配置,在两台虚拟机之间共享。

在Windows Server 2012 R2中,共享VHDX对此配置文件有一个限制,因为每个VM都有自己的配置文件,该文件与使用元数据更新的共享VHDX有关。这在重新同步数据时产生了一个问题。VHD或VHD集的集中式特性允许在底层存储发生更改时在一个位置进行更新。在将来宾群集作为高可用性的生产机制运行时,您希望能够正确备份这些来宾群集主机。VHD集合文件使这成为可能。

网络需求

在考虑虚拟机客户集群的网络需求时,需要考虑一些事情。

  • 与物理群集一样,您希望将内部群集通信的网络路径与客户端网络通信的网络路径分开
  • 虚拟机来宾群集中的每个VM都需要分配两个虚拟网络适配器,根据存储情况,可能需要分配更多的适配器
  • 此外,如果您正在使用网络负载均衡与客户集群一起使用,那么您必须启用MAC地址欺骗,允许虚拟机将出包中的源MAC地址更改为没有分配给它们的地址

hyper-v-guest-cluster

在Windows Server 2016 Hyper-V中添加共享磁盘

反亲和基团

使用虚拟机客户集群时,您不希望虚拟机驻留在集群中的同一主机上,因为这将违背虚拟机客户集群的目的。使用反亲和性组,可以确保每个虚拟机驻留在不同的主机上。

可以在Hyper-V主机上使用PowerShell为同一个Guest集群中的每个虚拟机配置非亲和性组名:

$AntiAffinityGroup = New-Object System.Collections.Specialized.StringCollection
AntiAffinityGroup.Add美元(“HyperVClusterName”)
(Get-ClusterGroup“HyperHost1”)。AntiAffinityClassNames = $ AntiAffinityGroup

为什么组织不使用虚拟机客户集群?

虽然客户集群是为应用程序提供最高可用性的一种很好的方式,但它也有一些“成本”。这些成本包括复杂性和许可成本。

  • 正如您很可能已经了解到的,有些应用程序在虚拟化环境中不受集群支持。在这方面,每个应用程序的可支持性都会有所不同,因此请确保与应用程序供应商核实具体情况

    一些非常适合虚拟机客户集群的集群感知应用程序示例如下:

    • 连续可用的文件共享
    • DFS服务器、命名空间等
    • SQL Server
    • 交换
    • 网络资源,如DHCP
  • 虚拟机客户集群确实给环境增加了相当多的复杂性。通常需要考虑更多与虚拟机客户集群相关的配置和其他操作考虑事项
  • 此外,组织必须考虑虚拟机客户集群带来的额外许可成本。默认情况下,集群需要多个服务器来集群应用程序。应用程序的每次安装通常需要它自己的许可,这取决于应用程序供应商等等

因此,考虑到上述情况,组织可能不会选择为每个应用程序创建虚拟机客户集群,而是选择为那些业务关键型应用程序的基础应用程序创建虚拟机客户集群。

最后的想法

Hyper-V来宾群集提供了一种强大的方法,可以为应用程序提供更高的可用性,而不仅仅是虚拟机。Hyper-V群集为来宾虚拟机提供高可用性;但是,故障切换过程涉及在正常主机上重新启动虚拟机。这将包括至少足够长的停机时间,以便虚拟机重新启动。通过来宾群集,来宾虚拟机通过Windows故障转移群集进行群集,这将在应用程序层提供故障转移,并将极大地减少甚至使最终用户或业务干系人看不到任何故障转移。这大大提高了业务关键型应用程序的高可用性。

跟着我们推特脸谱网为新发布,更新,见解深刻的帖子和更多的Feeds。