主机和资源池

本部分内容通过一系列示例介绍如何使用 xe 命令行接口 (CLI) 创建资源池。下面将给出一个简单的基于 NFS 的共享存储配置,并讨论多个简单的 VM 管理示例。还将介绍处理物理节点故障的过程。

Citrix Hypervisor 服务器和资源池概述

资源池包括多个 Citrix Hypervisor 服务器安装,这些安装绑定在一起形成可以托管虚拟机的单一托管实体。如果与共享存储结合使用,资源池将允许 VM 在该池中内存充足的任何 Citrix Hypervisor 服务器上启动。VM 之后可以在运行时动态地在 Citrix Hypervisor 服务器之间移动,从而最大程度地缩短停机时间(实时迁移)。如果单个 Citrix Hypervisor 服务器发生硬件故障,管理员可以在同一资源池中的另一个 Citrix Hypervisor 服务器上重新启动出现故障的 VM。在资源池上启用了高可用性时,VM 会在其主机发生故障时自动移动。每个资源池最多支持 64 台主机(尽管此限制并不强制执行)。

一个池始终至少包含一个物理节点,称为主节点。只有主节点才会公开(XenCenter 和 Citrix Hypervisor 命令行接口 [称为 xe CLI] 使用的)管理接口。主节点会根据需要向各个成员转发命令。

注意:

如果池的主节点发生故障,只有在启用了高可用性的情况下才会重新选择主节点。

创建资源池的要求

资源池是一台或多台同类 Citrix Hypervisor 服务器(或具有限制的异构池)的聚合,每个池最多包含 64 台主机。同类主机的定义是:

  • 要加入池的服务器上的 CPU 与池中已有服务器上的 CPU 相同(在供应商、型号和功能方面)。

  • 要加入池的服务器运行的 Citrix Hypervisor 软件版本在修补程序级别与池中已有的服务器相同。

向池中加入服务器时,软件将实施附加限制。特别是,Citrix Hypervisor 检查加入池的服务器是否满足以下条件:

  • 服务器不是现有资源池的成员。

  • 服务器未配置任何共享存储。

  • 服务器未托管任何正在运行的或挂起的 VM。

  • 服务器上的 VM 上不存在任何正在进行的活动操作,例如 VM 关闭操作。

  • 服务器上的时钟同步到与池主服务器相同的时间(例如,通过使用 NTP)。

  • 服务器的管理接口未绑定。在服务器成功加入池时可以配置管理接口。

  • 管理 IP 地址是静态的(在服务器自身上配置或者使用 DHCP 服务器上的相应配置)。

资源池中的 Citrix Hypervisor 服务器可以包括不同数量的物理网络接口和不同大小的本地存储库。实际上,由于通常很难实现多个服务器使用完全相同的 CPU,因此微小差异是允许的。如果可以接受具有不同 CPU 的主机加入同一个池,可以通过传递 --force 参数强制执行池加入操作。

池中的所有主机都必须位于同一个站点中,并且通过低延迟网络连接。

注意:

为池提供共享 NFS 或 iSCSI 存储的服务器必须具有静态 IP 地址。

池必须包含可选择的 Citrix Hypervisor 服务器在其上运行 VM 的共享存储库,以及要在 Citrix Hypervisor 服务器之间动态移动 VM 的共享存储库。如有可能,请在共享存储可用后创建池。我们建议您在添加共享存储后将磁盘位于本地存储中的现有 VM 移动到共享存储。可以使用 xe vm-copy 命令或使用 XenCenter 移动 VM。

创建资源池

可以使用 XenCenter 或 CLI 创建资源池。新主机加入资源池时,加入的主机会将其本地数据库与池范围内的数据库同步,并从池继承某些设置:

  • 将 VM、本地和远程存储配置添加到池范围内的数据库中。除非在主机加入池后明确将资源设置为共享,否则,此配置将应用到池中加入的主机。

  • 加入的主机将继承池中现有的共享存储库。创建相应的 PBD 记录,以便新主机能够自动访问现有共享存储。

  • 加入的主机会部分继承网络连接信息:全部继承 NIC、VLAN 和绑定接口的结构详细信息,但不继承策略信息。此策略信息必须重新配置,包括:

    • 管理 NIC 的 IP 地址,这类地址通过原始配置保留。

    • 管理接口的位置,保持与原始配置相同。例如,如果其他池主机的管理接口位于绑定接口上,则加入的主机在加入后必须立即迁移到绑定。

    • 专用存储 NIC,必须通过 XenCenter 或 CLI 重新分配给加入的主机,并相应地重新插入 PBD 以路由流量。这是因为加入到池的操作中并不包含分配 IP 地址这一步骤,并且存储 NIC 仅在正确配置了 IP 地址时才能运行。有关如何通过 CLI 指定专用存储 NIC 的详细信息,请参阅管理网络连接

