执行 Red Hat OpenStack Platform 的次要更新
将最新的程序错误修复和安全改进应用到 Red Hat OpenStack Platform
OpenStack Documentation Team
rhos-docs@redhat.com
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
在 JIRA 中提供文档反馈
使用 Create Issue 表单对文档提供反馈。JIRA 问题将在 Red Hat OpenStack Platform Jira 项目中创建,您可以在其中跟踪您的反馈进度。
- 确保您已登录到 JIRA。如果您没有 JIRA 帐户,请创建一个帐户来提交反馈。
- 点击以下链接打开 Create Issue 页面: Create Issue
- 完成 Summary 和 Description 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
- 点 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 被重启。 |
可选 |
所有 |
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 服务通过使用 |
如果您有多堆栈基础架构,请完全更新每个 overcloud 堆栈,一次逐一逐一更新。如果您有分布式计算节点(DCN)基础架构,请在中央位置完全更新 overcloud,然后在每个边缘站点上完全更新 overcloud,一次逐一更新 overcloud。
另外,管理员可以在次版本更新过程中执行以下操作:
- 迁移虚拟机
- 创建虚拟机网络
- 运行额外的云操作
在次版本更新过程中不支持以下操作:
- 替换 Controller 节点
- 缩减或扩展任何角色
更新 RHOSP 环境前的注意事项
要帮助您在更新过程中为您提供指导,请考虑以下信息:
- 红帽建议备份 undercloud 和 overcloud control plane。有关备份节点的更多信息,请参阅 备份和恢复 undercloud 和 control plane 节点。
- 熟悉可能会阻止更新的已知问题。
- 在开始更新前,请熟悉可能的更新和升级路径。更多信息请参阅 第 1.1 节 “长生命版本的升级路径”。
-
要识别您当前的维护版本,请运行
$ cat /etc/rhosp-release
。您还可以在更新环境后运行此命令以验证更新。
可能会阻止更新的已知问题
当前没有已知问题。
流程
要为次版本更新准备 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 版本,以避免将操作系统升级到较新的次版本。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
-
编辑 overcloud 订阅管理环境文件,这是包含
RhsmVars
参数的文件。此文件的默认名称为rhsm.yml
。 检查您的订阅管理配置是否包含
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"
- 保存 overcloud 订阅管理环境文件。
创建一个 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
运行
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。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
-
编辑 overcloud 订阅管理环境文件,这是包含
RhsmVars
参数的文件。此文件的默认名称为rhsm.yml
。 检查订阅管理配置中的
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
- 保存 overcloud 订阅管理环境文件。
创建一个 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
运行
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,因为它们通常使用不同的订阅。
-
将
创建一个 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
运行
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 的容器镜像的规则。
在更新环境前,请检查该文件以确保获取正确的镜像版本。
流程
-
编辑容器准备文件。此文件的默认名称为
containers-prepare-parameter.yaml
。 确保每个规则集的
tag
参数设置为17.1
:parameter_defaults: ContainerImagePrepare: - push_destination: true set: ... tag: '17.1' tag_from_label: '{version}-{release}'
注意如果您不想将特定的标签用于更新,如
17.1
或17.1.1
,请删除tag
键-值对,并只指定tag_from_label
。这使用安装的 Red Hat OpenStack Platform 版本来确定要在更新过程中使用的标签值。- 保存这个文件。
1.5. 在 overcloud 中禁用隔离
在更新 overcloud 之前,请确保禁用隔离。
如果在 Controller 节点更新过程中在您的环境中部署隔离,overcloud 可能会检测到某些节点被禁用并尝试隔离操作,这可能会导致意外的结果。
如果您在 overcloud 中启用了隔离功能,则必须在更新期间临时禁用隔离。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
登录到 Controller 节点并运行 Pacemaker 命令禁用隔离:
$ ssh tripleo-admin@<controller_ip> "sudo pcs property set stonith-enabled=false"
-
将
<controller_ip
> 替换为 Controller 节点的 IP 地址。您可以使用metalsmith list
命令查找 Controller 节点的 IP 地址。
-
将
-
在
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 中的使用验证框架。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
安装软件包进行验证:
$ sudo dnf -y update openstack-tripleo-validations python3-validations-libs validations-common
运行验证:
$ validation run -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml --group pre-update
- 将 <stack> 替换为堆栈的名称。
验证
- 要查看验证报告的结果,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的 查看验证历史记录。
忽略报告 No host 与唯一返回错误匹配的
FAILED
验证。此错误意味着您没有与验证主机组匹配的主机,这可能是预期的。FAILED
验证不会阻止您使用更新的 RHOSP 环境。但是,FAILED
验证可能会指示您的环境出现问题。
2.2. 执行容器化 undercloud 的次要更新
director 提供了用于更新 undercloud 节点上的主软件包的命令。使用 director 在 RHOSP 环境的当前版本中执行次要更新。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
使用
dnf update
命令更新 director 主软件包:$ sudo dnf update -y python3-tripleoclient ansible-*
更新 undercloud 环境:
$ openstack undercloud upgrade
- 等待 undercloud 更新过程完成。
重启 undercloud 以更新操作系统的内核和其他系统软件包:
$ sudo reboot
- 稍等片刻,直到节点启动。
2.3. 更新 overcloud 镜像
您必须将当前的 overcloud 镜像替换为新版本,以确保 director 可以使用最新版本的 RHOSP 软件内省和置备节点。
先决条件
- 您已将 undercloud 节点更新至最新版本。更多信息请参阅 第 2.2 节 “执行容器化 undercloud 的次要更新”。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
从
stack
用户的主目录(/home/stack/images
)的images
中删除任何存在的镜像。$ rm -rf ~/images/*
解压存档:
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 ~
将最新的镜像导入到 director:
$ openstack overcloud image upload --update-existing --image-path /home/stack/images/
将您的节点配置为使用新镜像:
$ openstack overcloud node configure $(openstack baremetal node list -c UUID -f value)
验证新镜像是否存在:
$ 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 更新准备”
- 第 3.3 节 “运行容器镜像准备”
- 第 3.4 节 “可选:更新所有 overcloud 服务器上的 ovn-controller 容器”
- 第 3.5 节 “更新 Pacemaker 控制的服务的容器镜像名称”
- 第 3.6 节 “更新所有 Controller 节点”
- 第 3.7 节 “更新所有 Compute 节点”
- 第 3.8 节 “更新所有 HCI Compute 节点”
- 第 3.9 节 “更新所有 DistributedComputeHCI 节点”
- 第 3.10 节 “更新所有 Ceph Storage 节点”
- 第 3.11 节 “更新 Red Hat Ceph Storage 集群”
- 第 3.12 节 “执行在线数据库更新”
- 第 3.13 节 “在 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 容器。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
运行 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
选项包括任何自定义配置文件。
-
如果
- 等待更新准备过程完成。
3.2. 验证 SSH 密钥大小
从 Red Hat Enterprise Linux (RHEL) 9.1 开始,至少需要 SSH 密钥大小为 2048 位。如果 Red Hat OpenStack Platform (RHOSP) director 上的当前 SSH 密钥小于 2048 位,您可以丢失对 overcloud 的访问。您必须验证您的 SSH 密钥是否满足所需的位大小。
流程
验证您的 SSH 密钥大小:
ssh-keygen -l -f ~/.ssh/id_rsa.pub
输出示例:
1024 SHA256:Xqz0Xz0/aJua6B3qRD7VsLr6n/V3zhmnGSkcFR6FlJw stack@director.example.local (RSA)
如果您的 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 堆栈的名称。 -
根据您的备份需求替换 <
;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
命令。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
对具有
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; 替换为您的堆栈的名称。
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
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
服务,您可能无法连接到虚拟机或创建新的虚拟机或虚拟网络。以下流程恢复连接。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
针对具有 ovn 标签的任务运行
openstack overcloud external-update run
命令:$ openstack overcloud external-update run --stack <stack_name> --tags ovn
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
名称设置为
--stack
选项,并将 <stack_name&
gt; 替换为您的堆栈的名称。
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
-
等待
ovn-controller
容器更新完成。
3.5. 更新 Pacemaker 控制的服务的容器镜像名称
如果您从 Red Hat Openstack Platform (RHOSP) 17 更新至 RHOSP 17.1,您必须更新 Pacemaker 控制的服务的容器镜像名称。您必须执行此更新,以迁移到 Pacemaker 控制服务的新镜像命名模式。
如果您将您的系统从 RHOSP 17.1 的版本更新至 RHOSP 17.1 的最新版本,则不需要更新 pacemaker 控制的服务的容器镜像名称。
流程
- 以 stack 用户身份登录 undercloud 主机。
查找 stackrc undercloud 凭证文件:
$ source ~/stackrc
使用
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 在次版本更新过程中被完全支持。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
运行 update 命令:
$ openstack overcloud update run --stack <stack_name> --limit Controller
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
名称设置为
--stack
选项,并将 <stack_name&
gt; 替换为您的堆栈的名称。
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
- 等待 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>
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
运行 update 命令:
$ openstack overcloud update run --stack <stack_name> --limit Compute
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
名称设置为
--stack
选项,并将 <stack_name&
gt; 替换为您的堆栈的名称。
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
- 等待 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_WARN
或HEALTH_ERR
的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南 或 Red Hat Ceph Storage 6 故障排除指南
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
运行 update 命令:
$ openstack overcloud update run --stack <stack_name> --limit ComputeHCI
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
名称设置为
--stack
选项,并将 <stack_name&
gt; 替换为您的堆栈的名称。
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
- 等待节点更新完成。
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_WARN
或HEALTH_ERR
的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南 或 Red Hat Ceph Storage 6 故障排除指南。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
运行 update 命令:
$ openstack overcloud update run --stack <stack_name> --limit DistributedComputeHCI
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
名称设置为
--stack
选项,并将 <stack_name&
gt; 替换为您的堆栈的名称。
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
-
等待
DistributedComputeHCI
节点更新完成。 -
使用相同的进程更新
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_WARN
或HEALTH_ERR
的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南 或 Red Hat Ceph Storage 6 故障排除指南。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
运行 update 命令:
$ openstack overcloud update run --stack <stack_name> --limit CephStorage
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
名称设置为
--stack
选项,并将 <stack_name&
gt; 替换为您的堆栈的名称。
-
如果 overcloud 堆栈的名称与默认堆栈名称 overcloud 不同,请将您的堆栈
- 等待节点更新完成。
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 的更新版本。
先决条件
- 完成容器镜像准备 第 3.3 节 “运行容器镜像准备”。
流程
- 登录到 Controller 节点。
检查集群的健康状况:
$ 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 集群。可选:检查 Ceph Storage 集群更新中应包含哪些镜像:
$ openstack tripleo container image list -f value | awk -F '//' '/ceph/ {print $2}'
将集群更新至最新的 Red Hat Ceph Storage 版本:
$ sudo cephadm shell -- ceph orch upgrade start --image <image_name>: <version>
-
将
<image_name
> 替换为 Ceph Storage 集群镜像的名称。 -
将
<
;version> 替换为您要更新 Ceph Storage 集群的目标版本。
-
将
等待 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)
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
针对使用
online_upgrade
标签的任务运行openstack overcloud external-update run
命令:$ openstack overcloud external-update run --stack <stack_name> --tags online_upgrade
3.13. 在 overcloud 中重新启用隔离
在更新 overcloud 之前,您将 禁用 overcloud 中的隔离功能。在更新 overcloud 后,重新启用隔离来保护您的数据(如果节点失败)。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
登录到 Controller 节点并运行 Pacemaker 命令重新启用隔离:
$ ssh tripleo-admin@<controller_ip> "sudo pcs property set stonith-enabled=true"
-
将
<controller_ip
> 替换为 Controller 节点的 IP 地址。您可以使用openstack server list
命令查找 Controller 节点的 IP 地址。
-
将
-
在
fencing.yaml
环境文件中,将EnableFencing
参数设置为true
。
第 4 章 重新引导 overcloud
执行小的 Red Hat OpenStack Platform (RHOSP)更新至最新的 17.1 版本后,重启您的 overcloud。重启会使用任何关联的内核、系统级和容器组件更新刷新节点。这些更新提供了性能和安全优势。计划停机时间来执行重启过程。
使用以下指导了解如何重新引导不同的节点类型:
- 如果重新引导一个角色中的所有节点,请单独重新引导每个节点。如果您同时重新引导角色中的所有节点,则重启操作过程中可能会发生服务停机时间。
按照以下顺序在节点上完成重启步骤:
4.1. 重新引导 Controller 和可组合节点
根据可组合角色重新引导 Controller 节点和独立节点,并排除 Compute 节点和 Ceph Storage 节点。
流程
- 登录您要重新引导的节点。
可选:如果节点使用 Pacemaker 资源,请停止集群:
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs cluster stop
重新引导节点:
[tripleo-admin@overcloud-controller-0 ~]$ sudo reboot
- 稍等片刻,直到节点启动。
验证
验证服务是否已启用。
如果该节点使用 Pacemaker 服务,请检查该节点是否已重新加入集群:
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status
如果该节点使用 Systemd 服务,请检查是否所有服务都已启用:
[tripleo-admin@overcloud-controller-0 ~]$ sudo systemctl status
如果该节点使用容器化服务,则检查节点上的所有容器是否已激活:
[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_WARN
或HEALTH_ERR
的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南 或 Red Hat Ceph Storage 6 故障排除指南。
流程
登录到运行
ceph-mon
服务的 Ceph Monitor 或 Controller 节点,并临时禁用 Ceph Storage 集群重新平衡:$ sudo cephadm shell -- ceph osd set noout $ sudo cephadm shell -- ceph osd set norebalance
注意如果您有多堆栈或分布式计算节点(DCN)架构,您必须在设置
noout
和norebalance
标志时指定 Ceph 集群名称。例如:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring
。- 选择第一个要重新引导的 Ceph Storage 节点并登录到该节点。
重新引导节点:
$ sudo reboot
- 稍等片刻,直到节点启动。
登录节点并检查 Ceph 集群状态:
$ sudo cephadm -- shell ceph status
确认
pgmap
报告的所有pgs
的状态是否都正常 (active+clean
)。- 注销节点,重新引导下一个节点,并检查其状态。重复此过程,直到您已重新引导所有 Ceph Storage 节点。
完成后,登录到运行
ceph-mon
服务的 Ceph Monitor 或 Controller 节点,并启用 Ceph 集群重新平衡:$ sudo cephadm shell -- ceph osd unset noout $ sudo cephadm shell -- ceph osd unset norebalance
注意如果您有多堆栈或分布式计算节点(DCN)架构,您必须在取消设置
noout
和norebalance
标志时指定 Ceph 集群名称。例如:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring
执行最后的状态检查,确认集群报告
HEALTH_OK
:$ sudo cephadm shell ceph status
4.3. 重新引导 Compute 节点
为确保 Red Hat OpenStack Platform 环境中 实例的停机时间最少,迁移实例工作流 概述了从您要重新引导的 Compute 节点迁移实例的步骤。
迁移实例工作流
- 决定是否在重新引导节点前将实例迁移到另一个 Compute 节点。
- 选择并禁用您要重新引导的 Compute 节点,使其不置备新实例。
- 将实例迁移到另一个 Compute 节点中。
- 重新引导空的 Compute 节点。
- 启用空的 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 参数。
流程
-
以
stack
用户的身份登录 undercloud。 检索 Compute 节点列表,以识别您要重新引导的节点的主机名:
(undercloud)$ source ~/overcloudrc (overcloud)$ openstack compute service list
识别您要重新引导的 Compute 节点的主机名。
在您要重新引导的 Compute 节点上禁用 Compute 服务:
(overcloud)$ openstack compute service list (overcloud)$ openstack compute service set <hostname> nova-compute --disable
-
将
<hostname
> 替换为 Compute 节点的主机名。
-
将
列出 Compute 节点上的所有实例:
(overcloud)$ openstack server list --host <hostname> --all-projects
可选: 要将实例迁移到另一个 Compute 节点,请完成以下步骤:
如果您决定将实例迁移至另一个 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
命令可能会引发一些弃用警告,这些警告信息可以被安全忽略。
- 稍等片刻,直至迁移完成。
确认迁移成功完成:
(overcloud) $ openstack server list --host <hostname> --all-projects
- 继续迁移实例,直到 Compute 节点上没有保留任何实例。
登录到 Compute 节点并重启节点:
[tripleo-admin@overcloud-compute-0 ~]$ sudo reboot
- 稍等片刻,直到节点启动。
重新启用 Compute 节点:
$ source ~/overcloudrc (overcloud) $ openstack compute service set <hostname> nova-compute --enable
确认是否已启用 Compute 节点:
(overcloud) $ openstack compute service list
4.4. 在 overcloud 更新后验证 RHOSP
更新 Red Hat OpenStack Platform (RHOSP)环境后,使用 tripleo-validations
playbook 验证 overcloud。
有关验证的更多信息, 请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的使用验证框架。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
运行验证:
$ validation run -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml --group post-update
- 将 <stack> 替换为堆栈的名称。
验证
- 要查看验证报告的结果,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的 查看验证历史记录。
忽略报告 No host 与唯一返回错误匹配的
FAILED
验证。此错误意味着您没有与验证主机组匹配的主机,这可能是预期的。FAILED
验证不会阻止您使用更新的 RHOSP 环境。但是,FAILED
验证可能会指示您的环境出现问题。