XenServer

配置高可用性

高可用性旨在保护您的虚拟机工作负载,以防主机或硬件故障。

本文介绍了配置高可用性所需执行的任务。有关高可用性概念、要求和预期行为的信息,请参阅 高可用性

1. 为高可用性配置池

要使池与高可用性兼容,它必须满足以下要求:

  1. 确保您的池是同构的,包含三个或更多主机,并且所有主机都处于联机状态。有关详细信息,请参阅 创建池

  2. 为池管理网络设置一个专用的绑定接口,并确保此网络允许通过端口 694 的 UDP 流量。有关详细信息,请参阅 在资源池中创建 NIC 绑定

  3. 为池中的所有主机配置静态 IP 地址。

  4. 为池中的所有主机设置共享存储。有关详细信息,请参阅 创建 SR

  5. 确保池中的一个共享存储库位于 iSCSI、NFS 或光纤通道 LUN 上,并满足以下要求:

    • 大小为 4 GB 或更大。
    • 具有弹性存储通信:对于 iSCSI 和光纤通道 SR,请配置多路径。对于 NFS SR,请使用弹性绑定网络作为存储网络。

    此 SR 用作心跳 SR。

2. 为高可用性准备虚拟机

对池中您希望通过高可用性保护的任何虚拟机完成以下步骤:

  1. 确保虚拟机具有灵活性:

    1. 确保其虚拟磁盘位于共享存储上。

      如果磁盘不在共享存储上,请使用以下命令移动它们:

      xe vm-copy uuid=<vm_uuid> new-name-label=<name_for_copy> sr-uuid=<uuid_of_sr>

      sr-uuid 设置为池共享存储的 UUID。

    2. 确保虚拟机未连接到本地 DVD 驱动器。

      1. 通过键入以下内容,识别虚拟机是否没有空的 CD/DVD 驱动器:

        xe vbd-list type=CD empty=false vm-uuid=<vm_uuid>
        <!--NeedCopy-->
        

        如果存在已连接的驱动器,此操作将返回其信息。请注意 uuid,它是列表中的第一项。

      2. 要清空虚拟机的 CD/DVD 驱动器,请键入以下内容:

        xe vbd-eject uuid=<uuid>
        <!--NeedCopy-->
        
    3. 确保其虚拟网络接口位于池范围的网络上。

    4. 确保虚拟机满足实时迁移的要求。有关详细信息,请参阅迁移要求

  2. 指定一组优先级,以确定当池超额分配时哪些虚拟机获得最高的重启优先级。

    ha-restart-priority 的值设置为以下选项之一:

    • restart,以便在池未超额分配的情况下,在池中的另一个主机上重启虚拟机。XenServer 会重试此重启,直到成功为止。
    • best-effort,以便在池中的另一个主机上尝试重启虚拟机一次。XenServer 仅在所有受保护的虚拟机成功重启后才进行此尝试。

    当设置虚拟机 order 的值时,将最高优先级的虚拟机设置为最低启动顺序。此设置的默认值为 0,具有此启动顺序的虚拟机将首先启动。

    xe vm-param-set uuid=<vm_uuid> ha-restart-priority=<priority> order=<start_order>
    <!--NeedCopy-->
    

    您也可以使用 XenCenter 在虚拟机上配置这些设置。有关详细信息,请参阅启动选项

3. 在 XenServer® 池上启用高可用性

您可以使用 XenCenter 或命令行界面 (CLI) 在池上启用高可用性。有关使用 XenCenter 启用高可用性的信息,请参阅启用高可用性

要使用 xe CLI 启用高可用性:

  1. 要在池上启用高可用性并(可选地)指定超时,请运行以下命令:

    xe pool-ha-enable heartbeat-sr-uuids=<sr uuid> ha-config:timeout=<timeout_in_seconds>
    <!--NeedCopy-->
    

    此命令配置的超时仅适用于此次高可用性启用。如果您未指定超时,则默认值为 60 秒。要更改池的此默认超时,请参阅配置高可用性超时

  2. 通过运行以下命令,计算在资源不足以运行池中所有受保护虚拟机之前,可以发生故障的最大主机数:

    xe pool-ha-compute-max-host-failures-to-tolerate
    <!--NeedCopy-->
    

    返回的数字是池中当前可能发生的主机故障数,且不会丧失受保护虚拟机的活跃性保证。此值会随着池中条件的变化而变化。

  3. 指定要容忍的主机故障数,该数字小于或等于上一步给出的值。

    xe pool-param-set ha-host-failures-to-tolerate=<failure_value> uuid=<pool uuid>
    <!--NeedCopy-->
    

    要容忍的故障数决定何时发送警报。系统会随着池状态的变化重新计算故障转移计划。它使用此计算来识别池容量以及在不丧失受保护虚拟机活跃性保证的情况下可能发生的更多故障数。当此计算值低于指定值时,会生成系统警报。