注意:

仅当新主机的管理接口位于与某个资源池相同的已标记 VLAN 上时,才能将该主机加入该资源池。

使用 CLI 将 Citrix Hypervisor 服务器 host1 和 host2 加入到资源池

  1. 在 Citrix Hypervisor 服务器 host2 上打开控制台。

  2. 运行以下命令,指示 Citrix Hypervisor 服务器 host2 加入位于 Citrix Hypervisor 服务器 host1 上的池中:

    xe pool-join master-address=host1 master-username=administrators_username master-password=password
    

    master-address 必须设置为 Citrix Hypervisor 服务器 host1 的完全限定域名。安装 Citrix Hypervisor 服务器 host1 时,password 必须为设置的管理员密码。

默认情况下,Citrix Hypervisor 服务器属于未命名池。要创建您的第一个资源池,请重命名现有的无名称的池。使用 tab-complete 查找 pool_uuid

xe pool-param-set name-label="New Pool" uuid=pool_uuid

创建异构资源池

Citrix Hypervisor 允许将完全不同的主机硬件加入资源池(称为异构资源池),从而简化了不断扩展部署的过程。异构资源池使用提供 CPU“屏蔽”或“调配”的 Intel (FlexMigration) 和 AMD (Extended Migration) CPU 中的技术来实现。通过 CPU 屏蔽和调配功能,可以将 CPU 配置为看起来提供与实际不同的样式、型号或功能。此功能允许您创建主机池,尽管这些池具有完全不同的 CPU,但仍能安全地支持实时迁移。

注意:

加入异构池的 Citrix Hypervisor 服务器的 CPU 必须属于同一个供应商(即 AMD、Intel)作为池中的主机上的 CPU。但是,特定类型(系列、型号和步进编号)不需要。

Citrix Hypervisor 简化了异构池支持功能。现在,不论主机的底层 CPU 属于何种类型,都可以将其加入到现有资源池(只要 CPU 来自同一个供应商系列)。在以下情况下,每次都会对池功能集进行动态计算:

  • 新主机加入池

  • 池成员离开池

  • 池成员在重新启动之后重新连接

池功能集发生任何变化都不会影响当前在池中运行的 VM。正在运行的 VM 继续使用启动时所应用的功能集。此功能集在启动时确定,而且在历经迁移、挂起和恢复操作后一直保持不变。如果功能有所欠缺的主机加入池,导致池的功能水平下降,正在运行的 VM 可以迁移到池中除新添加的主机以外的任何主机。在池中或跨池将 VM 移动或迁移到另一台主机时,Citrix Hypervisor 会将 VM 的功能集与目标主机的功能集相比较。如果发现两者的功能集兼容,则允许迁移 VM。如此便可在池中和跨池自由移动 VM,而不论 VM 正在使用何种 CPU 功能。如果使用 Workload Balancing 为要迁移的 VM 选择最佳目标主机,则不建议将功能集不兼容的主机作为目标主机。

添加共享存储

有关支持的共享存储类型的完整列表,请参阅存储库格式。本部分内容介绍了如何在现有 NFS 服务器中创建共享存储(表示为存储库)。

使用 CLI 将 NFS 共享存储添加到资源池

  1. 在池中的任意 Citrix Hypervisor 服务器上打开控制台。

  2. 通过发出以下命令在 server:/path 上创建存储库:

    xe sr-create content-type=user type=nfs name-label="Example SR" shared=true \
        device-config:server=server \
        device-config:serverpath=path
    

    device-config:server 为 NFS 服务器的主机名,device-config:serverpath 为 NFS 服务器上的路径。由于 shared 设置为 true,因此,共享存储将自动连接到池中的每个 Citrix Hypervisor 服务器。以后加入的任何 Citrix Hypervisor 服务器也将连接到该存储。存储库的全局唯一标识符 (UUID) 将显示在屏幕上。

  3. 通过运行以下命令查找池的 UUID:

    xe pool-list
    
  4. 使用以下命令将共享存储设置为池范围内的默认值:

    xe pool-param-set uuid=pool_uuid default-SR=sr_uuid
    

    由于共享存储已设置为池范围内的默认共享存储,因此默认情况下,将来的所有 VM 都会在共享存储上创建自己的磁盘。有关创建其他类型的共享存储的信息,请参阅存储库格式

从资源池中移除 Citrix Hypervisor 服务器

注意:

