XenServer

管理主机

本文介绍了一些可用于管理单个 XenServer® 主机的操作。

要管理与资源池相关的操作,请参阅管理池

配置 SSH 访问

默认情况下,对 XenServer 主机的 SSH 访问是启用的。如果要禁用对 XenServer 主机的 SSH 访问,请运行以下命令:

xe host-disable-ssh host=<host_uuid_or_name_label>
<!--NeedCopy-->

此命令禁用 SSH。主机将拒绝新的 SSH 连接,但不会断开任何现有会话。

要启用对 XenServer 主机的 SSH 访问,请运行以下命令:

xe host-enable-ssh host=<host_uuid_or_name_label>
<!--NeedCopy-->

设置当前主机 SSH 临时启用超时(秒):

xe host-param-set uuid=<host-uuid> ssh-enabled-timeout=<seconds>
<!--NeedCopy-->

超时参数决定 SSH 服务持续时间。当设置为 0 时,SSH 无限期保持活动状态。当设置为正整数(秒)时,SSH 会在指定时间段后自动禁用。配置更改会立即对后续的活动 SSH 会话生效,并且每次用户从 CLI/API 启用 SSH 时都会生效。

设置当前主机 SSH 控制台空闲超时(秒)

xe host-param-set uuid=<host-uuid> console-idle-timeout=<seconds>
<!--NeedCopy-->

使用非负整数值(以秒为单位)配置 VNC 和 SSH 控制台连接的空闲会话超时,其中 0 禁用超时(会话永不失效),正值(例如 3600)在指定持续时间后自动终止空闲会话,配置后设置将应用于新创建的控制台会话。

设置当前主机 SSH 自动模式

xe host-param-set uuid=<host-uuid>  ssh-auto-mode=true
<!--NeedCopy-->

注意:

默认情况下,新安装的 SSH 服务处于禁用状态,以减少攻击面。

根据 XAPI 服务运行状况配置自动 SSH 管理。启用自动模式后,SSH 激活遵循 XAPI 状态:当 XAPI 运行状况良好时,SSH 禁用;当 XAPI 运行状况不佳时,SSH 启用。

自动模式已启用 + ssh_enabled_timeout = 0:通过 host.enable_ssh 手动激活 SSH 会永久禁用自动模式。

自动模式已启用 + ssh_enabled_timeout > 0:手动激活 SSH 会暂时禁用自动模式;当超时到期时,自动模式将恢复到原始设置。(当系统在活动的 SSH 超时期间重启时,原始自动模式设置会丢失,并在超时/恢复时重置为启用。)

对于这些命令中的任一个的 host 参数值,您可以使用主机选择器。有关详细信息,请参阅主机选择器

您可以同时管理 XenServer 池中所有主机的 SSH 访问。有关详细信息,请参阅禁用池的 SSH 访问

带有应答文件的 SSH 自动模式

添加新的应答文件配置 <ssh-mode>on|off|auto</ssh-mode> 以控制默认的 SSH 和自动模式设置。

  • 当设置为“auto”时,自动模式已启用,并且一旦 XAPI 启动,将自动停止 SSH 服务。
  • 当设置为“on”或“off”时,自动模式默认禁用,并且 SSH 服务会相应地启用或禁用。

新 SSH 管理控制的定义

在主机级别设置新的 XAPI API host.set_ssh_auto_mode 以配置 SSH

set_ssh_auto_mode:配置以启用或禁用 SSH 自动模式。当自动模式启用时,SSH 状态取决于 XAPI 状态:当 XAPI 正常时,SSH 被禁用;当 XAPI 不正常时,SSH 被启用。

当用户将自动模式配置为启用且当前的 ssh_enabled_timeout 为 0 时,使用 host.enable_ssh 启用 SSH 将永久禁用自动模式。

当用户使用 host.set_auto_mode 将自动模式配置为启用或禁用时,这称为“原始自动模式设置”。如果当前的 ssh_enabled_timeout 设置为正数(例如,1800 秒),使用 host.enable_ssh 启用 SSH 将暂时禁用自动模式。当超时期限到期时,SSH 将自动禁用,并且自动模式将恢复到其原始设置。

当用户将 ssh_enabled_timeout 设置为正数(例如,3600 秒)并在超时期限到期之前重启主机(或重启 XAPI)时,一旦超时期限到期,SSH 将自动禁用,并且自动模式将恢复为 true,因为重启将导致原始自动模式设置丢失。

