执行 Red Hat OpenStack Platform 的次要更新

Red Hat OpenStack Platform 17.1

将最新的程序错误修复和安全改进应用到 Red Hat OpenStack Platform

OpenStack Documentation Team

摘要

您可以对 Red Hat OpenStack Platform (RHOSP)环境执行次要更新,使其使用最新的软件包和容器进行更新。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。

在 JIRA 中提供文档反馈

使用 Create Issue 表单对文档提供反馈。JIRA 问题将在 Red Hat OpenStack Platform Jira 项目中创建,您可以在其中跟踪您的反馈进度。

  1. 确保您已登录到 JIRA。如果您没有 JIRA 帐户,请创建一个帐户来提交反馈。
  2. 点击以下链接打开 Create Issue 页面: Create Issue
  3. 完成 SummaryDescription 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
  4. Create

第 1 章 准备次要更新

使用最新的软件包和容器保持您的 Red Hat OpenStack Platform (RHOSP) 17.1 环境更新。

对以下版本使用升级路径:

旧的 RHOSP 版本新的 RHOSP 版本

Red Hat OpenStack Platform 17.0.z

Red Hat OpenStack Platform 17.1 latest

Red Hat OpenStack Platform 17.1.z

Red Hat OpenStack Platform 17.1 latest

次要更新工作流

RHOSP 环境的次要更新涉及更新 undercloud 和 overcloud 主机上的 RPM 软件包和容器,以及服务配置(如果需要)。data plane 和 control plane 在次版本更新过程中被完全支持。您必须完成以下步骤来更新 RHOSP 环境:

更新步骤描述

Undercloud 更新

director 软件包已更新,容器会被替换,undercloud 被重启。

可选 ovn-controller 更新

所有 ovn-controller 容器在所有 Compute 和 Controller 主机上并行更新。

hal-image-update 外部

更新 Pacemaker 控制的服务的容器镜像名称。没有服务中断。此步骤只适用于将系统从 17.0.z 更新至最新的 17.1 版本的客户。

Overcloud 更新包含 Pacemaker 服务的 Controller 节点和可组合节点

在 Overcloud 更新过程中,每个主机都会停止 Pacemaker 服务。虽然 Pacemaker 服务已停止,但主机上的 RPM、容器配置数据和容器被更新。当 Pacemaker 服务重启时,主机会再次添加。

Compute 节点的 overcloud 更新

多个节点并行更新。并行运行节点的默认值是 25。

Ceph 节点的 overcloud 更新

Ceph 节点一次更新一个节点。

Ceph 集群更新

Ceph 服务通过使用 cephadm 更新。每个守护进程都会进行更新,从 CephMgrCephMonCephOSD 以及其它守护进程开始。

注意

如果您有多堆栈基础架构,请完全更新每个 overcloud 堆栈,一次逐一逐一更新。如果您有分布式计算节点(DCN)基础架构,请在中央位置完全更新 overcloud,然后在每个边缘站点上完全更新 overcloud,一次逐一更新 overcloud。

另外,管理员可以在次版本更新过程中执行以下操作:

  • 迁移虚拟机
  • 创建虚拟机网络
  • 运行额外的云操作

在次版本更新过程中不支持以下操作:

  • 替换 Controller 节点
  • 缩减或扩展任何角色

更新 RHOSP 环境前的注意事项

要帮助您在更新过程中为您提供指导,请考虑以下信息:

可能会阻止更新的已知问题

当前没有已知问题。

流程

要为次版本更新准备 RHOSP 环境,请完成以下步骤:

1.1. 长生命版本的升级路径

在开始更新前,请熟悉可能的更新和升级路径。

注意

您可以在 /etc/rhosp-release/etc/redhat-release 文件中查看当前的 RHOSP 和 RHEL 版本。

表 1.1. 更新版本路径

当前版本目标版本

RHOSP 17.0.x on RHEL 9.0

RHOSP 17.0 latest on RHEL 9.0 latest

RHOSP 17.1.x on RHEL 9.2

RHOSP 17.1 latest on RHEL 9.2 latest

表 1.2. 升级版本路径

当前版本目标版本

RHEL 7.7 上的 RHOSP 10

RHOSP 13 最新的 RHEL 7.9

RHEL 7.9 上的 RHOSP 13

RHOSP 16.1 latest on RHEL 8.2 latest

RHEL 7.9 上的 RHOSP 13

RHOSP 16.2 latest on RHEL 8.4 latest

RHEL 8.4 上的 RHOSP 16

