Citrix Hypervisor 8.2

高可用性

高可用性是一组自动功能,用于计划Citrix Hypervisor服务器宕机或使其无法访问的问题,并从这些问题中安全恢复。例如,在物理中断的网络或主机硬件故障期间。

概述

高可用性是指当某个主机不可达或不稳定时,运行在该主机上的虚拟机可以在其他主机上自动安全地重启。这样就不需要手动重启虚拟机,从而将虚拟机停机时间降至最低。

当池主服务器不可访问或不稳定时,高可用性还可以恢复对池的管理控制。高可用性可确保自动恢复管理控制,无需任何人工干预。

可选地,高可用性还可以自动重启主机上的vm,这些主机已知处于良好状态,无需人工干预。可以将这些虚拟机分组重新启动,以便有时间启动业务。它允许基础架构虚拟机在依赖的虚拟机之前启动(例如,DHCP服务器在依赖的SQL服务器之前启动)。

警告:

使用高可用性以及多路径存储和绑定网络。在尝试设置高可用性之前,配置多路径存储和绑定网络。当基础设施不稳定时,没有设置多路径存储和绑定网络的客户可能会看到意外的主机重新启动行为(Self-Fencing)。

所有图形解决方案(NVIDIA vGPU、Intel GVT-d、Intel GVT-G、AMD MxGPU、vGPU直通)都可以在高可用性环境中使用。但是,使用这些图形解决方案的虚拟机无法获得高可用性保护。当存在具有适当空闲资源的主机时,可以尽可能地重新启动这些虚拟机。

简述

当用户设置主机故障数后,当前正在运行的虚拟机无法在其他位置重新启动时,池称为复用池。如果池中没有足够的可用内存在故障发生后运行这些虚拟机,就会发生过度提交。然而,也有一些微妙的变化会使高可用性不可持续:虚拟块设备(vbd)和网络的变化会影响哪些虚拟机可以在哪些主机上重新启动。Citrix Hypervisor无法检查所有潜在的操作并确定它们是否会导致违反高可用性需求。但是,如果高可用性变得不可持续,则会发送异步通知。

Citrix Hypervisor动态维护一个故障转移计划,该计划详细说明了当池中的一组主机在任何给定时间发生故障时应该做些什么。要理解的一个重要概念是主机容错值,它被定义为高可用性配置的一部分。的价值主机容错确定允许的主机故障数量,同时仍然能够重启所有受保护的虚拟机。例如,考虑一个由64台主机和主机容错设置为3。此时,资源池会计算出一个故障切换计划,允许任意3台主机故障,然后重启其他主机上的虚拟机。如果找不到计划,则认为池过度使用。根据虚拟机生命周期操作和移动动态重新计算。如果更改(例如,向池中添加新的vm)导致池过度提交,则通过XenCenter或电子邮件发送警报。

超量使用警告

如果任何尝试启动或恢复虚拟机的操作都会导致池过度使用,XenCenter将显示警告警报。然后,您可以选择取消操作或继续进行。处理将导致池过度提交,并将消息发送到任何配置的电子邮件地址。这也可以通过管理API作为消息实例使用。池级和主机级分别显示不同优先级的虚拟机使用的内存总量。

主机击剑

有时,由于网络连接丢失或遇到控制堆栈问题,服务器可能会出现故障。在这种情况下,Citrix Hypervisor服务器会进行自我隔离,以确保虚拟机不会同时运行在两台服务器上。当采取fence动作时,服务器会立即突然重启,导致在其上运行的所有虚拟机停止。其他服务器检测到虚拟机不再运行,然后根据分配的重启优先级重新启动虚拟机。防护服务器进入一个重新启动序列,当它重新启动后,它会尝试重新加入资源池。

注意:

当集群池中的主机无法与资源池中超过一半的其他主机通信时,它们也可以进行自我隔离。有关更多信息,请参见集群池

配置要求