当您将 ssh_enabled_timeout 配置为正数(例如,180 秒)并且 XAPI 随后失败时,如果 XAPI 在超时期限到期时仍处于失败状态,SSH 将保持启用直到 XAPI 重启。在 XAPI 重启后,SSH 将自动禁用,并且自动模式将恢复为 true,因为系统重启会导致原始自动模式设置丢失。

在主机上安装 TLS 证书

XenServer 主机默认安装了 TLS 证书。但是,要使用 HTTPS 保护 XenServer 与 Citrix Virtual Apps and Desktops™ 之间的通信,请安装由受信任的证书颁发机构提供的证书。

本节介绍如何使用 xe CLI 安装证书。有关使用 XenCenter 处理证书的信息,请参阅 XenCenter 文档

确保您的 TLS 证书及其密钥满足以下要求:

  • 证书和密钥对是 RSA 密钥。
  • 密钥与证书匹配。
  • 密钥与证书分别存储在不同的文件中。
  • 证书与任何中间证书分别存储在不同的文件中。
  • 密钥文件必须是以下类型之一:.pem.key
  • 任何证书文件必须是以下类型之一:.pem.cer.crt
  • 密钥长度大于或等于 2048 位且小于或等于 4096 位。
  • 密钥是未加密的 PKCS #8 密钥,并且没有密码。
  • 密钥和证书采用 base-64 编码的“PEM”格式。
  • 证书有效且未过期。
  • 签名算法为 SHA-256 或 SHA-512。

xe CLI 会在您选择的证书和密钥不符合这些要求时发出警告。

我在哪里可以获取 TLS 证书?

1. 生成证书签名请求

首先,生成私钥和证书签名请求。在 XenServer 主机上,完成以下步骤:

  1. 要创建私钥文件,请运行以下命令:

    openssl genrsa -des3 -out privatekey.pem 2048
    <!--NeedCopy-->
    

    系统会提示您输入密码短语。此密码短语将在后续步骤中移除。

  2. 从密钥中移除密码短语:

    openssl rsa -in privatekey.pem -out privatekey.nop.pem
    <!--NeedCopy-->
    
  3. 使用私钥创建证书签名请求:

    openssl req -new -key privatekey.nop.pem -out csr
    <!--NeedCopy-->
    
  4. 按照提示提供生成证书签名请求所需的信息。

    • 国家名称。输入您所在国家/地区的 TLS 证书国家/地区代码。例如,加拿大的 CA 或牙买加的 JM。您可以在网上找到 TLS 证书国家/地区代码列表。
    • 州或省名称(全称)。输入池所在的州或省。例如,马萨诸塞州或艾伯塔省。
    • 地区名称。池所在的城市名称。
    • 组织名称。您的公司或组织名称。
    • 组织单位名称。输入部门名称。此字段是可选的。
    • 通用名称。输入您的 XenServer 主机的 FQDN。我们建议指定一个 FQDN 或一个不会过期的 IP 地址。
    • 电子邮件地址。生成证书时,此电子邮件地址将包含在证书中。

    证书签名请求保存在当前目录中,并命名为 csr

  5. 通过运行以下命令在控制台窗口中显示证书签名请求:

    cat csr
    <!--NeedCopy-->
    
  6. 复制整个证书签名请求,并使用此信息向证书颁发机构请求证书。

    证书签名请求示例:

    -----BEGIN CERTIFICATE REQUEST-----
    MIIDBDCCAewCAQAwgYsxCzAJBgNVBAYTAlVLMRcwFQYDVQQIDA5DYW1icmlkZ2Vz
    aGlyZTESMBAGA1UEBwwJQ2FtYnJpZGdlMRIwEAYDVQQKDAlYZW5TZXJ2ZXIxFTAT
    ...
    SdYCkFdo+85z8hBULFzSH6jgSP0UGQU0PcfIy7KPKyI4jnFQqeCDvLdWyhtAx9gq
    Fu40qMSm1dNCFfnACRwYQkQgqCt/RHeUtl8srxyZC+odbunnV+ZyQdmLwLuQySUk
    ZL8naumG3yU=
    -----END CERTIFICATE REQUEST-----
    <!--NeedCopy-->
    

2. 将证书签名请求发送到证书颁发机构

生成证书签名请求后,您可以将请求提交给您组织首选的证书颁发机构。

证书颁发机构 (CA) 是一种提供数字证书的服务,您可能在组织内部拥有可用的 CA,或者,您可以使用受信任的第三方。某些证书颁发机构要求证书托管在可从互联网访问的系统上。我们建议不要使用具有此要求的证书颁发机构。

证书颁发机构响应您的签名请求并提供以下文件:

  • 签名的证书
  • 如果适用,中间证书