RHOSP 17.1 latest on RHEL 9.0

如需更多信息,请参阅升级 框架(16.2 到 17.1)。

1.2. 将环境锁定到 Red Hat Enterprise Linux 发行版本

Red Hat OpenStack Platform (RHOSP) 17.1 支持 Red Hat Enterprise Linux (RHEL) 9.2。在执行更新前,将 undercloud 和 overcloud 存储库锁定到 RHEL 9.2 版本,以避免将操作系统升级到较新的次版本。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 编辑 overcloud 订阅管理环境文件,这是包含 RhsmVars 参数的文件。此文件的默认名称为 rhsm.yml
  4. 检查您的订阅管理配置是否包含 rhsm_release 参数。如果 rhsm_release 参数不存在,请添加它并将其设置为 9.2 :

    parameter_defaults:
      RhsmVars:
        …​
        rhsm_username: "myusername"
        rhsm_password: "p@55w0rd!"
        rhsm_org_id: "1234567"
        rhsm_pool_ids: "1a85f9223e3d5e43013e3d6e8ff506fd"
        rhsm_method: "portal"
        rhsm_release: "9.2"
  5. 保存 overcloud 订阅管理环境文件。
  6. 创建一个 playbook,其中包含将操作系统版本锁定到所有节点上的 RHEL 9.2 的任务:

    $ cat > ~/set_release.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: set release to 9.2
          command: subscription-manager release --set=9.2
          become: true
    EOF
  7. 运行 set_release.yaml playbook:

    $ ansible-playbook -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml -f 25 ~/set_release.yaml --limit <undercloud>, <Controller>, <Compute>
    • <stack> 替换为您的堆栈的名称。
    • 使用 --limit 选项将内容应用到所有 RHOSP 节点。将 <undercloud>, <Controller>, <Compute> 替换为包含这些节点的环境中的 Ansible 组。不要针对 Ceph Storage 节点运行此 playbook,因为您可能具有这些节点的不同订阅。
注意

要手动将节点锁定到版本,请登录到节点并运行 subscription-manager release 命令:

$ sudo subscription-manager release --set=9.2

1.3. 更新 Red Hat Openstack Platform 软件仓库

更新您的软件仓库以使用 Red Hat OpenStack Platform (RHOSP) 17.1。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 编辑 overcloud 订阅管理环境文件,这是包含 RhsmVars 参数的文件。此文件的默认名称为 rhsm.yml
  4. 检查订阅管理配置中的 rhsm_repos 参数。如果 rhsm_repos 参数使用 RHOSP 17.1 存储库,请将存储库改为正确的版本:

    parameter_defaults:
      RhsmVars:
        rhsm_repos:
          - rhel-9-for-x86_64-baseos-eus-rpms
          - rhel-9-for-x86_64-appstream-eus-rpms
          - rhel-9-for-x86_64-highavailability-eus-rpms
          - openstack-17.1-for-rhel-9-x86_64-rpms
          - fast-datapath-for-rhel-9-x86_64-rpms
  5. 保存 overcloud 订阅管理环境文件。
  6. 创建一个 playbook,其中包含将软件仓库设置为所有节点上的 RHOSP 17.1 的任务:

    $ cat > ~/update_rhosp_repos.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: change osp repos
          command: subscription-manager repos --enable=openstack-17.1-for-rhel-9-x86_64-rpms
          become: true
    EOF
  7. 运行 update_rhosp_repos.yaml playbook:

    $ ansible-playbook -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml -f 25 ~/update_rhosp_repos.yaml --limit <undercloud>,<Controller>,<Compute>
    • <stack> 替换为您的堆栈的名称。
    • 使用 --limit 选项将内容应用到所有 RHOSP 节点。将 <undercloud>、<Controller> 和 <Compute> 替换为包含这些节点的环境中的 Ansible 组。不要针对 Ceph Storage 节点运行此 playbook,因为它们通常使用不同的订阅。
  8. 创建一个 playbook,其中包含一个任务,在所有 ceph 存储节点上将存储库设置为 RHOSP 17.1:

    $ cat > ~/update_ceph_repos.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: change ceph repos
          command: subscription-manager repos --enable=openstack-17.1-deployment-tools-for-rhel-9-x86_64-rpms
          become: true
    EOF
  9. 运行 update_ceph_repos.yaml playbook:

    $ ansible-playbook -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml -f 25 ~/update_ceph_repos.yaml --limit CephStorage

    使用 --limit 选项将内容应用到 Ceph Storage 节点。