在从池中移除任意 Citrix Hypervisor 服务器之前,请确保关闭该主机上正在运行的所有 VM。否则,您会看到一条警告消息,指示无法删除该主机。

从池中删除(弹出)主机时,计算机将重新引导、重新初始化,最终达到的状态等效于全新安装的状态。如果本地磁盘中存有重要数据,一定不要从池中弹出 Citrix Hypervisor 服务器。

使用 CLI 从资源池移除主机

  1. 在池中的任意主机上打开控制台。

  2. 运行以下命令,获取主机的 UUID:

    xe host-list
    
  3. 从池中删除所需的主机:

    xe pool-eject host-uuid=host_uuid
    

    Citrix Hypervisor 服务器将弹出并最终达到全新安装状态。

    警告:

    如果主机中包含存储在本地磁盘中的重要数据,请不要从资源池删除该主机。从池中弹出主机时,将擦除所有数据。如果要保留此数据,请先使用 XenCenter 或 xe vm-copy CLI 命令将 VM 复制到池中的共享存储。

从池中弹出包含本地存储的 VM 的 Citrix Hypervisor 服务器时,这些 VM 仍将在池数据库中显示。本地存储的 VM 还会被其他 Citrix Hypervisor 服务器看到。这些 VM 将不启动,除非将与其关联的虚拟磁盘更改为指向能被池中的其他 Citrix Hypervisor 服务器看到的共享存储或直接删除。因此,我们建议您在加入池时将任何本地存储移动到共享存储。移动到共享存储允许弹出单个 Citrix Hypervisor 服务器(或出现物理故障),不会导致数据丢失。

注意:

从在带标记的 VLAN 网络中具有管理接口的池中删除主机时,计算机将重新启动,并且其管理接口将在相同的网络中可用。

准备 Citrix Hypervisor 服务器的池以执行维护操作

在资源池中的主机上执行维护操作之前,必须将其禁用。禁用该主机可防止在其上启动任何 VM。然后,必须将其 VM 迁移到池中的另一个 Citrix Hypervisor 服务器。可以通过使用 XenCenter 将 Citrix Hypervisor 服务器置于维护模式来实现。有关详细信息,请参阅 XenCenter 帮助。

备份同步每 24 小时进行一次。将主服务器主机置于维护模式会导致脱机 VM 的过去 24 小时的 RRD 更新丢失。

警告:

我们强烈建议您先重新引导所有 Citrix Hypervisor 服务器,再安装更新,然后再验证配置。某些配置更改只有在重新启动 Citrix Hypervisor 后才会生效,因此,重新启动可以发现可能导致更新失败的配置问题。

使用 CLI 准备池中的主机以执行维护操作

  1. 运行以下命令:

    xe host-disable uuid=Citrix Hypervisor_host_uuid
    xe host-evacuate uuid=Citrix Hypervisor_host_uuid
    

    此命令将禁用 Citrix Hypervisor 服务器,然后将任何正在运行的 VM 迁移到池中的其他 Citrix Hypervisor 服务器。

  2. 执行所需的维护操作。

  3. 维护操作完成后启用 Citrix Hypervisor 服务器:

    xe host-enable
    
  4. 重新启动所有已停止的 VM 并恢复所有挂起的 VM。

导出资源池数据

使用导出资源数据选项可为您的池生成一份资源数据报告,并可将该报告导出为 .xls 或 .csv 文件。此报告提供有关池内各种资源(例如服务器、网络、存储、虚拟机、VDI 和 GPU)的详细信息。该功能允许管理员根据各种工作负载(例如 CPU、存储和网络)跟踪、计划和分配资源。

注意:

导出资源池数据适用于 Citrix Hypervisor Premium Edition 客户或通过其 Citrix Virtual Apps and Desktops 授权访问 Citrix Hypervisor 的客户。

报告中包含的资源和各种类型的资源数据列表:

服务器:

  • 名称
  • 池主服务器
  • UUID
  • 地址
  • CPU 使用率
  • 网络(平均/最大 KB/秒)
  • 已用内存
  • 存储
  • 运行时间
  • 说明

网络:

  • 名称
  • 链接状态
  • MAC
  • MTU
  • VLAN
  • 类型
  • 位置

VDI:

  • 名称
  • 类型
  • UUID
  • 大小
  • 存储
  • 说明

存储:

  • 名称
  • 类型
  • UUID
  • 大小
  • 位置
  • 说明

VM:

  • 名称
  • 电源状态
  • 运行平台
  • 地址
  • MAC
  • NIC
  • 操作系统
  • 存储
  • 已用内存
  • CPU 使用率
  • UUID
  • 运行时间
  • 模板
  • 说明