现在,您可以将所有这些文件安装到您的 XenServer 主机上。

3. 在 XenServer 主机上安装签名证书

证书颁发机构响应证书签名请求后,请完成以下步骤以在 XenServer 主机上安装证书:

  1. 从证书颁发机构获取签名证书,如果证书颁发机构有中间证书,也一并获取。
  2. 将密钥和证书复制到 XenServer 主机。
  3. 在主机上运行以下命令:

    xe host-server-certificate-install certificate=<path_to_certificate_file> private-key=<path_to_private_key> certificate-chain=<path_to_chain_file>
    

    certificate-chain 参数是可选的。

为了增强安全性,您可以在安装证书后删除私钥文件。

管理管理员密码

首次安装 XenServer 主机时,您会设置一个管理员或 root 密码。您可以使用此密码将 XenCenter 连接到您的主机,或者(使用用户名 root)登录到系统配置控制台 xsconsole

如果将主机加入池,则主机的管理员密码会自动更改为与池协调器的管理员密码匹配。

注意:

XenServer 管理员密码只能包含可打印的 ASCII 字符。

更改密码

您可以使用 XenCenter®、xe CLI 或 xsconsole 更改管理员密码。

XenCenter

要使用 XenCenter 更改池或独立主机的管理员密码,请完成以下步骤:

  1. 资源窗格中,选择池或池中的任何主机。
  2. 菜单或服务器菜单上,选择更改服务器密码

要更改独立主机的 root 密码,请在资源窗格中选择该主机,然后从服务器菜单中单击密码,再单击更改

如果 XenCenter 配置为在会话之间保存您的主机登录凭据,则会记住新密码。有关详细信息,请参阅存储主机连接状态

更改管理员密码后,轮换池密钥。有关详细信息,请参阅轮换池密钥

xe CLI

要使用 xe CLI 更改管理员密码,请在池中的主机上运行以下命令:

  xe user-password-change new=<new_password>
<!--NeedCopy-->

注意:

确保在命令前加上一个空格,以避免在命令历史记录中存储明文密码。

更改管理员密码后,轮换池密钥。有关详细信息,请参阅轮换池密钥

XenServer 控制台

要使用 xsconsole 更改池或独立主机的管理员密码,请完成以下步骤:

  1. 在池协调器上,进入控制台。
  2. root 身份登录。
  3. 键入 xsconsole。按 Enter。将显示 xsconsole
  4. xsconsole 中,使用箭头键导航到 Authentication 选项。按 Enter
  5. 导航到 Change Password。按 Enter
  6. 使用管理员密码进行身份验证。
  7. Change Password 对话框中:
    1. 输入当前密码。
    2. 输入新密码。
    3. 再次输入新密码以确认。

    将显示 Password Change Successful 屏幕。按 Enter 关闭。

如果主机是池协调器,则此更新的密码现在会传播到池中的其他主机。

更改管理员密码后,轮换池密钥。有关详细信息,请参阅轮换池密钥

重置丢失的 root 密码

如果您丢失了 XenServer 主机的管理员 (root) 密码,您可以通过直接访问主机来重置密码。

  1. 重启 XenServer 主机。

  2. 当 GRUB 菜单显示时,按 e 编辑启动菜单条目。

  3. init=/sysroot/bin/sh 添加到以 module2 开头的行。

  4. Ctrl-X 启动到 root shell。

  5. 在命令行 shell 中,运行以下命令:

    chroot /sysroot
    passwd
    
    (type the new password twice)
    
    sync
    /sbin/reboot -f
    <!--NeedCopy-->
    

如果主机是池协调器,则此更新后的密码现在会传播到池中的其他主机。

更改管理员密码后,轮换池密钥。有关更多信息,请参阅轮换池密钥

更改服务器上的 NTP 配置

您可以从 xsconsole 更新服务器的 NTP 配置。

  1. 在主机控制台中,键入 xsconsole
  2. 在 xsconsole 中,转到 网络和管理接口 > 网络时间 (NTP)
  3. 输入您的密码以继续。
  4. Configure Network Time 菜单中,选择您要配置的选项。

您也可以使用 XenAPI 配置 NTP。

这允许您自动化 NTP 配置,而无需通过 SSH 直接访问 dom0。

使用 Python SDK 的示例: session.xenapi.host.set_ntp_mode(host_ref, 'Factory')

NTP 模式:

  • 出厂设置 - 使用内置的 XenServer NTP 池服务器
  • DHCP - 使用 DHCP 分配的 NTP 服务器
  • 自定义 - 使用用户配置的 NTP 服务器
  • 禁用 - 禁用 NTP(不推荐)