1.4. 更新容器镜像准备文件

容器准备文件是包含 ContainerImagePrepare 参数的文件。您可以使用此文件定义用于获取 undercloud 和 overcloud 的容器镜像的规则。

在更新环境前,请检查该文件以确保获取正确的镜像版本。

流程

  1. 编辑容器准备文件。此文件的默认名称为 containers-prepare-parameter.yaml
  2. 确保每个规则集的 tag 参数设置为 17.1

    parameter_defaults:
      ContainerImagePrepare:
      - push_destination: true
        set:
          ...
          tag: '17.1'
        tag_from_label: '{version}-{release}'
    注意

    如果您不想将特定的标签用于更新,如 17.117.1.1,请删除 tag 键-值对,并只指定 tag_from_label。这使用安装的 Red Hat OpenStack Platform 版本来确定要在更新过程中使用的标签值。

  3. 保存这个文件。

1.5. 在 overcloud 中禁用隔离

在更新 overcloud 之前,请确保禁用隔离。

如果在 Controller 节点更新过程中在您的环境中部署隔离,overcloud 可能会检测到某些节点被禁用并尝试隔离操作,这可能会导致意外的结果。

如果您在 overcloud 中启用了隔离功能,则必须在更新期间临时禁用隔离。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 登录到 Controller 节点并运行 Pacemaker 命令禁用隔离:

    $ ssh tripleo-admin@<controller_ip> "sudo pcs property set stonith-enabled=false"
    • <controller_ip > 替换为 Controller 节点的 IP 地址。您可以使用 metalsmith list 命令查找 Controller 节点的 IP 地址。
  4. fencing.yaml 环境文件中,将 EnableFencing 参数设置为 false,以确保隔离在更新过程中保持禁用。

第 2 章 更新 undercloud

您可以使用 director 更新 undercloud 节点上的主软件包。要将 undercloud 及其 overcloud 镜像更新至最新的 Red Hat OpenStack Platform (RHOSP) 17.1 版本,请完成以下步骤:

先决条件

  • 在将 undercloud 更新至最新的 RHOSP 17.1 版本前,请确保完成所有更新准备步骤。如需更多信息,请参阅 第 1 章 准备次要更新

2.1. 在 undercloud 更新前验证 RHOSP

在更新 Red Hat OpenStack Platform (RHOSP)环境前,请使用 tripleo-validations playbook 验证 undercloud。

有关验证的更多信息, 请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的使用验证框架

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 安装软件包进行验证:

    $ sudo dnf -y update openstack-tripleo-validations python3-validations-libs validations-common
  4. 运行验证:

    $ validation run -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml --group pre-update
    • 将 <stack> 替换为堆栈的名称。

验证

  1. 要查看验证报告的结果,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的 查看验证历史记录
注意

忽略报告 No host 与唯一返回错误匹配的 FAILED 验证。此错误意味着您没有与验证主机组匹配的主机,这可能是预期的。FAILED 验证不会阻止您使用更新的 RHOSP 环境。但是,FAILED 验证可能会指示您的环境出现问题。

2.2. 执行容器化 undercloud 的次要更新

director 提供了用于更新 undercloud 节点上的主软件包的命令。使用 director 在 RHOSP 环境的当前版本中执行次要更新。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 使用 dnf update 命令更新 director 主软件包:

    $ sudo dnf update -y python3-tripleoclient ansible-*
  4. 更新 undercloud 环境:

    $ openstack undercloud upgrade
  5. 等待 undercloud 更新过程完成。
  6. 重启 undercloud 以更新操作系统的内核和其他系统软件包:

    $ sudo reboot
  7. 稍等片刻,直到节点启动。

2.3. 更新 overcloud 镜像

您必须将当前的 overcloud 镜像替换为新版本,以确保 director 可以使用最新版本的 RHOSP 软件内省和置备节点。

