主机和资源池

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

XenServer 主机和资源池概述

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

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

注意:

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

创建资源池的要求

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

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

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

向池中加入服务器时,软件将实施附加限制,特别是检查服务器:

  • 不是现有资源池的成员

  • 未配置任何共享存储

  • 要加入的 XenServer 主机中不存在任何运行中的 VM 或挂起的 VM

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

检查要加入池的服务器的时钟:

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

  • 未绑定其管理接口(在主机成功加入池时可以配置管理接口)

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

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

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

注意:

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

池必须包含可选择的 XenServer 主机在其上运行 VM 的共享存储库,以及要在 XenServer 主机之间动态移动 VM 的共享存储库。如有可能,请在共享存储可用后创建一个池。Citrix 建议您在添加共享存储后将磁盘位于本地存储中的现有 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 将 XenServer 主机 host1 和 host2 加入到资源池

  1. 在 XenServer 主机 *host2 *中打开控制台。

  2. 运行以下命令,指示 XenServer 主机 host2 *加入位于 XenServer 主机 host1* 上的池中:

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

master-address 必须设置为 XenServer 主机 host1 的完全限定域名。安装 XenServer 主机 host1 时,password 必须为设置的管理员密码。

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

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

创建异构资源池

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

注意:

注意:

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

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

  • 新主机加入池

  • 池成员离开池

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

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

添加共享存储

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

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

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

  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,因此,共享存储将自动连接到池中的每个 XenServer 主机。以后加入的任何 XenServer 主机也将连接到该存储。存储库的全局唯一标识符 (UUID) 将显示在屏幕上。

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

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

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

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

从资源池移除 XenServer 主机

注意:

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

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

使用 CLI 从资源池移除主机

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

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

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

    xe pool-eject host-uuid=host_uuid
    

    XenServer 主机将弹出并最终达到全新安装状态。

    警告:

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

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

注意:

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

准备 XenServer 主机的池以执行维护操作

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

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

警告:

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

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

  1. 运行以下命令:

    xe host-disable uuid=XenServer_host_uuid
    xe host-evacuate uuid=XenServer_host_uuid
    

    此命令将禁用 XenServer 主机,然后将任何正在运行的 VM 迁移到池中的其他 XenServer 主机。

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

  3. 维护操作完成后启用 XenServer 主机:

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

导出资源池数据

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

注意:

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

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

服务器:

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

网络:

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

VDI:

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

存储:

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

VM:

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

GPU:

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

注意:

仅当您的 XenServer 主机连接了 GPU 时关于 GPU 的信息才可用。

导出资源数据

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

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

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

主机启动

远程启动主机

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

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

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

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

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

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

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

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

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

使用 CLI 管理主机启动功能

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

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

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

使用 CLI 启用主机启动功能

运行以下命令:

xe host-set-power-on-mode 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=<主机 UUID>

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

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

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

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

文档“XenServer 管理 API”中介绍了 XenServer API,该文档可从 Citrix 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)

示例脚本

此示例脚本会导入 XenServer 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 中。

与 XenServer 主机和资源池通信

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

XenServer 使用以下密码套件:

-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

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

警告:

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