18.5. 重新引导 Compute 节点

为确保 Red Hat OpenStack Platform 环境中实例的最小停机时间,迁移实例工作流 概述了您要从您要重新引导的 Compute 节点迁移实例所需的步骤。

注意

如果您没有将实例从源 Compute 节点迁移到另一个 Compute 节点,则实例可能会在源 Compute 节点上重启,这可能会导致升级失败。这与 Podman 和 libvirt 服务更改的已知问题相关:

迁移实例工作流

  1. 决定是否在重新引导节点前将实例迁移到另一个 Compute 节点。
  2. 选择并禁用您要重新引导的 Compute 节点,使其不调配新实例。
  3. 将实例迁移到另一个 Compute 节点中。
  4. 重新引导空的 Compute 节点。
  5. 启用空的 Compute 节点。

先决条件

  • 重启 Compute 节点之前,必须决定是否在节点重启过程中将实例迁移到另一个 Compute 节点。

    查看在 Compute 节点之间迁移虚拟机实例时可能会遇到的迁移约束列表。如需更多信息,请参阅为实例创建配置 Compute Service 中的迁移限制

  • 如果您无法迁移实例,则可设置以下核心模板参数以在 Compute 节点重启后控制实例的状态:

    NovaResumeGuestsStateOnHostBoot
    确定重新引导后是否将实例返回 Compute 节点上的相同状态。设为 False 时,实例保持关闭,必须手动启动。默认值为 False
    NovaResumeGuestsShutdownTimeout

    重启前等待实例被关闭的时间(以秒为单位)。建议不要将此值设置为 0。默认值为 300

    有关 overcloud 参数及其用法的更多信息,请参阅 Overcloud 参数

    流程

    1. stack 用户的身份登录 undercloud。
    2. 列出所有的 Compute 节点及其 UUID:

      $ source ~/stackrc
      (undercloud) $ openstack server list --name compute

      识别您要重新引导的 Compute 节点的 UUID。

    3. 从 undercloud 中,选择一个 Compute 节点并禁用它:

      $ source ~/overcloudrc
      (overcloud) $ openstack compute service list
      (overcloud) $ openstack compute service set <hostname> nova-compute --disable
    4. 列出 Compute 节点上的所有实例:

      (overcloud) $ openstack server list --host <hostname> --all-projects
    5. 可选:如果您决定将实例迁移到另一个 Compute 节点,请完成以下步骤:

      1. 如果您决定将实例迁移至另一个 Compute 节点,则使用以下命令之一:

        • 要将实例迁移到其他主机,请运行以下命令:

          (overcloud) $ openstack server migrate <instance_id> --live <target_host> --wait
        • nova-scheduler 自动选择目标主机:

          (overcloud) $ nova live-migration <instance_id>
        • 一次性实时迁移所有实例:

          $ nova host-evacuate-live <hostname>
          注意

          nova 命令可能会引发一些弃用警告,这些警告信息可以被安全忽略。

      2. 稍等片刻,直至迁移完成。
      3. 确认迁移成功完成:

        (overcloud) $ openstack server list --host <hostname> --all-projects
      4. 继续迁移实例,直到 Compute 节点上不剩任何实例。
    6. 登录到 Compute 节点并重新引导节点:

      [heat-admin@overcloud-compute-0 ~]$ sudo reboot
    7. 稍等片刻,直到节点启动。
    8. 重新启用 Compute 节点:

      $ source ~/overcloudrc
      (overcloud) $ openstack compute service set <hostname>  nova-compute --enable
    9. 确认是否已启用 Compute 节点:

      (overcloud) $ openstack compute service list