要使用高可用性特性,您需要:

  • Citrix Hypervisor池(该特性在单个资源池内提供服务器级别的高可用性)。

    注意:

    我们建议仅在包含至少3台Citrix Hypervisor服务器的池中启用高可用性。有关更多信息,请参见CTX129721 -池中心跳丢失时的高可用性行为

  • 共享存储,至少包含一个大于等于356mb的iSCSI、NFS或fc LUN老的心跳.高可用性机制在心跳SR上创建两个卷:

    • 4mb心跳卷:用于提供心跳。
    • 256mb元数据卷:用于存储发生主故障切换时使用的池主元数据。

    注意:

    以前,我们建议使用专用的NFS或iSCSI存储库作为高可用性心跳磁盘。但是,这只有在存储库不共享底层存储设备上的资源时才有好处,否则它只会增加主机控制域(dom0)中的复杂性和资源使用。

    如果池是集群池,则心跳SR必须是GFS2 SR。

    使用CHAP认证时,以SMB或iSCSI方式连接的存储不能作为心跳SR。

  • 所有主机的静态IP地址。

    警告:

    在启用高可用性时,如果服务器的IP地址发生了变化,则高可用性假设主机的网络出现故障。IP地址的改变会使主机处于无法启动的状态。来禁用高可用性host-emergency-ha-disable命令,使用pool-emergency-reset-master,然后重新启用高可用性。

  • 为了获得最大的可靠性,建议使用专用的绑定接口作为高可用性管理网络。

对于受高可用性保护的虚拟机,它必须是敏捷的。这意味着虚拟机:

  • 必须将其虚拟磁盘放在共享存储上。您可以使用任何类型的共享存储。iSCSI、NFS或fc类型的LUN仅用于存储心跳,可用于虚拟磁盘存储。

  • 可以使用实时迁移。

  • 没有配置到本地DVD驱动器的连接。

  • 在全池网络上有虚拟网络接口。

注意:

当启用高可用性时,我们强烈建议在池中的服务器上使用绑定管理接口,并为心跳SR使用多路径存储。

如果从CLI创建vlan和绑定接口,那么尽管创建了它们,但它们可能不会被插入和激活。在这种情况下,VM可能看起来不敏捷,并且不受高可用性的保护。可以使用命令行方式pif-plug命令启动VLAN和bond pif,使虚拟机变得灵活。您还可以使用实例来精确地确定VM不敏捷的原因xe diagnostic-vm-statusCLI命令。该命令分析其放置约束,您可以在必要时采取补救措施。

重启配置设置

虚拟机可以被认为是受保护的、尽力而为的或不受高可用性保护的。的价值ha-restart-priority定义虚拟机是受保护、尽力而为还是未受保护。这些类别中的虚拟机的重启行为是不同的。

受保护的

高可用性保证重启离线或其主机离线的受保护虚拟机,前提是池没有过度使用并且虚拟机是敏捷的。

当服务器故障时,受保护的虚拟机无法重启,当池中有剩余容量时,高可用性会尝试启动受保护的虚拟机。尝试在有额外容量时启动虚拟机现在可能会成功。

ha-restart-priority值:重新启动

的最优

当虚拟机所在主机离线时,高可用性会尝试重启其他主机上的虚拟机。只有在所有受保护的虚拟机重启成功后,才会执行该操作。高可用性只尝试一次重启尽力而为的虚拟机。如果此尝试失败,则高可用性不会再尝试重启虚拟机。

ha-restart-priority值:的最优

无保护的

当未受保护的虚拟机或其所在主机被关闭时,高可用性不会尝试重启虚拟机。

ha-restart-priority取值:为空字符串

注意:

高可用性不会停止或迁移正在运行的虚拟机,从而为受保护或尽力而为的虚拟机重新启动释放资源。

当池内服务器发生故障,且可容忍故障数降至零时,不保证受保护的虚拟机重启。在这种情况下,将生成系统警报。如果再次发生故障,所有设置了重启优先级的虚拟机都将按照“尽力而为”的方式运行。

开始的订单

启动顺序是指当受保护的虚拟机发生故障时,Citrix Hypervisor高可用性尝试重启虚拟机的顺序。的值订单每个受保护虚拟机的属性决定启动顺序。

订单属性用于高可用性,也用于启动和关闭虚拟机的其他功能。任何虚拟机都可以拥有订单属性设置,而不仅仅是标记为高可用性保护的虚拟机。但是,高可用性使用订单属性,仅适用于受保护的虚拟机。

的值订单属性为整数。缺省值为0,优先级最高。受保护的虚拟机订单值为0时,高可用性优先重启。值越高订单属性,重启虚拟机的顺序越晚。

的值订单通过命令行设置虚拟机的属性。

xe vm-param-set uuid=VM_UUID order=int 

或者在xcenter中启动选项面板,设置开始的订单到所需的值。

在Citrix Hypervisor池上启用高可用性

可以通过使用XenCenter或命令行界面(CLI)在池上启用高可用性。在任何一种情况下,您都可以指定一组优先级,这些优先级决定了当池被超额使用时,哪些虚拟机被赋予最高的重启优先级。