要检查 NTP 同步状态:

  • session.xenapi.host.get_ntp_synchronized(host_ref)
  • session.xenapi.host.get_ntp_servers_status(host_ref)

注意:

如果 NTP 直接在 dom0 上配置而不是通过 XenAPI 配置,则值可能与 XenAPI 字段不一致。

要将值与 XAPI 重新同步,请重新启动 toolstack: xe-toolstack-restart

更改服务器上的时区

您可以使用 XenAPI 为主机配置时区。

使用 Python SDK 的示例: session.xenapi.host.set_timezone(host_ref, 'UTC')

时区值必须使用 IANA 时区名称,例如:

  • UTC
  • Europe/Paris
  • Asia/Kolkata

要读取当前时区:

session.xenapi.host.get_timezone(host_ref)

要列出支持的时区:

session.xenapi.host.list_timezones(host_ref)

注意:

如果时区直接在 dom0 上配置而不是通过 XenAPI 配置,则值可能与 XenAPI 字段不一致。

要将值与 XAPI 重新同步,请重新启动 toolstack: xe-toolstack-restart

更改服务器上的 max-cstate

max-cstate 设置控制允许的最深 CPU 空闲电源状态。

支持的值:

  • ”” - 无限制 (默认)
  • 0 - 限制为 C0
  • 1 - 限制为 C1

使用 Python SDK 的示例:

session.xenapi.host.set_max_cstate(host_ref, '1')

要读取当前值:

session.xenapi.host.get_max_cstate(host_ref)

注意:

如果 max-cstate 直接在 dom0 上配置而不是通过 XenAPI 配置,则值可能与 XenAPI 字段不一致。

要将值与 XAPI 重新同步,请重新启动工具栈: xe-toolstack-restart

准备 XenServer 主机池以进行维护

在对属于资源池的主机执行维护操作之前,必须禁用它。禁用主机可防止在其上启动任何虚拟机。然后,您必须将其虚拟机迁移到池中的另一个 XenServer 主机。您可以通过使用 XenCenter 将 XenServer 主机置于维护模式来完成此操作。有关详细信息,请参阅 XenCenter 文档中的在维护模式下运行

备份同步每 24 小时进行一次。将池协调器置于维护模式会导致离线虚拟机的最后 24 小时 RRD 更新丢失。

警告:

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

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

  1. 运行以下命令:

    xe host-disable uuid=XenServer_host_uuid
    xe host-evacuate uuid=XenServer_host_uuid
    <!--NeedCopy-->
    

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

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

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

    xe host-enable
    <!--NeedCopy-->
    
  4. 重新启动所有已停止的 VM 并恢复所有已暂停的 VM。

关闭或重新启动 XenServer 主机

我们建议始终使用 xe CLI 或 XenCenter 关闭或重新启动 XenServer 主机。在正常运行期间,请勿使用其他方法(例如基于硬件的重置或操作系统命令)关闭或重新启动主机。这样做可能会导致主机和池出现意外行为。

要使用 xe CLI 关闭或重新启动主机,请使用以下命令:

  1. 阻止任何新 VM 在指定主机上启动或迁移到指定主机:

    xe host-disable host=<host name>
    <!--NeedCopy-->
    
  2. 如果需要,将所有正在运行的 VM 从主机迁移出去:

    xe host-evacuate uuid=<host uuid>
    <!--NeedCopy-->
    
  3. 使用以下 xe CLI 命令之一关闭或重新启动主机。

    • 要干净地关闭主机:

      ``` xe host-shutdown host=

    • 要干净地重新启动主机:

       xe host-reboot host=<host name>
      

有关如何使用 XenCenter 关闭服务器的信息,请参阅 XenCenter 文档

配置主机开机

远程启动主机

您可以使用 XenServer 主机开机功能,无论是通过 XenCenter 还是使用 CLI,远程开启和关闭主机。

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

  • 支持 Wake on LAN 的网卡

  • 智能平台管理接口 (IPMI)

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

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

  1. 确保池中的主机支持远程控制电源。例如,它们具有 Wake on LAN 功能或支持 IPMI,或者您已创建自定义脚本。

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

使用 CLI 管理主机开机

您可以使用 CLI 或 XenCenter 管理主机开机功能。本节提供有关使用 CLI 管理此功能的信息。

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

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

要使用 CLI 启用主机开机功能

运行以下命令:

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

使用 CLI 远程开启主机

运行以下命令:

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

```