GPU:

  • 名称
  • 服务器
  • PCI 总线路径
  • UUID
  • 电源使用
  • 温度
  • 已用内存
  • 计算机利用率

注意:

仅当您的 Citrix Hypervisor 服务器连接了 GPU 时关于 GPU 的信息才可用。

导出资源数据

  1. 在 XenCenter 的“导航”窗格中,选择基础结构,然后选择相应的池。

  2. 选择菜单,然后选择导出资源数据

  3. 浏览到您希望保存报告的位置,然后单击保存

主机启动

远程启动主机

可以使用 Citrix Hypervisor 服务器启动功能,从 XenCenter 或使用 CLI 远程打开和关闭服务器。

要启用主机电源,主机必须具有以下电源控制解决方案之一:

  • 启用了“局域网唤醒”的网卡

  • Dell Remote Access Card (DRAC)。要将 Citrix Hypervisor 与 DRAC 一起使用,必须安装 Dell 增补包以获取 DRAC 支持。DRAC 支持需要在带有远程访问控制器的服务器上安装 RACADM 命令行实用程序,并启用 DRAC 及其接口。RACADM 通常包含在 DRAC 管理软件中。有关详细信息,请参阅 Dell 的 DRAC 文档。

  • Hewlett-Packard Integrated Lights-Out (iLO)。要将 Citrix Hypervisor 与 iLO 一起使用,必须在主机上启用 iLO,并将接口连接到网络。有关详细信息,请参阅 HP 的 iLO 文档。

  • 基于管理 API 且使您能够通过 Citrix Hypervisor 打开和关闭电源的自定义脚本。有关详细信息,请参阅下面部分中的配置主机开启功能的自定义脚本

使用主机开机功能时需要执行以下两项任务:

  1. 请确保池中的主机支持远程控制电源。例如,主机具有局域网唤醒功能、DRAC 或 iLO 卡,或者您创建了自定义脚本)。

  2. 使用 CLI 或 XenCenter 启用主机启动功能。

使用 CLI 管理主机启动功能

可以使用 CLI 或 XenCenter 管理主机启动功能。本部分内容介绍与使用 CLI 管理主机启动功能有关的信息。

主机启动功能在主机级别(即在每台 Citrix Hypervisor 上)启用。

启用主机启动功能后,可以使用 CLI 或 XenCenter 打开主机。

使用 CLI 启用主机启动功能

运行命令:

xe host-set-power-on-mode host=<host uuid> \
    power-on-mode=("" , "wake-on-lan",  "iLO", "DRAC","custom") \
    power-on-config=key:value