警告:

  • 当启用高可用性时,可能会禁用一些影响重启虚拟机计划的操作(例如从池中移除服务器)。您可以暂时禁用高可用性,或者使受高可用性保护的虚拟机不受保护。

  • 如果启用了高可用性,则无法在池上启用集群。暂时禁用高可用性以启用集群。您可以在集群池上启用高可用性。一些高可用性行为,如自防护,对于集群池是不同的。有关更多信息,请参见集群池

通过CLI开启高可用性

  1. 验证是否有一个兼容的Storage Repository (SR)附加到您的池。支持iSCSI、NFS和fc SRs。通过CLI配置存储库的方法请参见管理存储库

  2. 对于每个需要保护的虚拟机,设置重启优先级和启动顺序。重启优先级设置方法如下:

    Xe vm-param-set uuid=vm_uuid ha-restart-priority=restart order=1 
  3. 在池上启用高可用性,并可选地指定超时:

    Xe pool-ha-enable heartbeat-sr-uuid =sr_uuid ha-config:timeout=超时时间

    超时是指池中的主机无法访问网络或存储的时间段。如果在启用高可用性时没有指定超时,Citrix Hypervisor将使用默认的60秒超时。如果任何Citrix Hypervisor服务器在超时时间内无法访问网络或存储,它可以自我隔离并重新启动。

  4. 运行命令pool-ha-compute-max-host-failures-to-tolerate.该命令返回池中所有受保护虚拟机在资源不足时故障的最大主机数。使用实例

    池-ha-compute-max-host-failures-to- tolerance 

    可容忍的故障数量决定了何时发送警报。当池的状态发生变化时,系统会重新计算故障切换计划。它使用此计算来确定池容量以及在不失去受保护虚拟机的活动性保证的情况下可能发生多少故障。当此计算值低于的指定值时,将生成系统警报ha-host-failures-to-tolerate

  5. 指定ha-host-failures-to-tolerate参数。该值必须小于或等于计算值:

    Xe pool-param-set ha-host-failures-to-tolerate=2 uuid=pool-uuid 

该任务指导管理员通过CLI解除虚拟机的高可用性保护

如果需要关闭虚拟机的高可用性特性,请使用xe vm-param-set命令来设置ha-restart-priority参数必须为空字符串。设置ha-restart-priority参数不清除启动顺序设置。当需要重新启用虚拟机高可用性时,可通过设置ha-restart-priority参数重新启动的最优是合适的。

恢复不可达主机

如果由于某种原因,主机无法访问高可用性状态文件,则可能导致主机不可访问。要恢复Citrix Hypervisor的安装,可能必须使用host-emergency-ha-disable命令:

Xe host-emergency-ha-disable——force 

如果主机是池主,那么它将正常启动,但禁用高可用性。池成员重新连接并自动禁用高可用性。如果主机是池成员,并且无法与主服务器联系,则可能必须采取以下操作之一:

  • 强制主机以池主身份重新启动(xe pool-emergency-transition-to-master

    Xe pool-emergency-transition-to-master uuid=host_uuid 
  • 告诉主持人新主人在哪里xe pool-emergency-reset-master):

    Xe pool-emergency-reset-master master-address=new_master_hostname 

当所有主机都成功重启后,重新启用高可用性:

Xe pool-ha-enable heartbeat-sr-uuid=sr_uuid 

启用高可用性时关闭主机

在关闭或重新启动主机时要特别小心,以防止高可用性机制假定主机发生故障。当启用高可用性时,要干净地关闭主机,请使用XenCenter或CLI关闭主机,然后关闭主机,然后撤离主机。在启用高可用性的环境中关闭主机,使用以下命令:

Xe host-disable host=host_name Xe host- evacuation uuid=host_uuid Xe host-shutdown host=host_name 

关闭高可用性保护虚拟机

当虚拟机处于高可用性保护状态并设置为自动重启时,该虚拟机不能在高可用性保护状态下被关闭。关闭虚拟机时,需要先关闭虚拟机的高可用性保护,再执行CLI命令。选项时,XenCenter提供了一个对话框,用于自动禁用保护关闭按钮。

注意:

如果在guest中关闭虚拟机,并且该虚拟机受到保护,则在高可用性故障条件下,它会自动重新启动。自动重启有助于确保操作人员的错误不会导致受保护的虚拟机意外关闭。如果需要关闭该虚拟机,请先关闭该虚拟机的高可用性保护。

高可用性