先决条件

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. stack 用户的主目录(/home/stack/images)的 images 中删除任何存在的镜像。

    $ rm -rf ~/images/*
  4. 解压存档:

    cd ~/images
    for i in /usr/share/rhosp-director-images/ironic-python-agent-latest-17.1.tar /usr/share/rhosp-director-images/overcloud-hardened-uefi-full-latest-17.1.tar; do tar -xvf $i; done
    cd ~
  5. 将最新的镜像导入到 director:

    $ openstack overcloud image upload --update-existing --image-path /home/stack/images/
  6. 将您的节点配置为使用新镜像:

    $ openstack overcloud node configure $(openstack baremetal node list -c UUID -f value)
  7. 验证新镜像是否存在:

    $ ls -l /var/lib/ironic/httpboot /var/lib/ironic/images
重要
  • 部署 overcloud 节点时,请确保 overcloud 镜像版本与对应的 heat 模板版本对应。例如,只使用 RHOSP 17.1 heat 模板的 RHOSP 17.1 镜像。
  • 如果您部署了使用红帽客户门户网站或 Red Hat Satellite 服务器的连接的环境,overcloud 镜像和软件包存储库版本可能不同步。为确保 overcloud 镜像和软件包存储库版本匹配,您可以使用 virt-customize 工具。有关更多信息,请参阅红帽知识库解决方案 使用 virt-customize 修改 Red Hat Linux OpenStack Platform Overcloud 镜像。
  • 新的 overcloud-full 镜像替换了旧的 overcloud-full 镜像。如果对旧镜像进行了更改,您必须重复新镜像的更改,特别是在将来部署新节点时。

第 3 章 更新 overcloud

更新 undercloud 后,您可以通过运行 overcloud 和容器镜像准备命令并更新节点来更新 overcloud。control plane API 在次版本更新过程中被完全支持。

先决条件

  • 您已将 undercloud 节点更新至最新版本。如需更多信息,请参阅 第 2 章 更新 undercloud
  • 如果您在 stack 用户主目录中使用一组本地核心模板,请确保更新模板,并使用安装和管理 Red Hat OpenStack Platform 指南中的 了解 heat 模板中的推荐的工作流。您必须先更新本地副本,然后才能升级 overcloud。
  • GlanceApiInternal 服务添加到 Controller 角色中:

    OS::TripleO::Services::GlanceApiInternal

    这是镜像服务(glance) API 内部实例的服务,可为管理员提供位置数据,以及需要它的其他服务,如块存储服务(cinder)和计算服务(nova)。

流程

要更新 overcloud,您必须完成以下步骤:

3.1. 运行 overcloud 更新准备

要准备 overcloud 以进行更新过程,您必须运行 openstack overcloud update prepare 命令,该命令将 overcloud 计划更新为 Red Hat OpenStack Platform (RHOSP) 17.1,并为更新准备节点。

先决条件

  • 如果使用 Ceph 订阅并已将 director 配置为使用 Ceph 存储节点的 overcloud-minimal 镜像,您必须确保 roles_data.yaml 角色定义文件中的 rhsm_enforce 参数设置为 False
  • 如果呈现自定义 NIC 模板,则必须使用 openstack-tripleo-heat-templates 集合的更新版本重新生成模板,以避免与 overcloud 版本不兼容。有关自定义 NIC 模板的更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的 自定义网络接口模板
注意

对于带有 OVN 部署的分布式计算节点(边缘)架构,您必须为每个使用计算、分布式计算或 DistributedComputeHCI 节点的堆栈完成此步骤,然后才能在 所有 overcloud 服务器上更新 ovn-controller 容器

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 运行 update 准备命令:

    $ openstack overcloud update prepare \
        --templates \
        --stack <stack_name> \
        -r <roles_data_file> \
        -n <network_data_file> \
        -e <environment_file> \
        -e <environment_file> \
        ...

    包含与您的环境相关的以下选项:

    • 如果 overcloud 堆栈的名称与默认名称 overcloud 不同,请在更新准备命令中包含 --stack 选项,并将 < stack_name& gt; 替换为您的堆栈的名称。
    • 如果使用自己的自定义角色,请使用 -r 选项包含自定义角色(<roles_data_file>)文件。
    • 如果使用自定义网络,请使用 -n 选项在(<network_data_file>)文件中包含您的可组合网络。
    • 如果您部署高可用性集群,请在 update preparation 命令中包含 --ntp-server 选项,或者在环境文件中包含 NtpServer 参数和值。
    • 使用 -e 选项包括任何自定义配置文件。
  4. 等待更新准备过程完成。

3.2. 验证 SSH 密钥大小

从 Red Hat Enterprise Linux (RHEL) 9.1 开始,至少需要 SSH 密钥大小为 2048 位。如果 Red Hat OpenStack Platform (RHOSP) director 上的当前 SSH 密钥小于 2048 位,您可以丢失对 overcloud 的访问。您必须验证您的 SSH 密钥是否满足所需的位大小。

流程

  1. 验证您的 SSH 密钥大小:

    ssh-keygen -l -f ~/.ssh/id_rsa.pub

    输出示例:

    1024 SHA256:Xqz0Xz0/aJua6B3qRD7VsLr6n/V3zhmnGSkcFR6FlJw stack@director.example.local (RSA)
  2. 如果您的 SSH 密钥小于 2048 位,请在继续操作前使用 ssh_key_rotation.yaml ansible playbook 替换 SSH 密钥。

    ANSIBLE_SSH_COMMON_ARGS="-o RequiredRSASize=1024" ansible-playbook \
    -i ~/config-download/<stack>/tripleo-ansible-inventory.yaml \
    /usr/share/ansible/tripleo-playbooks/ssh_key_rotation.yaml \
    --extra-vars "keep_old_key_authorized_keys=<true|false> \ backup_folder_path=</path/to/backup_folder>"
    • <stack > 替换为 overcloud 堆栈的名称。
    • 根据您的备份需求替换 &lt ;true|false >。如果没有包含此变量,则默认值为 true
    • </path/to/backup_folder& gt; 替换为备份路径。如果没有包含此变量,则默认值为 /home/{{ ansible_user_id }}/backup_keys/{{ ansible_date_time.epoch }}

3.3. 运行容器镜像准备

在更新 overcloud 之前,您必须准备您的环境所需的所有容器镜像配置,并将最新的 RHOSP 17.1 容器镜像拉取到 undercloud。

要完成容器镜像准备,您必须针对具有 container_image_prepare 标签的任务运行 openstack overcloud external-update run 命令。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 对具有 container_image_prepare 标签的任务运行 openstack overcloud external-update run 命令:

    $ openstack overcloud external-update run --stack <stack_name> --tags container_image_prepare
    • 如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈 名称设置为 --stack 选项,并将 < stack_name& gt; 替换为您的堆栈的名称。

3.4. 可选:更新所有 overcloud 服务器上的 ovn-controller 容器

如果您使用 Modular Layer 2 Open Virtual Network 机制驱动程序(ML2/OVN)部署 overcloud,请将 ovn-controller 容器更新至最新的 RHOSP 17.1 版本。更新发生在每个运行 ovn-controller 容器的 overcloud 服务器上。

  • 以下流程更新了分配了 Compute 角色的服务器上的 ovn-controller 容器,然后再更新分配了 Controller 角色的服务器上的 ovn-northd 服务。
  • 对于分布式计算节点(边缘)架构,您必须为每个带有计算、分布式计算或 DistributedComputeHCI 节点的堆栈完成此步骤,然后才能 更新所有 Controller 节点

    如果在这个过程之前意外更新了 ovn-northd 服务,您可能无法连接到虚拟机或创建新的虚拟机或虚拟网络。以下流程恢复连接。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 针对具有 ovn 标签的任务运行 openstack overcloud external-update run 命令:

    $ openstack overcloud external-update run --stack <stack_name> --tags ovn
    • 如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈 名称设置为 --stack 选项,并将 < stack_name& gt; 替换为您的堆栈的名称。
  4. 等待 ovn-controller 容器更新完成。

3.5. 更新 Pacemaker 控制的服务的容器镜像名称

如果您从 Red Hat Openstack Platform (RHOSP) 17 更新至 RHOSP 17.1,您必须更新 Pacemaker 控制的服务的容器镜像名称。您必须执行此更新,以迁移到 Pacemaker 控制服务的新镜像命名模式。

如果您将您的系统从 RHOSP 17.1 的版本更新至 RHOSP 17.1 的最新版本,则不需要更新 pacemaker 控制的服务的容器镜像名称。

流程

  1. 以 stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 使用 ha_image_update 标签运行 openstack overcloud external-update run 命令:

    $ openstack overcloud external-update run --stack <stack_name> --tags ha_image_update
    • 如果 undercloud 堆栈的名称与默认堆栈名称 undercloud 不同,请将您的堆栈名称设置为 --stack 选项,并将 <stack_name> 替换为您的堆栈的名称。

3.6. 更新所有 Controller 节点

将所有 Controller 节点更新至最新的 RHOSP 17.1 版本。运行 openstack overcloud update run 命令,并包含 --limit Controller 选项,以限制仅限 Controller 节点的操作。control plane API 在次版本更新过程中被完全支持。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 运行 update 命令:

    $ openstack overcloud update run --stack <stack_name> --limit Controller
    • 如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈 名称设置为 --stack 选项,并将 < stack_name& gt; 替换为您的堆栈的名称。
  4. 等待 Controller 节点更新完成。

3.7. 更新所有 Compute 节点

将所有 Compute 节点更新至最新的 RHOSP 17.1 版本。要更新 Compute 节点,请运行 openstack overcloud update run 命令,并包含 --limit Compute 选项,以限制仅限 Compute 节点的操作。

并行化注意事项

当您更新大量 Compute 节点时,您可以在后台运行多个更新任务,并配置每个任务来更新单独的 20 个节点组。例如,如果您的部署中有 80 个 Compute 节点,您可以运行以下命令来并行更新 Compute 节点:

$ openstack overcloud update run -y --limit 'Compute[0:19]' > update-compute-0-19.log 2>&1 &
$ openstack overcloud update run -y --limit 'Compute[20:39]' > update-compute-20-39.log 2>&1 &
$ openstack overcloud update run -y --limit 'Compute[40:59]' > update-compute-40-59.log 2>&1 &
$ openstack overcloud update run -y --limit 'Compute[60:79]' > update-compute-60-79.log 2>&1 &

这种对节点空间进行分区的方法是随机的,您无法控制要更新哪些节点。节点选择取决于运行 tripleo-ansible-inventory 命令时生成的清单文件。

要更新特定的 Compute 节点,请列出您要用逗号分隔的批处理中更新的节点:

$ openstack overcloud update run --limit <Compute0>,<Compute1>,<Compute2>,<Compute3>

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 运行 update 命令:

    $ openstack overcloud update run --stack <stack_name> --limit Compute
    • 如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈 名称设置为 --stack 选项,并将 < stack_name& gt; 替换为您的堆栈的名称。
  4. 等待 Compute 节点更新完成。

3.8. 更新所有 HCI Compute 节点

将超融合基础架构(HCI) Compute 节点更新至最新的 RHOSP 17.1 版本。

先决条件

  • 在运行 ceph-mon 服务的 Ceph monitor 或 Controller 节点上,检查 Red Hat Ceph Storage 集群状态是否健康,pg 状态为 active+clean

    $ sudo cephadm -- shell ceph status

    如果 Ceph 集群处于健康状态,它会返回 HEALTH_OK 状态。

    如果 Ceph 集群状态不健康,它将返回 HEALTH_WARNHEALTH_ERR 的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南Red Hat Ceph Storage 6 故障排除指南

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 运行 update 命令:

    $ openstack overcloud update run --stack <stack_name> --limit ComputeHCI
    • 如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈 名称设置为 --stack 选项,并将 < stack_name& gt; 替换为您的堆栈的名称。
  4. 等待节点更新完成。

3.9. 更新所有 DistributedComputeHCI 节点

更新特定于分布式计算节点架构的角色。当您升级分布式计算节点时,首先更新 DistributedComputeHCI 节点,然后更新 DistributedComputeHCIScaleOut 节点。

先决条件

  • 在运行 ceph-mon 服务的 Ceph monitor 或 Controller 节点上,检查 Red Hat Ceph Storage 集群状态是否健康,pg 状态为 active+clean

    $ sudo cephadm -- shell ceph status

    如果 Ceph 集群处于健康状态,它会返回 HEALTH_OK 状态。

    如果 Ceph 集群状态不健康,它将返回 HEALTH_WARNHEALTH_ERR 的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南Red Hat Ceph Storage 6 故障排除指南

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 运行 update 命令:

    $ openstack overcloud update run --stack <stack_name> --limit DistributedComputeHCI
    • 如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈 名称设置为 --stack 选项,并将 < stack_name& gt; 替换为您的堆栈的名称。
  4. 等待 DistributedComputeHCI 节点更新完成。
  5. 使用相同的进程更新 DistributedComputeHCIScaleOut 节点。

3.10. 更新所有 Ceph Storage 节点

将 Red Hat Ceph Storage 节点更新至最新的 RHOSP 17.1 版本。

重要

RHOSP 17.1 在 RHEL 9.2 上被支持。但是,映射到 Ceph Storage 角色的主机会更新到最新的主 RHEL 版本。如需更多信息,请参阅 Red Hat Ceph Storage: 支持的配置

先决条件

  • 在运行 ceph-mon 服务的 Ceph monitor 或 Controller 节点上,检查 Red Hat Ceph Storage 集群状态是否健康,pg 状态为 active+clean

    $ sudo cephadm -- shell ceph status

    如果 Ceph 集群处于健康状态,它会返回 HEALTH_OK 状态。

    如果 Ceph 集群状态不健康,它将返回 HEALTH_WARNHEALTH_ERR 的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南Red Hat Ceph Storage 6 故障排除指南

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 运行 update 命令:

    $ openstack overcloud update run --stack  <stack_name> --limit CephStorage
    • 如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈 名称设置为 --stack 选项,并将 < stack_name& gt; 替换为您的堆栈的名称。
  4. 等待节点更新完成。

3.11. 更新 Red Hat Ceph Storage 集群

使用 cephadm 命令将 director 部署的 Red Hat Ceph Storage 集群更新至与 Red Hat OpenStack Platform (RHOSP) 17.1 兼容的最新版本。

如果以下情况之一适用于您的环境,请更新您的 Red Hat Ceph Storage 集群:

  • 如果您从 RHOSP 16.2 升级到 RHOSP 17.1,则运行 Red Hat Ceph Storage 5,并更新至 Red Hat Ceph Storage 5 的更新版本。
  • 如果您新部署了 RHOSP 17.1,则运行 Red Hat Ceph Storage 6,并更新至 Red Hat Ceph Storage 6 的更新版本。

先决条件

流程

  1. 登录到 Controller 节点。
  2. 检查集群的健康状况:

    $ sudo cephadm shell -- ceph health
    注意

    如果 Ceph Storage 集群处于健康状态,命令会返回 HEALTH_OK 的结果。如果命令返回不同的结果,请在继续更新前查看集群的状态并联系红帽支持。有关更多信息,请参阅 Red Hat Ceph Storage 升级指南中的使用 cephadm 升级 Red Hat Ceph Storage 集群,或 Red Hat Ceph Storage 6 升级指南中的使用 cephadm 升级 Red Hat Ceph Storage 集群

  3. 可选:检查 Ceph Storage 集群更新中应包含哪些镜像:

    $ openstack tripleo container image list -f value |  awk -F '//' '/ceph/ {print $2}'
  4. 将集群更新至最新的 Red Hat Ceph Storage 版本:

    $ sudo cephadm shell -- ceph orch upgrade start --image <image_name>: <version>
    • <image_name > 替换为 Ceph Storage 集群镜像的名称。
    • &lt;version> 替换为您要更新 Ceph Storage 集群的目标版本。
  5. 等待 Ceph Storage 容器更新完成。要监控更新的状态,请运行以下命令:

     sudo cephadm shell -- ceph orch upgrade status

3.12. 执行在线数据库更新

有些 overcloud 组件需要在线更新或迁移其数据库表。要执行在线数据库更新,请针对具有 online_upgrade 标签的任务运行 openstack overcloud external-update 命令。

在线数据库更新适用于以下组件:

  • OpenStack Block Storage (cinder)
  • OpenStack Compute (nova)

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 针对使用 online_upgrade 标签的任务运行 openstack overcloud external-update run 命令:

    $ openstack overcloud external-update run --stack <stack_name> --tags online_upgrade

3.13. 在 overcloud 中重新启用隔离

在更新 overcloud 之前,您将 禁用 overcloud 中的隔离功能。在更新 overcloud 后,重新启用隔离来保护您的数据(如果节点失败)。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 登录到 Controller 节点并运行 Pacemaker 命令重新启用隔离:

    $ ssh tripleo-admin@<controller_ip> "sudo pcs property set stonith-enabled=true"
    • <controller_ip > 替换为 Controller 节点的 IP 地址。您可以使用 openstack server list 命令查找 Controller 节点的 IP 地址。
  4. fencing.yaml 环境文件中,将 EnableFencing 参数设置为 true

第 4 章 重新引导 overcloud

执行小的 Red Hat OpenStack Platform (RHOSP)更新至最新的 17.1 版本后,重启您的 overcloud。重启会使用任何关联的内核、系统级和容器组件更新刷新节点。这些更新提供了性能和安全优势。计划停机时间来执行重启过程。

使用以下指导了解如何重新引导不同的节点类型:

4.1. 重新引导 Controller 和可组合节点

根据可组合角色重新引导 Controller 节点和独立节点,并排除 Compute 节点和 Ceph Storage 节点。

流程

  1. 登录您要重新引导的节点。
  2. 可选:如果节点使用 Pacemaker 资源,请停止集群:

    [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs cluster stop
  3. 重新引导节点:

    [tripleo-admin@overcloud-controller-0 ~]$ sudo reboot
  4. 稍等片刻,直到节点启动。

验证

  1. 验证服务是否已启用。

    1. 如果该节点使用 Pacemaker 服务,请检查该节点是否已重新加入集群:

      [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status
    2. 如果该节点使用 Systemd 服务,请检查是否所有服务都已启用:

      [tripleo-admin@overcloud-controller-0 ~]$ sudo systemctl status
    3. 如果该节点使用容器化服务,则检查节点上的所有容器是否已激活:

      [tripleo-admin@overcloud-controller-0 ~]$ sudo podman ps

4.2. 重新引导 Ceph Storage (OSD) 集群

完成以下步骤以重新引导 Ceph Storage (OSD) 节点集群。

先决条件

  • 在运行 ceph-mon 服务的 Ceph monitor 或 Controller 节点上,检查 Red Hat Ceph Storage 集群状态是否健康,pg 状态为 active+clean

    $ sudo cephadm -- shell ceph status

    如果 Ceph 集群处于健康状态,它会返回 HEALTH_OK 状态。

    如果 Ceph 集群状态不健康,它将返回 HEALTH_WARNHEALTH_ERR 的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南Red Hat Ceph Storage 6 故障排除指南

流程

  1. 登录到运行 ceph-mon 服务的 Ceph Monitor 或 Controller 节点,并临时禁用 Ceph Storage 集群重新平衡:

    $ sudo cephadm shell -- ceph osd set noout
    $ sudo cephadm shell -- ceph osd set norebalance
    注意

    如果您有多堆栈或分布式计算节点(DCN)架构,您必须在设置 nooutnorebalance 标志时指定 Ceph 集群名称。例如: sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring

  2. 选择第一个要重新引导的 Ceph Storage 节点并登录到该节点。
  3. 重新引导节点:

    $ sudo reboot
  4. 稍等片刻,直到节点启动。
  5. 登录节点并检查 Ceph 集群状态:

    $ sudo cephadm -- shell ceph status

    确认 pgmap 报告的所有 pgs 的状态是否都正常 (active+clean)。

  6. 注销节点,重新引导下一个节点,并检查其状态。重复此过程,直到您已重新引导所有 Ceph Storage 节点。
  7. 完成后,登录到运行 ceph-mon 服务的 Ceph Monitor 或 Controller 节点,并启用 Ceph 集群重新平衡:

    $ sudo cephadm shell -- ceph osd unset noout
    $ sudo cephadm shell -- ceph osd unset norebalance
    注意

    如果您有多堆栈或分布式计算节点(DCN)架构,您必须在取消设置 nooutnorebalance 标志时指定 Ceph 集群名称。例如: sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring

  8. 执行最后的状态检查,确认集群报告 HEALTH_OK

    $ sudo cephadm shell ceph status

4.3. 重新引导 Compute 节点

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

迁移实例工作流

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

先决条件

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

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

    注意

    如果您有 Multi-RHEL 环境,并且希望将虚拟机从运行 RHEL 9.2 的 Compute 节点迁移到运行 RHEL 8.4 的 Compute 节点,则只支持冷迁移。有关冷迁移的更多信息,请参阅配置 计算服务 以进行实例创建中的冷迁移实例

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

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

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

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

流程

  1. stack 用户的身份登录 undercloud。
  2. 检索 Compute 节点列表,以识别您要重新引导的节点的主机名:

    (undercloud)$ source ~/overcloudrc
    (overcloud)$ openstack compute service list

    识别您要重新引导的 Compute 节点的主机名。

  3. 在您要重新引导的 Compute 节点上禁用 Compute 服务:

    (overcloud)$ openstack compute service list
    (overcloud)$ openstack compute service set <hostname> nova-compute --disable
    • <hostname > 替换为 Compute 节点的主机名。
  4. 列出 Compute 节点上的所有实例:

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

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

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

        (overcloud) $ openstack server migrate <instance_id> --live <target_host> --wait
        • <instance_id& gt; 替换为您的实例 ID。
        • <target_host > 替换为您要将实例迁移到的主机。
      • 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 节点并重启节点:

    [tripleo-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

4.4. 在 overcloud 更新后验证 RHOSP

更新 Red Hat OpenStack Platform (RHOSP)环境后,使用 tripleo-validations playbook 验证 overcloud。

有关验证的更多信息, 请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的使用验证框架

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 运行验证:

    $ validation run -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml --group post-update
    • 将 <stack> 替换为堆栈的名称。

验证

  1. 要查看验证报告的结果,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的 查看验证历史记录
注意

忽略报告 No host 与唯一返回错误匹配的 FAILED 验证。此错误意味着您没有与验证主机组匹配的主机,这可能是预期的。FAILED 验证不会阻止您使用更新的 RHOSP 环境。但是,FAILED 验证可能会指示您的环境出现问题。