对于 iLO 和 DRAC,键为 power_on_ip{#prmnmN7008A}、power_on_user{#prmnmN70090}、power_on_password_secret{#prmnmN70096}。如果要使用加密功能,请使用 power_on_password_secret{#prmnmN7009C} 指定密码。有关详细信息,请参阅机密

使用 CLI 远程打开主机

运行命令:

xe host-power-on host=<host uuid>

配置主机开启功能的自定义脚本

如果服务器的远程电源解决方案使用默认情况下不受支持的协议(例如响铃唤醒或 Intel 主动管理技术),可以创建自定义 Linux Python 脚本,以远程打开 Citrix Hypervisor 计算机。但是,您还可以为 iLO、DRAC 和局域网唤醒远程电源解决方案创建自定义脚本。

本部分内容介绍了与以下内容有关的信息:使用与 Citrix Hypervisor API 调用 host.power_on 相关联的键/值对配置主机启动的自定义脚本。

创建自定义脚本时,在每次要在 Citrix Hypervisor 上远程控制电源时从命令行运行该脚本。或者,可以在 XenCenter 中指定该脚本,并使用 XenCenter UI 功能与之交互。

文档“Citrix Hypervisor 管理 API”中介绍了 Citrix Hypervisor API,该文档可从开发人员文档 Web 站点获取。

警告:

请勿更改 /etc/xapi.d/plugins/ 目录中提供的默认脚本。可以在此目录中包括新脚本,但安装后不得更改该目录中包含的脚本。

键/值对 {#host.power_on_mode}

要使用主机开启功能,请配置host.power_on_modehost.power_on_config键。有关值的信息,请参阅以下部分。

还有一个 API 调用使您能够同时设置以下字段:

void host.set_host_power_on_mode(string mode, Dictionary<string,string> config)
host.power_on_mode
  • 定义: 包含用于指定远程电源解决方案类型(例如 Dell DRAC)的键/值对。

  • 可能的值

    • 空字符串,表示电源控制处于禁用状态

    • iLO:允许您指定 HP iLO。

    • DRAC:允许您指定 Dell DRAC。要使用 DRAC,您必须已安装 Dell 增补包。

    • wake-on-lan:允许您指定“局域网唤醒”。

    • 任何其他名称(用于指定自定义启动脚本)。此选项用于指定电源管理的自定义脚本。

  • 类型:字符串

host.power_on_config
  • 定义: 包含用于模式配置的键/值对。为 iLO 和 DRAC 提供其他信息。

  • 可能的值:

    • 如果您配置“iLO”或“DRAC”作为远程电源解决方案的类型,还必须指定下面的某个键:

      • power_on_ip:指定用来与电源控制卡通信的 IP 地址。或者,可以键入配置 iLO 或 DRAC 的网络接口的域名。

      • power_on_user:与管理处理器相关联的 iLO 或 DRAC 用户名,您可能已更改其出厂时的默认设置。

      • power_on_password_secret:指定使用加密功能来保护密码的安全。

    • 要使用密钥功能来存储密码,请指定键“power_on_password_secret”。有关详细信息,请参阅机密

  • 类型:Map (string,string)

示例脚本

此示例脚本会导入 Citrix Hypervisor API,将脚本本身定义为自定义脚本,然后将特定的参数传递给您要远程控制的主机。必须在所有自定义脚本中定义参数 session{#prmnmN8012E}、remote_host{#prmnmN80134} 和 power_on_config{#prmnmN8013A}。

结果在脚本不成功时显示。

import XenAPI
def custom(session,remote_host,
power_on_config):
result="Power On Not Successful"
for key in power_on_config.keys():
result=result+''
key=''+key+''
value=''+power_on_config[key]
return result

注意:

创建脚本后,使用 .py 扩展名将其保存在 /etc/xapi.d/plugins 中。

与 Citrix Hypervisor 服务器和资源池通信

Citrix Hypervisor 使用 TLS 协议加密管理 API 流量。Citrix Hypervisor 与管理 API 客户端(或设备)之间的任何通信现在都将默认使用 TLS 1.2 协议。但是,如果管理 API 客户端或设备不使用 TLS 1.2 进行通信,则可能会使用早期的协议进行通信。

Citrix Hypervisor 使用以下密码套件:

-TLS_RSA_WITH_AES_128_CBC_SHA256

-TLS_RSA_WITH_AES_256_CBC_SHA

-TLS_RSA_WITH_AES_128_CBC_SHA

-TLS_RSA_WITH_RC4_128_SHA

-TLS_RSA_WITH_RC4_128_MD5

-TLS_RSA_WITH_3DES_EDE_CBC_SHA

Citrix Hypervisor 还允许您将主机或资源池配置为允许通过仅限 TLS 1.2 进行通信。此选项允许 Citrix Hypervisor 与管理 API 客户端(或设备)之间的通信使用 TLS 1.2 协议。“仅限 TLS 1.2”选项使用密码套件 TLS_RSA_WITH_AES_128_CBC_SHA256

警告:

确保与 Citrix Hypervisor 池通信的所有管理 API 客户端和设备均与 TLS 1.2 兼容后选择仅限 TLS 1.2 选项。

对 Citrix Hypervisor 池启用 IGMP 监听

Citrix Hypervisor 向所有来宾 VM 发送多播流量,要求其处理未请求的数据包,导致主机设备上出现不必要的负载。启用 IGMP 监听将阻止本地网络中的主机接收未明确加入的多播组的流量,增强了多播的性能。IGMP 监听功能对带宽密集型 IP 多播应用程序(例如 IPTV)特别有用。

可以使用 XenCenter 或命令行接口对池启用 IGMP 监听。要使用 XenCenter 启用 IGMP 监听,请导航到池属性并选择网络选项。有关详细信息,请参阅 XenCenter 帮助。有关 xe 命令,请参阅 pool-igmp-snooping

注意:

  • IGMP 监听仅在网络后端使用 Open vSwitch 时可用。

  • 在池中启用了此功能时,可能还有必要在其中一个物理交换机上启用 IGMP 查询器。否则,子网中的多播将回退到广播,并且可能会降低 Citrix Hypervisor 的性能。

  • 在运行 IGMP v3 的池中启用了此功能时,VM 迁移或网络绑定故障转移将导致 IGMP 版本切换到 v2。

  • 要在 GRE 网络中启用此功能,用户必须在 GRE 网络中的设置一个 IGMP 查询器。或者,可以将 IGMP 查询消息从物理网络转发到 GRE 网络。否则,GRE 网络中的多播流量会被阻止。