配置高可用性超时

超时是指池中的主机无法访问网络或存储的期间。如果任何 XenServer 主机在超时期间无法访问网络或存储,它可能会自行隔离并重新启动。默认超时为 60 秒。但是,您可以通过为池设置默认高可用性超时来更改此值:

xe pool-param-set uuid=<pool uuid> other-config:default_ha_timeout=<timeout in seconds>
<!--NeedCopy-->

如果您使用 XenCenter® 而不是 xe CLI 启用高可用性,此默认值仍然适用。

从虚拟机中移除高可用性保护

要禁用虚拟机的高可用性功能,请使用以下命令:

xe vm-param-set uuid=<vm_uuid> ha-restart-priority=

此命令保留启动顺序设置。您可以通过将 ha-restart-priority 参数设置为 restartbest-effort 来再次为此虚拟机启用高可用性。

配置内部关闭的虚拟机的重启行为

If a VM is protected by HA, it is restarted by default whenever it shuts down. This behavior includes internal shutdowns due to either a VM crash or a clean shutdown from within the guest operating system.

You can change this behavior to ensure that VMs in the HA-enabled pool are only restarted if the host they are running on fails or is fenced, and that in cases of internal shutdown a VM remains shut down.

要将受 HA 保护的虚拟机配置为在内部关闭后不自动重启,请将 ha-reboot-vm-on-internal-shutdown 值设置为 false

xe pool-param-set uuid=<pool_uuid> ha-reboot-vm-on-internal-shutdown=false

要将受 HA 保护的虚拟机配置为在内部关闭后自动重启,请将 ha-reboot-vm-on-internal-shutdown 值设置为 true

xe pool-param-set uuid=<pool_uuid> ha-reboot-vm-on-internal-shutdown=true

恢复无法访问的主机

如果由于某种原因,主机无法访问 high availability 状态文件,则主机可能会变得无法访问。要恢复您的 XenServer 安装,您可能需要使用主机上的 host-emergency-ha-disable 命令禁用 high availability:

xe host-emergency-ha-disable --force
<!--NeedCopy-->

如果主机是池协调器,它将正常启动,且 high availability 已禁用。池成员会重新连接并自动禁用 high availability。如果主机是池成员且无法联系池协调器,您可能需要执行以下操作之一:

  • 强制主机作为池协调器重新启动 (xe pool-emergency-transition-to-master)

     xe pool-emergency-transition-to-master uuid=<host uuid>
     <!--NeedCopy-->
    
  • 告知主机新池协调器的位置 (xe pool-emergency-reset-master):

     xe pool-emergency-reset-master master-address=<new pool coordinator hostname>
     <!--NeedCopy-->
    

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

xe pool-ha-enable heartbeat-sr-uuid=<sr uuid>
<!--NeedCopy-->

在启用高可用性时关闭主机

关闭或重新启动主机时请务必小心,以防止高可用性机制误认为主机已发生故障。在启用高可用性时,若要干净地关闭主机,请禁用主机、迁移主机,然后使用 XenCenter 或 CLI 关闭主机。若要在启用高可用性的环境中关闭主机,请运行以下命令:

xe host-disable host=<host name>
xe host-evacuate uuid=<host uuid>
xe host-shutdown host=<host name>
<!--NeedCopy-->

关闭受高可用性保护的虚拟机

当虚拟机在高可用性计划下受到保护并设置为自动重启时,在此保护处于活动状态时无法将其关闭。要关闭虚拟机,请首先禁用其高可用性保护,然后运行 CLI 命令。

xe vm-param-set uuid=<vm_uuid> ha-restart-priority=
xe vm-shutdown uuid=<vm_uuid>
<!--NeedCopy-->

当您选择受保护虚拟机的“关机”按钮时,XenCenter 会提供一个对话框,以自动禁用保护。

注意:

如果您从客户机内部关闭虚拟机,并且该虚拟机受到保护,它将在高可用性故障条件下自动重启。自动重启有助于确保操作员错误不会导致受保护的虚拟机意外关闭。如果您想关闭此虚拟机,请首先禁用其高可用性保护。