升级框架(13 到 16.2)
从 Red Hat OpenStack Platform 13 原位升级到 16.2
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 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 框架
升级的 Red Hat OpenStack Platform(RHOSP)框架是将 RHOSP 环境从一个长版本升级到下一个长生命版本的工作流。此工作流是一个原位解决方案,它在现有的环境中进行升级。
1.1. 长生命版本的升级框架
您可以使用 Red Hat OpenStack Platform(RHOSP) 升级框架 通过多个版本的 overcloud 执行原位升级路径。目的是让您在某些 OpenStack 版本中保持在被视为 长生命版本,并在下一个长生命版本可用时进行升级。
Red Hat OpenStack Platform 升级过程还升级节点上的 Red Hat Enterprise Linux(RHEL)版本。
本指南通过以下版本提供升级框架:
当前版本 | 目标版本 |
---|---|
Red Hat OpenStack Platform 13 latest | Red Hat OpenStack Platform 16.2 latest |
1.2. 对长生命版本的生命周期支持
有关 Red Hat OpenStack Platform 生命周期支持的详细信息,请参阅 Red Hat OpenStack Platform 生命周期。
1.3. 长生命版本的升级路径
在开始更新或升级前,熟悉可能的更新和升级路径。
您可以在 /etc/rhosp-release
和 /etc/redhat-release
文件中查看当前的 RHOSP 和 RHEL 版本。
当前版本 | 目标版本 |
---|---|
RHEL 7.x 上的 RHOSP 10.0.x | RHEL 7.7 latest 上的 RHOSP 10.0 |
RHEL 7.x 上的 RHOSP 13.0.x | RHEL 7.9 latest 上最新的 RHOSP 13.0 |
RHEL 8.2 上的 RHOSP 16.1.x | RHEL 8.2 最新 RHOSP 16.1 最新 |
RHEL 8.2 上的 RHOSP 16.1.x | RHEL 8.4 最新版 RHOSP 16.2 |
RHEL 8.4 上的 RHOSP 16.2.x | RHEL 8.4 最新版 RHOSP 16.2 |
如需更多信息,请参阅 保持 Red Hat OpenStack Platform 更新。
当前版本 | 目标版本 |
---|---|
RHEL 7.7 上的 RHOSP 10 | RHEL 7.9 latest 上的 RHOSP 13 |
RHEL 7.9 上的 RHOSP 13 | RHEL 8.2 最新 RHOSP 16.1 最新 |
RHEL 7.9 上的 RHOSP 13 | RHEL 8.4 最新版 RHOSP 16.2 |
红帽提供了两个选项,供您将环境升级到下一个长生命周期版本:
- 原位升级
- 在现有环境中对服务进行升级。本指南主要关注此选项。
- 并行迁移
- 创建新的 Red Hat OpenStack Platform 16.2 环境,并将您的工作负载从当前环境迁移到新环境中。有关 Red Hat OpenStack Platform 并行迁移的更多信息,请联络红帽全球支持服务。
这个表中的持续时间是基于内部测试的最小估算值,可能不适用于所有生产环境。例如,如果您的硬件有低规格或延长的启动周期,则允许更多的时间使用这些持续时间。要准确衡量每个任务的升级持续时间,请在测试环境中执行与生产环境类似的硬件。
原位升级 | 并行迁移 | |
---|---|---|
undercloud 的升级持续时间 | 每个主要操作的预计持续时间都包括:
| 无。除了现有的 undercloud 外,您还将创建新的 undercloud。 |
overcloud control plane 的升级持续时间 | 每个 Controller 节点的估算:
| 无。除了现有的 control plane 外,您还需要创建新的 control plane。 |
control plane 的中断持续时间 | bootstrap Controller 节点的服务升级期间,大约 60 分钟。 | 无。两个 overcloud 在工作负载迁移期间都正常运行。 |
control plane 中断的结果 | 您不能在停机期间执行 OpenStack 操作。 | 没有中断。 |
overcloud data plane 的升级持续时间 | 每个 Compute 节点和 Ceph Storage 节点的估算:
| 无。除了现有的 data plane 外,您还会创建新的数据平面。 |
data plane 的中断持续时间 | 由于工作负载从节点迁移到节点,因此中断最小。 | 由于工作负载从 overcloud 迁移到 overcloud,因此中断最小。 |
额外的硬件要求 | 不需要额外的硬件。 | 需要额外硬件来创建新 undercloud 和 overcloud。 |
第 2 章 规划和准备原位升级
在对 OpenStack Platform 环境的原位升级前,请先为升级创建一个计划,并满足任何可能阻止成功升级的潜在阻碍。
2.1. 熟悉 Red Hat OpenStack Platform 16.2
在执行升级前,熟悉 Red Hat OpenStack Platform 16.2,以帮助您了解生成的环境以及可能会影响升级的潜在版本对版本的更改。要熟悉 Red Hat OpenStack Platform 16.2,请遵循以下建议:
阅读升级路径中所有版本的发行注记,并确定需要规划的任何潜在方面:
- 包含新功能的组件
- 已知问题
使用这些链接为每个版本打开发行注记:
- 阅读 16.2 版本 Director 安装和使用 指南,熟悉本指南中任何新要求和流程。
- 安装概念验证 Red Hat OpenStack Platform 16.2 undercloud 和 overcloud。开发目标 OpenStack 平台版本的实践体验,并调查目标版本与当前版本之间的潜在差异。
2.2. Red Hat OpenStack Platform 16.2 中的高级别变化
升级到 Red Hat OpenStack Platform 16.2 时发生了以下高级别更改:
-
OpenStack Platform director 16.2 使用名为
config-download
的 Ansible 驱动的方法配置 overcloud。这会替换基于 heat 的标准配置方法。director 仍然使用 heat 来编配置备操作。 -
director 安装使用与 overcloud 部署相同的方法。因此,undercloud 还使用
openstack-tripleo-heat-templates
作为安装和配置各个服务的蓝图。 - undercloud 在容器中运行 OpenStack 服务。
- undercloud 通过新方法拉取和存储容器镜像。undercloud 在部署 overcloud 之前不拉取容器镜像,而是在部署过程中拉取所有相关容器镜像。
- overcloud 部署过程包含注册节点的高级订阅管理方法。此方法包含了 Ansible 角色来注册 OpenStack Platform 节点。如果需要,新方法还会将不同的订阅应用到不同的节点角色。
- overcloud 现在使用 Open Virtual Network(OVN)作为默认的 ML2 机制驱动程序。可以将 Open vSwitch(OVS)服务迁移到 OVN,该服务在成功完成成功完成后执行。
- undercloud 和 overcloud 在 Red Hat Enterprise Linux 8 上运行。
-
openstack-tripleo-heat-templates
在部署
目录中包含一个统一的可组合服务模板集合。此目录现在包含包含容器化服务和基于 Puppet 的可组合服务模板中的合并内容的模板。 OpenStack 数据处理服务(sahara)不再被支持。
重要如果您在 Red Hat OpenStack Platform 13 环境中启用了 sahara,则不能继续进行这个升级并联系红帽全球支持服务。
- OpenStack Telemetry 组件已弃用,而是使用 Service Telemetry Framework(STF)。
从 Red Hat Enterprise Linux (RHEL) 版本 8.3 开始,默认禁用对 Intel 事务同步扩展 (TSX) 功能的支持。这会导致在从运行带有 RHEL 8.2 的 Red Hat OpenStack Platform 13 的主机迁移到运行带有 RHEL 8.4 版本的 Red Hat OpenStack Platform 16.2 主机时,实例实时迁移问题。
重启 Compute 节点后实例实时迁移会失败。要确保升级的节点在启用 TSX 功能的情况下引导,并可成功实时迁移实例,将
tsx=off
添加到 Compute 节点的KernelArgs
角色参数中,并重新引导该节点。如需更多信息,请参阅红帽知识库解决方案有关 Intel TSX 对 OpenStack 客户端的影响的指南(适用于 RHEL 8.3 及更高版本)。
2.3. Changes in Red Hat Enterprise Linux 8
undercloud 和 overcloud 在 Red Hat Enterprise Linux 8 上运行。这包括与 undercloud 和 overcloud 相关的新工具和功能:
-
undercloud 和 overcloud 使用 Red Hat Container Toolkit。Red Hat Enterprise Linux 8 而不是
docker
来构建和控制容器生命周期,而是包括buildah
来构建新的容器镜像和podman
用于容器管理。 -
Red Hat Enterprise Linux 8 不包括
docker-distribution
软件包。undercloud 现在包含一个私有 HTTP 注册表,为 overcloud 节点提供容器镜像。 -
从 Red Hat Enterprise Linux 7 升级到 8 的升级过程使用
leapp
工具。 -
Red Hat Enterprise Linux 8 不使用
ntp
服务。Red Hat Enterprise Linux 8 使用chronyd
。 - Red Hat Enterprise Linux 8 包括新版本的高可用性工具。
Red Hat OpenStack Platform 16.2 使用 Red Hat Enterprise Linux 8.4 作为基础操作系统。作为升级过程的一部分,您要将节点的基本操作系统升级到 Red Hat Enterprise Linux 8.4。
有关 Red Hat Enterprise Linux 7 和 8 的主要区别的详情,请参阅使用 RHEL 8 的注意事项。有关 Red Hat Enterprise Linux 8 的常规信息,请查看 Red Hat Enterprise Linux 8 产品文档。
2.4. Leapp Red Hat OpenStack Platform 中的升级使用
Red Hat OpenStack Platform 的长生命升级需要基本操作系统从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8。Red Hat Enterprise Linux 7 使用 Leapp 程序对 Red Hat Enterprise Linux 8 执行升级。要确保 Leapp 及其依赖软件包可用,请验证是否启用了以下 Red Hat Enterprise Linux 7 软件仓库:
Red Hat Enterprise Linux 7 Server RPMs x86_64 7Server 或 Red Hat Enterprise Linux 7 Server RPMs x86_64 7.9
rhel-7-server-rpms x86_64 7Server or: rhel-7-server-rpms x86_64 7.9
Red Hat Enterprise Linux 7 Server - Extras RPMs x86_64
rhel-7-server-extras-rpms x86_64
如需更多信息,请参阅 为升级准备 RHEL 7 系统。
undercloud 和 overcloud 使用单独的进程来执行操作系统升级。
undercloud 进程
在运行 openstack undercloud upgrade
命令前,手动运行 leapp
升级。undercloud 升级包括执行 leapp
升级的说明。
Overcloud 进程
overcloud 升级框架自动运行 leapp
升级。
限制
有关可能会影响升级的潜在限制信息,请参阅从 RHEL 7 升级到 RHEL 8 指南中的以下部分:
特别是,您无法对使用整个磁盘加密或者分区(如 LUKS 加密或文件系统加密)的节点执行 Leapp 升级。这个限制会影响您已通过 dmcrypt: true
参数配置的 Ceph OSD 节点。
如果任何已知的限制会影响您的环境,则从 红帽技术支持团队寻求建议。
故障排除
有关排除潜在的 Leapp 问题的信息,请参阅从 RHEL 7 升级到 RHEL 8 中的 故障排除。
2.5. 支持的升级场景
在进行升级前,请检查是否支持您的 overcloud。
如果您不确定这些列表中没有提到的特定情况,请向红帽 技术支持团队寻求建议。
支持的场景
以下原位升级场景经过测试并被支持。
- 具有默认角色类型的标准环境: Controller、Compute 和 Ceph Storage OSD
- Split-Controller 可组合角色
-
Ceph Storage 可组合角色,包括 Ceph Storage 自定义配置,如
CephConfigOverrides
和CephAnsibleExtraConfig
- Hyper-Converged Infrastructure: Compute 和 Ceph Storage OSD 服务
- 具有网络功能虚拟化(NFV)技术的环境:单根输入/输出虚拟化(SR-IOV)和数据平面开发套件(DPDK)
启用实例 HA 的环境
注意在升级过程中,支持 nova 实时迁移。但是,由 Instance HA 启动的撤离不被支持。当您升级 Compute 节点时,节点会被完全关闭,且该节点上运行的工作负载都不会由 Instance HA 自动撤离。反之,您必须手动执行实时迁移。
技术预览
当您与这些功能结合使用时,升级的框架被视为技术预览,因此红帽并不完全支持它。您应该只在概念验证环境中测试这种情况,而不在生产环境中进行升级。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
- 边缘和分布式 Compute 节点(DCN)场景
2.6. 使用外部 Ceph 部署升级的注意事项
如果您独立部署了 Red Hat Ceph Storage 系统,然后使用 director 部署和配置 OpenStack,您可以使用 Red Hat OpenStack Platform 框架进行升级来执行带有外部 Ceph 部署的原位升级。这种情境与升级使用 director 部署的 Ceph 集群不同。
在规划和准备使用外部 Ceph 部署的原位升级时,您必须考虑的区别:
- 在将 Red Hat OpenStack Platform 部署从版本 13 升级到 16.2 之前,您必须将 Red Hat Ceph Storage 集群从版本 3 升级到版本 4。有关更多信息,请参阅 Red Hat Ceph Storage 4 安装指南中的升级 Red Hat Ceph Storage 集群。
- 将 Red Hat Ceph Storage 集群从版本 3 升级到版本 4 后,Red Hat OpenStack Platform 13 仍然可以运行 RHCSv3 客户端组件,但这些内容与 RHCSv4 集群兼容。
- 您可以遵循 Framework for Upgrades(13 到 16.2)文档中所述的升级路径,并在适用的情况下完成支持此特定情况的条件步骤。条件步骤的开头为以下语句:"如果您正在升级使用外部 Ceph 部署"。
-
在使用外部 Ceph 部署升级时,您将安装 RHCSv4
ceph-ansible
作为 overcloud 升级过程的一部分。当您升级使用 director 部署的 Ceph 集群时,您要在 overcloud 升级过程完成后安装 RHCSv4ceph-ansible
。
当您将 Red Hat Ceph Storage 集群从之前的版本升级到 4.2z2 时,升级会在 HEALTH_WARN
状态中使用存储集群完成,并带有指示 monitor 允许不安全 global_id
重新声明 的警告信息。这是因为补丁的 CVE(CVE-2021-20288),请参阅 带有 'mons 的 Ceph HEALTH_WARN,在安装到 RHCS 4.2z2(或更新版本)后允许 global_id reclaim'。
因为 HEALTH_WARN
状态是由于 CVE 造成的,因此可能会临时返回健康状况警告。但是,如果您执行警告时没有看到潜在的旧和未修补至集群的客户端,则存在风险。有关沟通健康警告的更多信息,请参阅 Red Hat Ceph Storage 文档中的升级 Red Hat Ceph Storage 集群。
2.7. 已知问题可能会阻止升级
查看以下已知问题,它们可能会影响成功升级。
- BZ#2228414 - Missing service_user for nova_compute 会导致 nova hybrid 状态失败
OpenStack Compute (nova)和 Openstack Block (cinder)服务需要服务令牌。在从 Red Hat OpenStack Platform (RHOSP) 13 升级到 16.2 的过程中,如果服务令牌没有配置,实时迁移会失败,并显示
nova-compute.log
中的以下错误:"2023-XX-xx xx:xx.xxx 8 ERROR oslo_messaging.rpc.server […] Exception during message handling: cinderclient.exceptions.ClientException: ConflictNovaUsingAttachment: Detach volume from instance XXXXXX using the Compute API (HTTP 409) (Request-ID: req-XXXXXX) "
要避免这个问题,请从 RHBA-2023:5163 应用修复 - 程序错误修复公告。您必须在 undercloud 升级后应用修复,但开始采用 overcloud 之前。
- BZ#1902849 - osp13-osp16.1 ffu 在以前从 osp8, osp10 升级的集群中失败
-
以前从 RHOSP 10 版本升级的 Red Hat OpenStack Platform(RHOSP)环境需要
python-docker
软件包来避免 BZ#1902849。有关更多信息,请参阅在旧的环境中缺少 python-docker 软件包的红帽知识库解决方案 osp13-osp16.1 ffu 失败。 - BZ#1925078 - RHOSP13-16.1 FFU: Overcloud 在尝试引用错误的 ceph 镜像失败后,控制器中的 Overcloud 升级挂起
在 OSP13 中使用 UEFI 引导和 UEFI 引导装载程序的系统可能会遇到 UEFI 问题:
-
/etc/fstab
没有更新 - 在 EFI 系统中错误地使用 GRUB-install
如需更多信息,请参阅红帽知识库解决方案 FFU 13 to 16.1: Leapp 无法更新基于 UEFI 的系统的内核,/etc/fstab 不包含 EFI 分区。
如果您的系统使用 UEFI,请联系红帽技术支持。
-
- BZ#1895887 - ovs+dpdk fail to attach device OvsDpdkHCI
在使用 Leapp 程序升级后,具有 OVS-DPDK 工作负载的 Compute 节点无法正常工作。要解决这个问题,请执行以下步骤之一:
在升级 Compute 节点前,删除
/etc/modules-load.d/vfio-pci.conf
文件。或者
升级 Compute 节点后,重启 Compute 节点上的
ovs-vswitchd
服务。此问题会影响 RHOSP 16.1.3。有关更多信息,请参阅 HCI 计算节点上框架从 OSP 13 升级到 16.1 后的红帽知识库解决方案 OVS-DPDK 错误。
- BZ#1923165 - OSP-16.2(升级)(TripleO)添加配置以在 RHEL-8.3 内核上禁用 Intel "TSX"
从 Red Hat Enterprise Linux (RHEL) 版本 8.3 开始,默认禁用对 Intel 事务同步扩展 (TSX) 功能的支持。这会导致以下迁移方案中主机间实例实时迁移问题:
- 从启用了 TSX 内核参数的主机迁移到禁用了 TSX 内核参数的主机。
在支持 TSX 功能的 Intel 主机中,实时迁移可能会失败。有关受此问题影响的 CPU 的更多信息,请参阅受影响的配置。
如需更多信息,请参阅以下红帽知识库解决方案有关 Intel TSX 对 OpenStack 客户端的影响的指南。
- BZ#2016144 - FFU 13-16.1: During Leapp upgrade reboot, openvswitch failed with error
Starting ovsdb-server ovsdb-server: /var/run/openvswitch/ovsdb-server.pid.tmp: create failed(Permission denied)
-
从之前版本升级的 Red Hat OpenStack Platform(RHOSP)环境可能会包含
/etc/systemd/system/ovs*
中的不必要的文件。在从 RHOSP 13 开始 overcloud 升级过程到 RHOSP 16.2 之前,您必须删除这些文件。 - BZ#2021525 - openstack overcloud upgrade run times out / HAProxy 容器无法启动
- 因为 SELinux 标签无效,从 Red Hat OpenStack Platform(RHOSP)13 升级到 RHOSP 16.2 可能会在部署步骤中失败。有关解决方案和更多信息,请参阅红帽知识库解决方案 Pacemaker 受管服务在 OSP13 - OSP16.x FFU 中可能无法重启。
- BZ#2027787 - Undercloud 升级到 16.2 会失败,因为存在 swtpm 的依赖项
-
advanced-virt-for-rhel-8-x86_64-rpms
和advanced-virt-for-rhel-8-x86_64-eus-rpms
存储库中存在一个已知问题,可防止升级成功。要在升级前禁用这些软件仓库,请参阅 OSP 16.2 中不再需要红帽知识库解决方案 advanced-virt-for-rhel-8-x86_64-rpms。 - BZ#2024447 - Identity service (keystone) password for the placement user was overridden by NovaPassword during FFU RHOSP 13 to 16
在从 Red Hat OpenStack Platform 13 升级到 16.2 的过程中,如果您为
NovaPassword
参数定义值但并非PlacementPassword
参数,则NovaPassword
参数会覆盖放置用户的 OpenStack Identity 服务(keystone)密码。要保留身份服务密码,请不要在parameter_defaults
部分中设置NovaPassword
或PlacementPassword
。如果在
parameter_defaults
部分中设置了这两个密码,则 Compute 节点可能无法与 control plane 通信,直到升级为止。有关升级 Compute 节点的更多信息,请参阅升级 Compute 节点。另外,如果使用
NovaPassword
、PlacementPassword
或两者在 RHOSP 13 上部署 overcloud,则必须从模板中删除这些密码,并在升级到 RHOSP 16.2 之前在 RHOSP 13 上运行openstack overcloud deploy
命令。- BZ#2141186 - Live migration fails due to qemu error during in-place upgrade
在从 Red Hat OpenStack Platform (RHOSP) 13 原位升级到 RHOSP 16.2 期间或之后,16.2 Compute 节点之间的实时迁移会失败,在具有以下配置的实例上失败:
- 启用多队列。
- 分配的 vcps 数量是 9 或更多。
- 该实例在 RHOSP 13 上运行。
要在升级过程中成功迁移 Compute 节点,请在自定义环境文件中添加以下参数:
parameter_defaults: ComputeExtraConfig: nova::compute::libvirt::max_queues: 8
在升级过程中运行以下命令时,包括更新的自定义环境文件:
-
OpenStack overcloud 升级准备
-
OpenStack overcloud 升级聚合
另外,在完成升级后,在运行
openstack overcloud deploy
命令时使用 参数包含自定义环境文件。如需更多信息,请参阅 因为 qemu 错误原位升级环境,红帽知识库解决方案实时迁移失败。
- BZ#2141393 - cephvolumescan actor fails
如果您的环境同时包含 Ceph 和非 Ceph 容器,Leapp 升级会失败,因为
cephvolumescan
actor 无法检索 ceph volumes 列表。要禁用
cephvolumescan
actor 并完成 Leapp 升级,请在模板中添加以下参数:parameter_defaults: LeappActorsToRemove: ['cephvolumescan']
- BZ#2164396 - FFU: Redhat satellite tools repository to be enabled for FFU (13 to 16.2)
- 如果您使用 Satellite 版本 6.7,当您为 RHEL 8 Server RPMs x86_64 软件仓库启用 Red Hat Satellite Tools 时,升级会失败。发生故障的原因是无法安装适当的软件包。红帽工程团队正在调查此问题的解决方案。
- BZ#2245602 - Upgrade (OSP16.2 →OSP17.1) controller-0 不会执行 leapp 升级,因为软件包缺少 ovn2.15 openvswitch2.15
如果您从 Red Hat OpenStack Platform (RHOSP) 13 升级到 16.1 或 16.2,或者从 RHOSP 16.2 升级到 17.1,请不要在
--answers-file answer-upgrade.yaml
文件中包含system_upgrade.yaml
文件。如果该文件中包含system_upgrade.yaml
文件,则environments/lifecycle/upgrade-prepare.yaml
文件会覆盖system_upgrade.yaml
文件中的参数。要避免这个问题,请将system_upgrade.yaml
文件附加到openstack overcloud upgrade prepare
命令中。例如:$ openstack overcloud upgrade prepare --answers-file answer-upgrade.yaml / -r roles-data.yaml / -n networking-data.yaml / -e system_upgrade.yaml / -e upgrade_environment.yaml /
在这个版本中,
system_upgrade.yaml
文件中配置的参数会覆盖 environment/lifecycle/upgrade-prepare.yaml 文件中的默认参数
。
Red Hat Ceph Storage Issues
- BZ#1855813 - Ceph 工具存储库应该只在聚合后从 RHCS3 切换到 RHCS4,然后再运行 external-upgrade
-
undercloud 上的
ceph-ansible
playbook 集合在 overcloud 上部署 Red Hat Ceph Storage 容器。要升级您的环境,您必须有 Red Hat Ceph Storage 3 版本的ceph-ansible
来通过升级来维护 Ceph Storage 3 容器。本指南包含有关如何在升级的过程中保留ceph-ansible
版本 3 的说明,直到准备升级到 Ceph Storage 4。在执行 13 到 16.2 升级前,您必须对 Red Hat OpenStack Platform 13 环境执行次要版本更新,并确保具有ceph-ansible
版本 3.2.46 或更高版本。
2.8. 备份和恢复
在升级 Red Hat OpenStack Platform 13 环境前,备份 undercloud 和 overcloud control plane。有关使用 Relax-and-recover(ReaR)程序备份节点的详情,请参考 Undercloud 和 Control Plane Back Up 和 Restore 指南。
- 在执行升级前备份节点。有关在升级前备份节点的更多信息,请参阅 Red Hat OpenStack Platform 13 Undercloud 和 Control Plane Back up and Restore。
- 您可以在每个节点升级后备份每个节点。有关备份升级节点的更多信息,请参阅 Red Hat OpenStack Platform 16.2 备份并恢复 undercloud 和 control plane 节点。
- 在执行 undercloud 升级前,您可以备份 undercloud 节点上运行的数据库。有关备份 undercloud 数据库的信息,请参阅 Red Hat OpenStack Platform 16.2 Backing up and restoring the undercloud and control plane nodes 指南中的 Creating a database backup of the undercloud node。
2.9. 次版本更新
在升级 Red Hat OpenStack Platform 环境前,请将环境更新至当前版本的最新次要版本。例如,在运行升级到 Red Hat OpenStack Platform 16.2 之前,将 Red Hat OpenStack Platform 13 环境更新到最新的 13 版本。
有关为 Red Hat OpenStack Platform 13 执行次要版本更新的说明,请参阅 保持 Red Hat OpenStack Platform Updated。
2.10. 代理配置
如果您将代理与 Red Hat OpenStack Platform 13 环境搭配使用,/etc/environment
文件中的代理配置将保留超过操作系统升级和 Red Hat OpenStack Platform 16.2 升级。
- 如需有关 Red Hat OpenStack Platform 13 代理配置的更多信息,请参阅使用 代理运行 undercloud 时的注意事项。
- 如需有关 Red Hat OpenStack Platform 16.2 代理配置的更多信息,请参阅使用 代理运行 undercloud 时的注意事项。
2.11. 删除 RHEL 注册资源
如果 DeleteOnRHELUnregistration
参数在现有环境文件或 rhel-registration.yaml
模板中被设置为 true
,则 overcloud 升级无法继续。在这种情况下,当您对最新的 Red Hat OpenStack Platform 13z 版本执行次要更新时,请将 DeleteOnRHELUnregistration
参数设置为 false
。
流程
-
在环境文件的
parameter_defaults
部分中,如果DeleteOnRHELUnregistration
参数设置为true
,请将 参数设置为false
。 -
运行
openstack overcloud update prepare
命令。 -
运行
openstack undercloud upgrade
命令。
2.12. 在升级前验证 Red Hat OpenStack Platform 13
升级到 Red Hat OpenStack Platform 16.2 前,使用 tripleo-validations
playbook 验证 undercloud 和 overcloud。在 Red Hat OpenStack Platform 13 中,您可以通过 OpenStack Workflow Service(mistral)运行这些 playbook。
如果您使用 CDN 或 Satellite 作为存储库源,验证会失败。要解决这个问题,请参阅红帽知识库解决方案,存储库 验证会失败,因为 SSL 证书错误。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:$ source ~/stackrc
创建一个名为
pre-upgrade-validations.sh
的 bash 脚本,并在脚本中包含以下内容:#!/bin/bash for VALIDATION in $(openstack action execution run tripleo.validations.list_validations '{"groups": ["pre-upgrade"]}' | jq ".result[] | .id") do echo "=== Running validation: $VALIDATION ===" STACK_NAME=$(openstack stack list -f value -c 'Stack Name') ID=$(openstack workflow execution create -f value -c ID tripleo.validations.v1.run_validation "{\"validation_name\": $VALIDATION, \"plan\": \"$STACK_NAME\"}") while [ $(openstack workflow execution show $ID -f value -c State) == "RUNNING" ] do sleep 1 done echo "" openstack workflow execution output show $ID | jq -r ".stdout" echo "" done
添加运行脚本的权限:
$ chmod +x pre-upgrade-validations.sh
运行脚本:
$ ./pre-upgrade-validations.sh
查看脚本输出以确定哪些验证成功失败:
=== Running validation: "check-ftype" === Success! The validation passed for all hosts: * undercloud
第 3 章 软件仓库
本节包含 undercloud 和 overcloud 的软件仓库。在某些情况下,在需要启用软件仓库时请参考此部分:
- 注册红帽客户门户网站时启用软件仓库。
- 启用并同步您的红帽卫星服务器存储库。
- 在注册到您的 Red Hat Satellite 服务器时启用存储库。
3.1. undercloud 软件仓库
RHOSP (RHOSP) 16.2 在 Red Hat Enterprise Linux (RHEL) 8.4 上运行。因此,您必须将这些软件仓库中的内容锁定到相应的 RHEL 版本。
-
如果使用 Red Hat Satellite 同步软件仓库,您可以启用 RHEL 软件仓库的特定版本。但是,无论选择的版本,仓库标签仍保持不变。例如,如果您启用 BaseOS 存储库的 8.4 版本,仓库名称会包括您启用的特定版本,但存储库标签仍然是
rhel-8-for-x86_64-baseos-eus-rpms
。 -
不再需要
advanced-virt-for-rhel-8-x86_64-rpms
和advanced-virt-for-rhel-8-x86_64-eus-rpms
存储库。要禁用这些软件仓库,请参阅 OSP 16.2 不再需要红帽知识库解决方案 advanced-virt-for-rhel-8-x86_64-rpms。
此处指定的软件仓库之外的任何软件仓库都不受支持。除非建议,请勿启用下表中所列之外的任何其他产品或软件仓库,否则可能会遇到依赖软件包问题。请勿启用 Extra Packages for Enterprise Linux (EPEL)。
核心软件仓库
下表列出了用于安装 undercloud 的核心软件仓库。
名称 | 软件仓库 | 要求说明 |
---|---|---|
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) Extended Update Support (EUS) |
| x86_64 系统的基本操作系统仓库。 |
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) |
| 包含 RHOSP 依赖项。 |
Red Hat Enterprise Linux 8 for x86_64 - High Availability (RPMs) Extended Update Support (EUS) |
| RHEL 的高可用性工具。用于 Controller 节点的高可用性功能。 |
Red Hat Ansible Engine 2.9 for RHEL 8 x86_64 (RPMs) |
| RHEL 的 Ansible Engine。用于提供最新版本的 Ansible。 |
RHOSP 16.2 for RHEL 8 (RPMs) |
| Core RHOSP 存储库,其中包含 RHOSP director 的软件包。 |
Red Hat Fast datapath for RHEL 8 (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。 |
Ceph 软件仓库
下表列出了用于 undercloud 的与 Ceph Storage 有关的软件仓库。
名称 | 软件仓库 | 要求说明 |
---|---|---|
Red Hat Ceph Storage Tools 4 for RHEL 8 x86_64 (RPMs) |
|
提供节点与 Ceph Storage 集群进行通信的工具。如果您计划在 overcloud 中使用 Ceph Storage,或者要与现有 Ceph Storage 集群集成,undercloud 需要此软件仓库的 |
IBM POWER 软件仓库
下表包含用于 POWER PC 架构上的 RHOSP 的软件仓库列表。使用这些软件仓库来替代核心软件仓库中的同等库。
名称 | 软件仓库 | 要求说明 |
---|---|---|
Red Hat Enterprise Linux for IBM Power,little endian - BaseOS (RPMs) |
| ppc64le 系统的基本操作系统软件仓库。 |
Red Hat Enterprise Linux 8 for IBM Power, little endian - AppStream (RPMs) |
| 包含 RHOSP 依赖项。 |
Red Hat Enterprise Linux 8 for IBM Power, little endian - High Availability (RPMs) |
| RHEL 的高可用性工具。用于 Controller 节点的高可用性功能。 |
Red Hat Fast Datapath for RHEL 8 IBM Power, little endian (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。 |
Red Hat Ansible Engine 2.9 for RHEL 8 IBM Power, little endian (RPMs) |
| RHEL 的 Ansible Engine。提供最新版本的 Ansible。 |
Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs) |
| ppc64le 系统的核心 RHOSP 存储库。 |
3.2. overcloud 软件仓库
Red Hat OpenStack Platform (RHOSP) 16.2 在 Red Hat Enterprise Linux (RHEL) 8.4 上运行。因此,您必须将这些软件仓库中的内容锁定到相应的 RHEL 版本。
-
如果使用 Red Hat Satellite 同步软件仓库,您可以启用 RHEL 软件仓库的特定版本。但是,无论选择的版本,仓库标签仍保持不变。例如,如果您启用 BaseOS 存储库的 8.4 版本,仓库名称会包括您启用的特定版本,但存储库标签仍然是
rhel-8-for-x86_64-baseos-eus-rpms
。 -
不再需要
advanced-virt-for-rhel-8-x86_64-rpms
和advanced-virt-for-rhel-8-x86_64-eus-rpms
存储库。要禁用这些软件仓库,请参阅 OSP 16.2 不再需要红帽知识库解决方案 advanced-virt-for-rhel-8-x86_64-rpms。
此处指定的软件仓库之外的任何软件仓库都不受支持。除非建议,请勿启用下表中所列之外的任何其他产品或软件仓库,否则可能会遇到依赖软件包问题。请勿启用 Extra Packages for Enterprise Linux (EPEL)。
Controller 节点软件仓库
下表列出了用于 overcloud 中 Controller 节点的核心软件仓库。
名称 | 软件仓库 | 要求说明 |
---|---|---|
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) Extended Update Support (EUS) |
| x86_64 系统的基本操作系统仓库。 |
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) |
| 包含 RHOSP 依赖项。 |
Red Hat Enterprise Linux 8 for x86_64 - High Availability (RPMs) Extended Update Support (EUS) |
| RHEL 的高可用性工具。 |
Red Hat Ansible Engine 2.9 for RHEL 8 x86_64 (RPMs) |
| RHEL 的 Ansible Engine。用于提供最新版本的 Ansible。 |
Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs) |
| 核心 RHOSP 存储库。 |
Red Hat Fast datapath for RHEL 8 (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。 |
Red Hat Ceph Storage Tools 4 for RHEL 8 x86_64 (RPMs) |
| 用于 RHEL 8 的 Red Hat Ceph Storage 4 的工具。 |
Compute 和 ComputeHCI 节点软件仓库
下表列出了 overcloud 中 Compute 和 ComputeHCI 节点的核心软件仓库。
名称 | 软件仓库 | 要求说明 |
---|---|---|
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) Extended Update Support (EUS) |
| x86_64 系统的基本操作系统仓库。 |
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) |
| 包含 RHOSP 依赖项。 |
Red Hat Enterprise Linux 8 for x86_64 - High Availability (RPMs) Extended Update Support (EUS) |
| RHEL 的高可用性工具。 |
Red Hat Ansible Engine 2.9 for RHEL 8 x86_64 (RPMs) |
| RHEL 的 Ansible Engine。用于提供最新版本的 Ansible。 |
Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs) |
| 核心 RHOSP 存储库。 |
Red Hat Fast datapath for RHEL 8 (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。 |
Red Hat Ceph Storage Tools 4 for RHEL 8 x86_64 (RPMs) |
| 用于 RHEL 8 的 Red Hat Ceph Storage 4 的工具。 |
Real Time Compute 软件仓库
下表列出了 Real Time Compute (RTC) 功能的软件仓库。
名称 | 软件仓库 | 要求说明 |
---|---|---|
Red Hat Enterprise Linux 8 for x86_64 - Real Time (RPMs) |
|
Real Time KVM (RT-KVM) 的软件仓库。包含用于启用实时内核的软件包。对 RT-KVM 为目标的所有 Compute 节点启用此软件仓库。注意:您需要单独订阅 |
Red Hat Enterprise Linux 8 for x86_64 - Real Time for NFV (RPMs) |
|
适用于 NFV 的实时 KVM (RT-KVM) 的软件仓库。包含用于启用实时内核的软件包。对以 RT-KVM 为目标的所有 NFV Compute 节点启用此软件仓库。注意:您需要单独订阅 |
Ceph Storage 节点软件仓库
下表列出了用于 overcloud 的与 Ceph Storage 有关的软件仓库。
名称 | 软件仓库 | 要求说明 |
---|---|---|
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) |
| x86_64 系统的基本操作系统仓库。 |
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) |
| 包含 RHOSP 依赖项。 |
Red Hat Enterprise Linux 8 for x86_64 - High Availability (RPMs) Extended Update Support (EUS) |
|
RHEL 的高可用性工具。注意:如果您使用了 Ceph Storage 角色的 |
Red Hat Ansible Engine 2.9 for RHEL 8 x86_64 (RPMs) |
| RHEL 的 Ansible Engine。用于提供最新版本的 Ansible。 |
Red Hat OpenStack Platform 16.2 Director Deployment Tools for RHEL 8 x86_64 (RPMs) |
|
帮助 director 配置 Ceph Storage 节点的软件包。此软件仓库包含在单机 Ceph Storage 订阅中。如果使用 OpenStack Platform 和 Ceph Storage 组合订阅,请使用 |
Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs) |
|
帮助 director 配置 Ceph Storage 节点的软件包。此软件仓库包含在 OpenStack Platform 和 Ceph Storage 组合订阅中。如果使用的是单机 Ceph Storage 订阅,则请使用 |
Red Hat Ceph Storage Tools 4 for RHEL 8 x86_64 (RPMs) |
| 提供节点与 Ceph Storage 集群进行通信的工具。 |
Red Hat Fast datapath for RHEL 8 (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。如果您在 Ceph Storage 节点上使用 OVS,请将此存储库添加到网络接口配置(NIC)模板中。 |
IBM POWER 软件仓库
下表列出了用于 RHOSP on POWER PC 架构的软件仓库。使用这些软件仓库来替代核心软件仓库中的同等库。
名称 | 软件仓库 | 要求说明 |
---|---|---|
Red Hat Enterprise Linux for IBM Power,little endian - BaseOS (RPMs) |
| ppc64le 系统的基本操作系统软件仓库。 |
Red Hat Enterprise Linux 8 for IBM Power, little endian - AppStream (RPMs) |
| 包含 RHOSP 依赖项。 |
Red Hat Enterprise Linux 8 for IBM Power, little endian - High Availability (RPMs) |
| RHEL 的高可用性工具。用于 Controller 节点的高可用性功能。 |
Red Hat Fast Datapath for RHEL 8 IBM Power, little endian (RPMS) |
| 为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。 |
Red Hat Ansible Engine 2.9 for RHEL 8 IBM Power, little endian (RPMs) |
| RHEL 的 Ansible Engine。用于提供最新版本的 Ansible。 |
Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs) |
| ppc64le 系统的核心 RHOSP 存储库。 |
3.3. Red Hat Satellite Server 6 considerations
如果您使用 Red Hat OpenStack Platform 环境使用 Red Hat Satellite Server 6 托管 RPM 和容器镜像,您必须考虑使用 Satellite 服务器 6 在 Red Hat OpenStack Platform 16.2 升级过程中的内容。
您当前环境的假设
- 您的 Satellite 服务器已托管 Red Hat OpenStack Platform 13 RPM 和容器镜像。
- 您已将 Red Hat OpenStack Platform 13 环境中的所有节点注册到卫星服务器。例如,您之前使用连接到 Red Hat OpenStack Platform 13 内容视图的激活码来将节点注册到 OpenStack Platform 13 内容。
Red Hat OpenStack Platform 升级的建议
- 为 Red Hat OpenStack Platform 13 和 overcloud 启用并同步所需的 RPM 存储库。这包括所需的 Red Hat Enterprise Linux 8.4 软件仓库。
在 Satellite 服务器上创建自定义产品来托管以下 Red Hat OpenStack Platform 版本的容器镜像:
- Red Hat OpenStack Platform 16.2
- Red Hat OpenStack Platform 15
为 Red Hat OpenStack Platform 16.2 升级创建并提升内容视图,并在内容视图中包含以下内容:
以下 Red Hat Enterprise Linux 7 软件仓库:
Red Hat Enterprise Linux 7 Server RPMs x86_64 7Server 或 Red Hat Enterprise Linux 7 Server RPMs x86_64 7.9
rhel-7-server-rpms x86_64 7Server or: rhel-7-server-rpms x86_64 7.9
Red Hat Enterprise Linux 7 Server - Extras RPMs x86_64
rhel-7-server-extras-rpms x86_64
- 所有 undercloud 和 overcloud RPM 软件仓库,包括 Red Hat Enterprise Linux 8.4 软件仓库。确保包含 Red Hat Enterprise Linux 软件仓库的正确版本,即 8.4。如果没有包含正确的版本,您可能会遇到启用 RHEL 8 软件仓库的问题。如需更多信息,请参阅使用 Red Hat Satellite 时的红帽知识库解决方案 RHEL 7 到 RHEL 8 LEAPP 升级 Failing。
- Red Hat OpenStack Platform 16.2 容器镜像。
- Red Hat OpenStack Platform 15 容器镜像。
- 将激活码与您为 Red Hat OpenStack Platform 16.2 升级创建的 Red Hat OpenStack Platform 16.2 内容视图相关联。
-
检查没有安装
katello-host-tools-fact-plugin
软件包的节点。Leapp 升级不会升级这个软件包,而在 Red Hat Enterprise Linux 8.4 系统中保留这个软件包会导致subscription-manager
报告错误。 - 您可以配置 Satellite 服务器以托管 Red Hat OpenStack Platform 16.2 容器镜像。如需更多信息,请参阅 Director 安装和使用中的为容器镜像准备 Satellite 服务器。
如果使用 Ceph 订阅并将 director 配置为将
overcloud-minimal
镜像用于 Ceph 存储节点,您必须创建内容视图并将以下 Red Hat Enterprise Linux(RHEL)8.4 软件仓库添加到其中:Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
rhel-8-for-x86_64-appstream-rpms x86_64 8.4
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
rhel-8-for-x86_64-baseos-rpms x86_64 8.4
如需更多信息,请参阅 Red Hat Satellite Content Management 指南中的 Importing Red Hat Content 和 Managing Content Views。
第 4 章 准备 undercloud 升级
执行 undercloud 升级前,您必须完成一些准备步骤,以便 undercloud 升级成功运行。
4.1. 使用外部 Ceph 先决条件升级
如果您要使用外部 Ceph 部署升级,在升级 Red Hat OpenStack Platform 部署前,您必须将 Red Hat Ceph Storage 集群从版本 3 升级到版本 4。有关更多信息,请参阅 Red Hat Ceph Storage 4 安装指南中的升级 Red Hat Ceph Storage 集群。
4.2. 新增内存要求
在 Red Hat OpenStack Platform 16.2 中,undercloud 有新的内存要求:
Red Hat OpenStack Platform 13 | Red Hat OpenStack Platform 16.2 |
---|---|
16 GB RAM | 24 GB RAM |
在进行升级前,请确保您的 undercloud 满足这些新要求。
4.3. 为 undercloud 节点使用可预测的 NIC 名称
在 undercloud 节点上运行 Leapp 升级前,您必须检查基于内核的 NIC 名称,该名称通常包含 eth
前缀。在 NIC 分配方面,这些 NIC 名称通常不可预测。
您可以运行 playbook-nics.yaml
playbook,将 NIC 名称重命名为使用 em
NIC 前缀。您还可以通过在运行 playbook 时修改 prefix 变量来设置不同的 NIC 前缀
。但是,只有 Leapp 升级过程完成后才会应用 NIC 更改,并重新引导节点。
流程
-
以
stack
用户的身份登录 undercloud。 创建名为
playbook-nics.yaml
的 Ansible playbook,并将以下内容复制到 playbook 中:--- - name: Rename eth devices hosts: all become: yes vars: prefix: "em" undercloud_conf: "/home/stack/undercloud.conf" osnet_conf: "/etc/os-net-config/config.json" tasks: - set_fact: eth_interfaces: "{{ ansible_interfaces | select('match','eth.*') | list }}" - debug: msg: "{{ eth_interfaces }}" - name: Update udev rules lineinfile: line: "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"{{ ansible_facts[item]['perm_macaddress'] | default(ansible_facts[item]['macaddress']) }}\", NAME=\"{{ item|replace('eth',prefix) }}\"" path: /etc/udev/rules.d/70-rhosp-persistent-net.rules create: True with_items: "{{ eth_interfaces }}" - name: Rename eth files block: - name: Check that eth files exists stat: path: /etc/sysconfig/network-scripts/ifcfg-{{ item }} register: nic_result with_items: "{{ eth_interfaces }}" - name: Copy nic files using the new prefix copy: remote_src: True src: "{{ item.stat.path }}" dest: "{{ item.stat.path|replace('eth',prefix) }}" with_items: "{{ nic_result.results }}" when: item.stat.exists - name: Edit NAME in new network-script files lineinfile: regexp: "^NAME=.*" line: "NAME={{ item.item|replace('eth',prefix) }}" path: "{{ item.stat.path|replace('eth',prefix) }}" with_items: "{{ nic_result.results }}" when: item.stat.exists - name: Edit DEVICE in new network-script files lineinfile: regexp: "^DEVICE=.*" line: "DEVICE={{ item.item|replace('eth',prefix) }}" path: "{{ item.stat.path|replace('eth',prefix) }}" with_items: "{{ nic_result.results }}" when: item.stat.exists - name: Backup old eth network-script files copy: remote_src: True src: "{{ item.stat.path }}" dest: "{{ item.stat.path }}.bak" with_items: "{{ nic_result.results }}" when: item.stat.exists - name: Remove old eth network-script files file: path: "{{ item.stat.path }}" state: absent with_items: "{{ nic_result.results }}" when: item.stat.exists - name: Rename route files block: - name: Check that route files exists stat: path: /etc/sysconfig/network-scripts/route-{{ item }} register: route_result with_items: "{{ eth_interfaces }}" - name: Copy route files using the new prefix copy: remote_src: True src: "{{ item.stat.path }}" dest: "{{ item.stat.path|replace('eth',prefix) }}" with_items: "{{ route_result.results }}" when: item.stat.exists - name: Update prefix in route files that use IP command arguments format replace: regexp: "eth" replace: "{{ prefix }}" path: "{{ item.stat.path|replace('eth',prefix) }}" with_items: "{{ route_result.results }}" when: item.stat.exists - name: Backup old route files copy: remote_src: True src: "{{ item.stat.path }}" dest: "{{ item.stat.path }}.bak" with_items: "{{ route_result.results }}" when: item.stat.exists - name: Remove old route files file: path: "{{ item.stat.path }}" state: absent with_items: "{{ route_result.results }}" when: item.stat.exists - name: Perform a final regex for any remaining eth prefixes in ifcfg files block: - name: Get a list of all ifcfg files find: paths: /etc/sysconfig/network-scripts/ patterns: 'ifcfg-*' excludes: '*.bak' register: ifcfg_files - name: Perform final regex on ifcfg files replace: path: "{{ item[0].path }}" regexp: "{{ item[1] }}" replace: "{{ item[1]|replace('eth',prefix) }}" with_nested: - "{{ ifcfg_files.files }}" - "{{ eth_interfaces }}" - name: Replace interface name in files referencing old eth interface block: - name: Check if undercloud.conf exists stat: path: "{{ undercloud_conf }}" register: undercloud_conf_stat - name: Replace interface name in undercloud.conf replace: path: "{{ undercloud_conf }}" regexp: 'eth(\d+)' replace: "{{ prefix }}\\1" when: undercloud_conf_stat.stat.exists - name: Check if os-net-config's config.json exists stat: path: "{{ osnet_conf }}" register: osnet_conf_stat - name: Replace interface name in config.json replace: path: "{{ osnet_conf }}" regexp: 'eth(\d+)' replace: "{{ prefix }}\\1" when: osnet_conf_stat.stat.exists - name: Patch vlan devices block: - name: Check that vlan files exists stat: path: /etc/sysconfig/network-scripts/ifcfg-{{ item }} register: nic_result when: item.startswith("vlan") with_items: "{{ ansible_interfaces }}" - name: Backup old vlan network-script files copy: remote_src: True src: "{{ item.stat.path }}" dest: "{{ item.stat.path }}.bak" when: item.item.startswith("vlan") and item.stat.exists with_items: "{{ nic_result.results }}" - name: Edit PHYSDEV in new network-script files replace: path: "{{ item.stat.path }}" regexp: "^PHYSDEV=eth" replace: "PHYSDEV={{ prefix }}" when: item.item.startswith("vlan") and item.stat.exists with_items: "{{ nic_result.results }}"
注意您将使用此 playbook 在升级过程的后续阶段重命名 overcloud NIC。
在 undercloud 上运行
playbook-nics.yaml
playbook:$ ansible-playbook -c local -i localhost, playbook-nics.yaml
playbook 将新 NIC 前缀设置为
em
。要设置不同的 NIC 前缀,请在运行 playbook 时设置前缀
变量:$ ansible-playbook -c local -i localhost, -e prefix="mynic" ~/playbook-nics.yaml
只有 Leapp 升级过程完成后才会应用 NIC 更改,并重新引导节点。
4.4. 在 undercloud 中设置 SSH root 权限参数
Leapp 升级检查 /etc/ssh/sshd_config
文件中是否存在 PermitRootLogin
参数。您必须将此参数明确设置为 yes
或 no
。
为了安全起见,请将此参数设置为 no
以禁用对 undercloud 上 root 用户的 SSH 访问。
流程
-
以
stack
用户的身份登录 undercloud。 检查
/etc/ssh/sshd_config
文件,以查找PermitRootLogin
参数:$ sudo grep PermitRootLogin /etc/ssh/sshd_config
如果
/etc/ssh/sshd_config
文件中没有参数,请编辑该文件并设置PermitRootLogin
参数:PermitRootLogin no
- 保存该文件。
4.5. 转换为下一代电源管理驱动程序
Red Hat OpenStack Platform 现在使用下一代驱动程序(也称为 硬件类型 )替换旧的驱动程序。
下表显示了与传统驱动程序与下一代硬件类型等效的类似比较:
旧驱动程序 | 新硬件类型 |
---|---|
|
|
|
|
|
|
|
|
VBMC ( |
|
|
|
在 OpenStack Platform 15 中,这些较旧的驱动程序已被删除,不再可以访问。在升级到 OpenStack Platform 16.2 之前,您必须更改硬件类型。
流程
检查当前启用的硬件类型列表:
$ source ~/stackrc $ openstack baremetal driver list --type dynamic
如果使用没有启用的硬件类型驱动程序,请使用
undercloud.conf
文件中的enabled_hardware_types
参数启用驱动程序:enabled_hardware_types = ipmi,redfish,idrac
保存文件并刷新 undercloud:
$ openstack undercloud install
运行以下命令,将
OLDDRIVER
和NEWDRIVER
变量用于电源管理类型:$ source ~/stackrc $ OLDDRIVER="pxe_ipmitool" $ NEWDRIVER="ipmi" $ for NODE in $(openstack baremetal node list --driver $OLDDRIVER -c UUID -f value) ; do openstack baremetal node set $NODE --driver $NEWDRIVER; done
第 5 章 升级 undercloud 操作系统
在升级 director 之前,必须将 undercloud 操作系统从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8。作为这个操作系统升级的一部分,您必须删除 Red Hat OpenStack Platform 13 软件包,然后运行 Leapp 程序来升级系统软件包。这个软件包删除和操作系统升级不会影响 undercloud 数据库。完成操作系统升级后,重新安装 director 软件包的 Red Hat OpenStack Platform 16.2 版本。
5.1. 删除 Red Hat OpenStack Platform director 软件包
在运行 Leapp 工具前,删除与 Red Hat Enterprise Linux 7 相关联的 Red Hat OpenStack Platform 13 软件包。这些软件包名称使用 el7ost
的发行版本后缀。有些 el7ost
保留在系统中,作为 subscription-manager
和 Leapp 工具的依赖项。
流程
-
以
stack
用户的身份登录 undercloud。 禁用 undercloud 上的 OpenStack 主服务:
$ sudo systemctl stop 'openstack-*' httpd haproxy mariadb 'rabbitmq*' docker xinetd
从 undercloud 中删除主要 OpenStack 服务,但 OpenvSwitch 和升级所需的某些 Python 2 软件包除外:
$ sudo yum -y remove '*el7ost*' 'galera*' 'haproxy*' \ httpd 'mysql*' 'pacemaker*' xinetd python-jsonpointer \ qemu-kvm-common-rhev qemu-img-rhev 'rabbit*' \ 'redis*' \ -- \ -'*openvswitch*' -python-docker -python-PyMySQL \ -python-pysocks -python2-asn1crypto -python2-babel \ -python2-cffi -python2-cryptography -python2-dateutil \ -python2-idna -python2-ipaddress -python2-jinja2 \ -python2-jsonpatch -python2-markupsafe -python2-pyOpenSSL \ -python2-requests -python2-six -python2-urllib3 \ -python-httplib2 -python-passlib -python2-netaddr -ceph-ansible
从
/etc/httpd
和/var/lib/docker
目录中删除内容:$ sudo rm -rf /etc/httpd /var/lib/docker
5.2. 在 undercloud 上执行 Leapp 升级
安装并运行 Leapp 工具将操作系统升级到 Red Hat Enterprise Linux(RHEL)8。
先决条件
- 在安装并运行 Leapp 前,请确定您已熟悉了 第 2.4 节 “Leapp Red Hat OpenStack Platform 中的升级使用” 部分。
- 执行 Leapp 升级前,请确定您完成 第 4.3 节 “为 undercloud 节点使用可预测的 NIC 名称” 部分。如果您在执行 Leapp 升级过程前没有重命名网络接口名称,则在升级到 RHEL 8.2 后接口名称可能会改变。
流程
-
以
stack
用户的身份登录 undercloud。 安装 Leapp 工具程序和 jq:
$ sudo yum install leapp $ sudo yum install jq
-
下载额外所需的数据文件(RPM 软件包的变化和 RPM 存储库映射),附加到 Leapp 程序所需的知识基本文档数据,以便从 RHEL 7 原位升级到 RHEL 8,并将这些文件放在
/etc/leapp/files/
目录中。 更新您的红帽订阅:
如果您的 undercloud 使用红帽客户门户网站进行注册,请刷新您当前的订阅以获取 Red Hat Enterprise Linux 8.4 内容的访问权限:
$ sudo subscription-manager refresh
如果您的 undercloud 使用 Red Hat Satellite Server 进行注册,请将 undercloud 重新注册到与 Red Hat OpenStack Platform(RHOSP)16.2 激活码关联的内容视图。
$ sudo subscription-manager register --force --org ORG --activationkey ACTIVATION_KEY
注意为 Red Hat OpenStack Platform 16.2 创建的内容视图必须包含 Red Hat Enterprise Linux 8.4 的内容。
Red Hat OpenStack Platform 16.2 使用了一个新版本的 Open vSwitch。通过
to_remove
和to_install
事务文件替换 Open vSwitch 版本:$ echo 'openvswitch2.11' | sudo tee -a /etc/leapp/transaction/to_remove $ echo 'openvswitch2.15' | sudo tee -a /etc/leapp/transaction/to_install
使用
to_keep
事务文件进行升级保留 Red Hat Ceph Storage 3 的ceph-ansible
版本:$ echo 'ceph-ansible' | sudo tee -a /etc/leapp/transaction/to_keep
调整 RHEL 8 不再支持的内核模块:
$ if [ -f /usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/kernel/checkkerneldrivers/files/removed_drivers.txt ]; then for module in pata_acpi floppy; do sudo sed -i "/^${module}$/d" /usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/kernel/checkkerneldrivers/files/removed_drivers.txt done else for module in pata_acpi floppy; do jq ". | del(.data[] | select(.driver_name == \"${module}\"))" /etc/leapp/files/device_driver_deprecation_data.json | sudo tee /etc/leapp/files/device_driver_deprecation_data.json_modified mv /etc/leapp/files/device_driver_deprecation_data.json_modified /etc/leapp/files/device_driver_deprecation_data.json done fi
删除
pam_pkcs11
模块:$ sudo leapp answer --add --section remove_pam_pkcs11_module_check.confirm=True
可选: 如果您的环境使用 TLS-Everywhere 架构进行了部署,并使用已弃用的
authconfig
程序在您的系统中配置身份验证,请使用authselect
程序配置 RHEL 8 系统:$ sudo leapp answer --add --section authselect_check.confirm=True
有关 Leapp 升级过程中验证配置的更多信息,请参阅从 RHEL 7 升级到 RHEL 8 时 的问题。
设置
LEAPP_DEVEL_TARGET_RELEASE
和LEAPP_UNSUPPORTED
环境变量,以指定您要升级到的 RHEL 8 次要版本。对于 RHOSP 16.2,必须将 RHEL 8 次版本设置为8.4
:$ export LEAPP_UNSUPPORTED=1 $ export LEAPP_DEVEL_TARGET_RELEASE=8.4
每次使用带有
LEAPP_DEVEL
前缀的环境变量时,您必须使用LEAPP_UNSUPPORTED
环境变量。从 Leapp 进程中删除持久性网络名称:
注意如果您在执行 Leapp 升级过程前没有重命名网络接口名称,则在升级到 RHEL 8.2 后接口名称可能会改变。有关重命名网络接口名称的详情请参考 第 4.3 节 “为 undercloud 节点使用可预测的 NIC 名称”。
$ sudo rm -f /usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/persistentnetnamesdisable/actor.py
启动 Leapp 升级过程:
$ sudo -E leapp upgrade --debug --enablerepo rhel-8-for-x86_64-baseos-eus-rpms --enablerepo rhel-8-for-x86_64-appstream-eus-rpms --enablerepo fast-datapath-for-rhel-8-x86_64-rpms --enablerepo ansible-2.9-for-rhel-8-x86_64-rpms
使用
--enablerepo
选项设置在 Leapp 升级过程中要启用的软件仓库。您必须包括这些软件仓库才能促进 Red Hat OpenStack Platform 16.2 转换,特别是与新版本的 Open vSwitch 一起。-
等待
leapp upgrade
命令成功完成。 在根目录中创建一个空
.autorelabel
文件:$ sudo touch /.autorelabel
重启后,SELinux 会检测到此文件并自动重新标记文件系统。
重新引导 undercloud:
$ sudo reboot
从 DNF 配置中定义的事务排除项中删除 Leapp 软件包:
$ sudo dnf config-manager --save --setopt exclude=''
5.3. 在 Leapp 升级后自定义基本软件包
您可以将主机从 Red Hat Enterprise Linux (RHEL) 7.9 升级到 RHEL 8.4 后,可以指定要安装的额外软件包。您可以使用 BaseTripleoPackages
变量在特定角色上自定义基本软件包。
例如,在将 Ceph Storage 节点升级到 RHEL 8.4 后,不再需要 python3-openstackclient
软件包。但是,如果您的部署需要此软件包,您可以将其包含在自定义模板的 BaseTripleoPackages
变量中。
步骤
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
在自定义模板中,添加
BaseTripleoPackages
变量,以在部署中包含其他软件包。例如:BaseTripleoPackages: - jq - lvm2 - net-snmp - openstack-selinux - os-net-config - puppet-tripleo - python3-heat-agent* - python3-openstackclient
第 6 章 升级 director
完成 undercloud 操作系统升级后,升级 director。操作系统升级后,来自以前的 Red Hat OpenStack Platform 13 undercloud 的数据库会停留在主机中。安装新的 Red Hat OpenStack Platform 16.2 软件包,并在运行 openstack undercloud upgrade
命令前为 Red Hat OpenStack Platform 16.2 容器镜像配置新源。
6.1. 将环境锁定到 Red Hat Enterprise Linux 发行版本中
Red Hat OpenStack Platform 16.2 支持 Red Hat Enterprise Linux 8.4。在执行更新前,必须将 undercloud 软件仓库锁定到 Red Hat Enterprise Linux 8.4 发行版本,以避免将操作系统升级到较新的次版本。
步骤
-
以
stack
用户的身份登录 undercloud。 使用
subscription-manager release
命令将 undercloud 锁定到特定版本:$ sudo subscription-manager release --set=8.4
6.2. 为 undercloud 启用软件仓库
启用 undercloud 所需的软件仓库,并将系统软件包更新至最新版本。
步骤
-
以
stack
用户身份登录 undercloud。 禁用所有默认的软件仓库,然后启用所需的 Red Hat Enterprise Linux 软件仓库:
[stack@director ~]$ sudo subscription-manager repos --disable=* [stack@director ~]$ sudo subscription-manager repos \ --enable=rhel-8-for-x86_64-baseos-tus-rpms \ --enable=rhel-8-for-x86_64-appstream-tus-rpms \ --enable=rhel-8-for-x86_64-highavailability-tus-rpms \ --enable=ansible-2.9-for-rhel-8-x86_64-rpms \ --enable=openstack-16.2-for-rhel-8-x86_64-rpms \ --enable=fast-datapath-for-rhel-8-x86_64-rpms
这些仓库包括了安装 director 所需的软件包。
将
container-tools
软件仓库模块设置为版本3.0
:[stack@director ~]$ sudo dnf module reset container-tools [stack@director ~]$ sudo dnf module enable -y container-tools:3.0
同步操作系统以确保您的系统软件包与操作系统版本匹配:
[stack@director ~]$ sudo dnf distro-sync -y [stack@director ~]$ sudo reboot
6.3. 安装 director 软件包
安装与 Red Hat OpenStack Platform director 相关的软件包。
步骤
安装用于安装和配置 director 的命令行工具:
[stack@director ~]$ sudo dnf install -y python3-tripleoclient
6.4. 准备容器镜像
undercloud 安装需要一个环境文件来确定从何处获取容器镜像以及如何存储它们。生成并自定义此环境文件,您可以使用这个文件准备容器镜像。
如果需要为您的 undercloud 配置特定的容器镜像版本,必须将镜像固定到特定的版本。有关更多信息,请参阅为 undercloud 固定容器镜像。
步骤
-
以
stack
用户身份登录 undercloud 主机。 生成默认的容器镜像准备文件:
$ sudo openstack tripleo container image prepare default \ --local-push-destination \ --output-env-file containers-prepare-parameter.yaml
此命令包括以下附加选项:
-
--local-push-destination
,在 undercloud 上设置 registry 作为存储容器镜像的位置。这意味着 director 从 Red Hat Container Catalog 拉取必要的镜像并将其推送到 undercloud 上的 registry 中。director 将该 registry 用作容器镜像源。如果直接从 Red Hat Container Catalog 拉取镜像,请忽略这个选项。 --output-env-file
是环境文件名称。此文件的内容包括用于准备您的容器镜像的参数。在本例中,文件的名称是containers-prepare-parameter.yaml
。注意您可以使用相同的
containers-prepare-parameter.yaml
文件为 undercloud 和 overcloud 定义容器镜像源。
-
-
修改
containers-prepare-parameter.yaml
以符合您的需求。
6.5. 容器镜像准备参数
用于准备您的容器的默认文件 (containers-prepare-parameter.yaml
) 包含 ContainerImagePrepare
heat 参数。此参数定义一个用于准备一系列镜像的策略列表:
parameter_defaults: ContainerImagePrepare: - (strategy one) - (strategy two) - (strategy three) ...
每一策略接受一组子参数,它们定义要使用哪些镜像以及对这些镜像执行哪些操作。下表包含有关您可与每个 ContainerImagePrepare
策略配合使用的子参数的信息:
参数 | 描述 |
---|---|
| 用于从策略中排除镜像名称的正则表达式列表。 |
|
用于在策略中包含的正则表达式列表。至少一个镜像名称必须与现有镜像匹配。如果指定了 |
|
要附加到目标镜像标签的字符串。例如,如果使用标签 16.2.3-5.161 拉取镜像并将 |
| 过滤想要修改的镜像的镜像标签字典。如果镜像与定义的标签匹配,则 director 将该镜像包括在修改过程中。 |
| 在上传期间但在将镜像推送到目标 registry 之前运行的 ansible 角色名称字符串。 |
|
要传递给 |
| 定义用于在上传过程中要将镜像推送到的 registry 的命名空间。
当直接从 Red Hat Container Catalog 拉取镜像时,如果在生产环境中将此参数设置为
如果 |
| 从中拉取原始容器镜像的源 registry 。 |
|
用于定义从何处获取初始镜像的 |
|
使用指定容器镜像元数据标签的值为每个镜像创建标签,并拉取该标记的镜像。例如,如果设置了 |
将镜像推送到 undercloud 时,请使用 push_destination: true
而不是 push_destination: UNDERCLOUD_IP:PORT
。push_destination: true
方法在 IPv4 和 IPv6 地址之间提供了一定程度的一致性。
set
参数接受一组 key: value
定义:
键 | 描述 |
---|---|
| Ceph Storage 容器镜像的名称。 |
| Ceph Storage 容器镜像的命名空间。 |
| Ceph Storage 容器镜像的标签。 |
| Ceph Storage Alert Manager 容器镜像的名称、命名空间和标签。 |
| Ceph Storage Grafana 容器镜像的名称、命名空间和标签。 |
| Ceph Storage 节点导出器容器镜像的名称、命名空间和标签。 |
| Ceph Storage Prometheus 容器镜像的名称、命名空间和标签。 |
| 各个 OpenStack 服务镜像的前缀。 |
| 各个 OpenStack 服务镜像的后缀。 |
| 各个 OpenStack 服务镜像的命名空间。 |
|
用于确定要使用的 OpenStack Networking (neutron) 容器的驱动程序。null 值代表使用标准的 |
|
为来自源的所有镜像设置特定的标签。如果没有定义,director 将 Red Hat OpenStack Platform 版本号用作默认值。此参数优先于 |
容器镜像使用基于 Red Hat OpenStack Platform 版本的多流标签。这意味着不再有 latest
标签。
6.6. 容器镜像标记准则
Red Hat Container Registry 使用特定的版本格式来标记所有 Red Hat OpenStack Platform 容器镜像。此格式遵循每个容器的标签元数据,即 version-release
。
- version
- 对应于 Red Hat OpenStack Platform 的主要和次要版本。这些版本充当包含一个或多个发行版本的流。
- release
- 对应于版本流中特定容器镜像版本的发行版本。
例如,如果 Red Hat OpenStack Platform 的最新版本为 16.2.3,容器镜像的发行版本为 5.161
,则生成的容器镜像标签为 16.2.3-5.161。
Red Hat Container Registry 还使用一组主要和次要 version
标签,链接到该容器镜像版本的最新发行版本。例如,16.2 和 16.2.3 链接到 16.2.3 容器流中的最新 release
。如果出现 16.2 的新次要发行版本,16.2 标签链接到新次要发行版本流的最新 release
,而 16.2.3 标签则继续链接到 16.2.3 流中的最新 release
。
ContainerImagePrepare
参数包含两个子参数,可用于确定要下载的容器镜像。这些子参数是 set
字典中的 tag
参数,以及 tag_from_label
参数。使用以下准则来确定要使用 tag
还是 tag_from_label
。
tag
的默认值是您的 OpenStack Platform 版本的主要版本。对于此版本,它是 16.2。这始终对应于最新的次要版本和发行版本。parameter_defaults: ContainerImagePrepare: - set: ... tag: 16.2 ...
要更改为 OpenStack Platform 容器镜像的特定次要版本,请将标签设置为次要版本。例如,若要更改为 16.2.2,可将
tag
设置为 16.2.2。parameter_defaults: ContainerImagePrepare: - set: ... tag: 16.2.2 ...
-
在设置
tag
时,director 始终会在安装和更新期间下载tag
中设置的版本的最新容器镜像release
。 如果没有设置
tag
,则 director 会结合使用tag_from_label
的值和最新的主要版本。parameter_defaults: ContainerImagePrepare: - set: ... # tag: 16.2 ... tag_from_label: '{version}-{release}'
tag_from_label
参数根据其从 Red Hat Container Registry 中检查到的最新容器镜像发行版本的标签元数据生成标签。例如,特定容器的标签可能会使用以下version
和release
元数据:"Labels": { "release": "5.161", "version": "16.2.3", ... }
-
tag_from_label
的默认值为{version}-{release}
,对应于每个容器镜像的版本和发行版本元数据标签。例如,如果容器镜像的version
设置为 16.2.3,release
设置为 5.161,生成的容器镜像标签为 16.2.3-5.161。 -
tag
参数始终优先于tag_from_label
参数。要使用tag_from_label
,在容器准备配置中省略tag
参数。 -
tag
和tag_from_label
之间的一个关键区别是:director 仅基于主要或次要版本标签使用tag
拉取镜像,Red Hat Container Registry 将这些标签链接到版本流中的最新镜像发行版本,而 director 使用tag_from_label
对每个容器镜像执行元数据检查,以便 director 生成标签并拉取对应的镜像。
6.7. 从私有 registry 获取容器镜像
registry.redhat.io
registry 需要身份验证才能访问和拉取镜像。要通过 registry.redhat.io
和其他私有 registry 进行身份验证,请在 containers-prepare-parameter.yaml
文件中包括 ContainerImageRegistryCredentials
和 ContainerImageRegistryLogin
参数。
ContainerImageRegistryCredentials
有些容器镜像 registry 需要进行身份验证才能访问镜像。在这种情况下,请使用您的 containers-prepare-parameter.yaml
环境文件中的 ContainerImageRegistryCredentials
参数。ContainerImageRegistryCredentials
参数使用一组基于私有 registry URL 的键。每个私有 registry URL 使用其自己的键和值对定义用户名(键)和密码(值)。这提供了一种为多个私有 registry 指定凭据的方法。
parameter_defaults: ContainerImagePrepare: - push_destination: true set: namespace: registry.redhat.io/... ... ContainerImageRegistryCredentials: registry.redhat.io: my_username: my_password
在示例中,用身份验证凭据替换 my_username
和 my_password
。红帽建议创建一个 registry 服务帐户并使用这些凭据访问 registry.redhat.io
内容,而不使用您的个人用户凭据。
要指定多个 registry 的身份验证详情,请在 ContainerImageRegistryCredentials
中为每个 registry 设置多个键对值:
parameter_defaults: ContainerImagePrepare: - push_destination: true set: namespace: registry.redhat.io/... ... - push_destination: true set: namespace: registry.internalsite.com/... ... ... ContainerImageRegistryCredentials: registry.redhat.io: myuser: 'p@55w0rd!' registry.internalsite.com: myuser2: '0th3rp@55w0rd!' '192.0.2.1:8787': myuser3: '@n0th3rp@55w0rd!'
默认 ContainerImagePrepare
参数从需要进行身份验证的 registry.redhat.io
拉取容器镜像。
如需更多信息,请参阅 Red Hat Container Registry 身份验证。
ContainerImageRegistryLogin
ContainerImageRegistryLogin
参数用于控制 overcloud 节点系统是否需要登录到远程 registry 来获取容器镜像。当您想让 overcloud 节点直接拉取镜像,而不是使用 undercloud 托管镜像时,会出现这种情况。
如果 push_destination
设置为 false 或未用于给定策略,则必须将 ContainerImageRegistryLogin
设置为 true
。
parameter_defaults: ContainerImagePrepare: - push_destination: false set: namespace: registry.redhat.io/... ... ... ContainerImageRegistryCredentials: registry.redhat.io: myuser: 'p@55w0rd!' ContainerImageRegistryLogin: true
但是,如果 overcloud 节点没有与 ContainerImageRegistryCredentials
中定义的 registry 主机的网络连接,并将此 ContainerImageRegistryLogin
设置为 true
,则尝试进行登录时部署可能会失败。如果 overcloud 节点没有与 ContainerImageRegistryCredentials
中定义的 registry 主机的网络连接,请将 push_destination
设置为 true
,将 ContainerImageRegistryLogin
设置为 false
,以便 overcloud 节点从 undercloud 拉取镜像。
parameter_defaults: ContainerImagePrepare: - push_destination: true set: namespace: registry.redhat.io/... ... ... ContainerImageRegistryCredentials: registry.redhat.io: myuser: 'p@55w0rd!' ContainerImageRegistryLogin: false
6.8. 为升级获取过渡容器
升级需要之前版本的 Red Hat OpenStack Platform 和 Red Hat Ceph Storage 的容器。这些容器有助于过渡到 Red Hat OpenStack Platform 16.2。
流程
-
以
stack
用户身份登录 undercloud 主机。 -
编辑
containers-prepare-parameter.yaml
文件。 添加 transitional 容器参数,以在
ContainerImagePrepare
参数中设置
。根据您的部署类型,以以下方式设置参数。如果您的部署使用了使用 director 部署的 Red Hat Ceph Storage 集群,请添加以下参数:
parameter_defaults: ContainerImagePrepare: - push_destination: true set: ... name_prefix_stein: openstack- name_suffix_stein: '' namespace_stein: registry.redhat.io/rhosp15-rhel8 tag_stein: 15.0 ceph3_namespace: registry.redhat.io/rhceph ceph3_tag: latest ceph3_image: rhceph-3-rhel7 ...
-
*_stein
参数为 Red Hat OpenStack Platform 15 定义容器镜像,升级过程用于数据库迁移。 -
ceph3_*
参数定义 overcloud 使用的当前 Red Hat Ceph Storage 容器镜像。overcloud 需要ceph3_*
和ceph_*
参数才能从 Red Hat Ceph Storage 3 转换到 4。 - 如果您使用 Red Hat Satellite Server 进行容器镜像存储,请将命名空间设置为 Red Hat Satellite 服务器上的镜像位置。
-
如果您的部署使用外部 Ceph Storage 集群,请添加以下参数:
parameter_defaults: ContainerImagePrepare: - push_destination: true set: ... name_prefix_stein: openstack- name_suffix_stein: '' namespace_stein: registry.redhat.io/rhosp15-rhel8 tag_stein: 15.0 ceph_namespace: registry.redhat.io/rhceph ceph_tag: latest ceph_image: rhceph-4-rhel8 ...
-
*_stein
参数为 Red Hat OpenStack Platform 15 定义容器镜像,升级过程用于数据库迁移。 -
ceph_*
参数定义 overcloud 使用的当前 Red Hat Ceph Storage 4 容器镜像。 - 如果您使用 Red Hat Satellite Server 进行容器镜像存储,请将命名空间设置为 Red Hat Satellite 服务器上的镜像位置。
-
将
neutron_driver
参数更改为openvswitch
:parameter_defaults: ContainerImagePrepare: - push_destination: true set: ... neutron_driver: openvswitch ...
升级在整个过程中保持 Open vSwitch 兼容性。完成升级到 Red Hat OpenStack Platform 16.2 后,您可以将 overcloud 从 Open vSwitch 迁移到 Open Virtual Network(OVN)。
-
保存
containers-prepare-parameter.yaml
文件。
6.9. 更新 undercloud.conf 文件
您可以继续使用 Red Hat OpenStack Platform 13 环境中的原始 undercloud.conf
文件,但必须修改该文件以保持与 Red Hat OpenStack Platform 16.2 的兼容性。
流程
-
以
stack
用户身份登录 undercloud 主机。 -
编辑
undercloud.conf
文件。 在文件的
DEFAULT
部分添加以下参数:container_images_file = /home/stack/containers-prepare-parameter.yaml
此参数定义
containers-prepare-parameter.yaml
环境文件的位置,以便 director 从正确的位置拉取 undercloud 的容器镜像。-
检查
generate_service_certificate
参数。此参数的默认值从false
变为true
,这会在升级过程中启用 undercloud 上的 SSL/TLS。 -
如果您已迁移到可预测的 NIC 命名规则,请检查
local_interface
参数。 -
如果您在 Red Hat OpenStack Platform 13 中设置
masquerade_network
参数,请删除此参数,并为每个子网设置masquerade = true
。 - 检查 文件中的所有其他参数,以了解任何更改。
- 保存该文件。
6.10. Director 配置参数
以下列表包含用于配置 undercloud.conf
文件的参数的相关信息。将所有参数保留在相关部分内以避免出错。
您至少必须将 container_images_file
参数设置为包含容器镜像配置的环境文件。如果没有将此参数正确设置为适当的文件,则 director 无法从 ContainerImagePrepare
参数获取容器镜像规则集,也无法从 ContainerImageRegistryCredentials
参数获取容器 registry 身份验证详情。
默认值
以下参数会在 undercloud.conf
文件的 [DEFAULT]
部分中进行定义:
- additional_architectures
overcloud 支持的附加(内核)架构的列表。目前,除了默认的
x86_64
架构外,overcloud 还支持ppc64le
架构。注意当启用对 ppc64le 的支持时,还必须将
ipxe_enabled
设为False
。有关使用多个 CPU 架构配置 undercloud 的更多信息,请参阅 配置多个 CPU 架构 overcloud。- certificate_generation_ca
-
为所请求证书签名的 CA 的
certmonger
别名。仅在设置了generate_service_certificate
参数的情况下使用此选项。如果您选择local
CA,certmonger 会将本地 CA 证书提取到/etc/pki/ca-trust/source/anchors/cm-local-ca.pem
并将该证书添加到信任链中。 - clean_nodes
- 确定是否在部署之间和内省之后擦除硬盘。
- cleanup
-
删除临时文件。把它设置为
False
以保留部署期间使用的临时文件。如果出现错误,临时文件可帮助您调试部署。 - container_cli
-
用于容器管理的 CLI 工具。将此参数设置为
podman
。Red Hat Enterprise Linux 8.4 仅支持podman
。 - container_healthcheck_disabled
-
禁用容器化服务运行状况检查。红帽建议您启用运行状况检查,并将此选项设置为
false
。 - container_images_file
含有容器镜像信息的 Heat 环境文件。此文件可能包含以下条目:
- 所有需要的容器镜像的参数
-
ContainerImagePrepare
参数(用于推动必要的镜像准备)。通常,含有此参数的文件被命名为containers-prepare-parameter.yaml
。
- container_insecure_registries
-
供
podman
使用的不安全 registry 列表。如果您想从其他来源(如私有容器 registry)拉取镜像,则使用此参数。在大多数情况下,如果在 Satellite 中注册了 undercloud,podman
就有从 Red Hat Container Catalog 或 Satellite Server 拉取容器镜像的证书。 - container_registry_mirror
-
配置的
podman
使用的可选registry-mirror
。 - custom_env_files
- 要添加到 undercloud 安装中的其他环境文件。
- deployment_user
-
安装 undercloud 的用户。如果此参数保留为不设置,则使用当前的默认用户
stack
。 - discovery_default_driver
-
为自动注册的节点设置默认驱动程序。需要启用
enable_node_discovery
参数,且必须在enabled_drivers
列表中包含驱动程序。 - enable_ironic; enable_ironic_inspector; enable_mistral; enable_nova; enable_tempest; enable_validations; enable_zaqar
-
定义要为 director 启用的核心服务。保留这些参数设为
true
。 - enable_node_discovery
-
自动注册通过 PXE 引导内省虚拟内存盘 (ramdisk) 的所有未知节点。新节点使用
fake
作为默认驱动程序,但您可以设置discovery_default_driver
覆盖它。您也可以使用内省规则为新注册的节点指定驱动程序信息。 - enable_novajoin
-
定义是否在 undercloud 中安装
novajoin
元数据服务。 - enable_routed_networks
- 定义是否支持路由的 control plane 网络。
- enable_swift_encryption
- 定义是否启用 Swift 加密。
- enable_telemetry
-
定义是否在 undercloud 中安装 OpenStack Telemetry 服务(gnocchi、aodh、panko)。如果您想自动安装和配置 telemetry 服务,则将
enable_telemetry
参数设为true
。默认值为false
,即在 undercloud 中禁用 telemetry。如果使用要利用指标数据的其他产品,如 Red Hat CloudForms,则需要这个参数。
每个组件不支持 RBAC。Alarming 服务(aodh)和 Gnocchi 不会考虑安全 RBAC 规则。
- enabled_hardware_types
- 要为 undercloud 启用的硬件类型的列表。
- generate_service_certificate
-
定义 undercloud 安装期间是否生成 SSL/TLS 证书,此证书用于
undercloud_service_certificate
参数。undercloud 安装会保存生成的证书/etc/pki/tls/certs/undercloud-[undercloud_public_vip].pem
。certificate_generation_ca
参数中定义的 CA 将为此证书签名。 - heat_container_image
- 要使用的 heat 容器镜像的 URL。请保留不设置。
- heat_native
-
使用
heat-all
运行基于主机的 undercloud 配置。请保留为true
。 - hieradata_override
-
在 director 上配置 Puppet hieradata 的
hieradata
覆盖文件的路径,为undercloud.conf
参数外的服务提供自定义配置。如果设置此参数,undercloud 安装会将此文件复制到/etc/puppet/hieradata
目录并将其设为层次结构中的第一个文件。有关使用此功能的更多信息,请参阅在 undercloud 上配置 hieradata。 - inspection_extras
-
指定在内省的过程中是否启用额外的硬件集合。此参数在内省镜像上需要
python-hardware
或python-hardware-detect
软件包。 - inspection_interface
-
该 director 用来进行节点内省的网桥。这是 director 配置创建的自定义网桥。
LOCAL_INTERFACE
会附加到这个网桥。请保留使用默认的值(br-ctlplane
)。 - inspection_runbench
-
在节点内省过程中运行一组基准测试。将此参数设为
true
以启用基准测试。如果您需要在检查注册节点的硬件时执行基准数据分析操作,则需要使用这个参数。 - ipa_otp
-
定义在 IPA 服务器注册 undercloud 节点使用的一次性密码。启用
enable_novajoin
之后需要提供此密码。 - ipv6_address_mode
undercloud 置备网络的 IPv6 地址配置模式。以下列表包含这个参数的可能值:
- dhcpv6-stateless - 使用路由器公告 (RA) 的地址配置以及使用 DHCPv6 的可选信息。
- DHCPv6-stateful - 地址配置和使用 DHCPv6 的可选信息。
- ipxe_enabled
-
定义使用 iPXE 还是标准的 PXE。默认为
true
,其启用 iPXE。将此参数设置为false
以使用标准 PXE。对于 PowerPC 部署,或混合了 PowerPC 和 x86 的部署,请将此值设置为false
。 - local_interface
指定 director Provisioning NIC 的接口。这也是该 director 用于 DHCP 和 PXE 引导服务的设备。把这个项的值改为您选择的设备。使用
ip addr
命令可以查看连接了哪些设备。以下是一个ip addr
命令的结果输出示例:2: em0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:75:24:09 brd ff:ff:ff:ff:ff:ff inet 192.168.122.178/24 brd 192.168.122.255 scope global dynamic em0 valid_lft 3462sec preferred_lft 3462sec inet6 fe80::5054:ff:fe75:2409/64 scope link valid_lft forever preferred_lft forever 3: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noop state DOWN link/ether 42:0b:c2:a5:c1:26 brd ff:ff:ff:ff:ff:ff
在这个例子中,External NIC 使用
em0
,Provisioning NIC 使用em1
(当前没有被配置)。在这种情况下,将local_interface
设置为em1
。配置脚本会把这个接口附加到一个自定义的网桥(由inspection_interface
参数定义)上。- local_ip
为 director Provisioning NIC 定义的 IP 地址。这也是 director 用于 DHCP 和 PXE 引导服务的 IP 地址。除非 Provisioning 网络需要使用其他子网(如该 IP 地址与环境中的现有 IP 地址或子网冲突)保留默认值
192.168.24.1/24
。对于 IPv6,本地 IP 地址前缀长度必须为
/64
,以支持有状态和无状态连接。- local_mtu
-
要用于
local_interface
的最大传输单元 (MTU)。对于 undercloud 不要超过 1500。 - local_subnet
-
要用于 PXE 引导和 DHCP 接口的本地子网。
local_ip
地址应该属于这个子网。默认值为ctlplane-subnet
。 - net_config_override
-
网络配置覆盖模板的路径。如果设置此参数,undercloud 将使用 JSON 或 YAML 格式的模板以使用
os-net-config
配置网络,并忽略undercloud.conf
中设置的网络参数。当您要配置绑定或向接口添加一个选项时,请使用此参数。有关自定义 undercloud 网络接口的更多信息,请参阅配置 undercloud 网络接口。 - networks_file
-
覆盖用于
heat
的网络文件。 - output_dir
- 输出状态目录、处理的 heat 模板和 Ansible 部署文件。
- overcloud_domain_name
要在部署 overcloud 时使用的 DNS 域名。
注意配置 overcloud 时,必须将
CloudDomain
参数设置为匹配的值。配置 overcloud 时,在环境文件中设置此参数。- roles_file
- 要用来覆盖用于 undercloud 安装的默认角色文件的角色文件。强烈建议您将此参数保留为不设置,以便 director 安装使用默认的角色文件。
- scheduler_max_attempts
- 调度程序尝试部署实例的次数上限。此值必须大于或等于您期望一次部署的裸机节点数,以避免调度时的潜在争用情形。
- service_principal
- 使用该证书的服务的 Kerberos 主体。仅在您的 CA 需要 Kerberos 主体(如在 FreeIPA 中)时使用此参数。
- subnets
-
用于置备和内省的路由网络子网的列表。默认值仅包括
ctlplane-subnet
子网。如需更多信息,请参阅 子网。 - templates
- 要覆盖的 heat 模板文件。
- undercloud_admin_host
通过 SSL/TLS 为 director Admin API 端点定义的 IP 地址或主机名。director 配置将 IP 地址作为路由的 IP 地址附加到 director 软件网桥,其使用
/32
子网掩码。如果
undercloud_admin_host
不在与local_ip
相同的 IP 网络中,您必须将ControlVirtualInterface
参数设置为 undercloud 上希望 admin API 侦听的接口。默认情况下,admin API 侦听br-ctlplane
接口。在自定义环境文件中设置ControlVirtualInterface
参数,并通过配置custom_env_files
参数在undercloud.conf
文件中包括自定义环境文件。有关自定义 undercloud 网络接口的详情,请参阅配置 undercloud 网络接口。
- undercloud_debug
-
把 undercloud 服务的日志级别设置为
DEBUG
。将此值设置为true
以启用DEBUG
日志级别。 - undercloud_enable_selinux
-
在部署期间启用或禁用 SELinux。除非调试问题,否则强烈建议保留此值设为
true
。 - undercloud_hostname
- 定义 undercloud 的完全限定主机名。如果设置,undercloud 安装将配置所有系统主机名设置。如果保留未设置,undercloud 将使用当前的主机名,但您必须相应地配置所有主机名设置。
- undercloud_log_file
-
用于存储 undercloud 安装和升级日志的日志文件的路径。默认情况下,日志文件是主目录中的
install-undercloud.log
。例如,/home/stack/install-undercloud.log
。 - undercloud_nameservers
- 用于 undercloud 主机名解析的 DNS 名称服务器列表。
- undercloud_ntp_servers
- 帮助同步 undercloud 日期和时间的网络时间协议服务器列表。
- undercloud_public_host
通过 SSL/TLS 为 director Public API 端点定义的 IP 地址或主机名。director 配置将 IP 地址作为路由的 IP 地址附加到 director 软件网桥,其使用
/32
子网掩码。如果
undercloud_public_host
不在与local_ip
相同的 IP 网络中,您必须将 publicVirtualInterface
参数设置为 undercloud 上需要公共 API 侦听的公共接口。默认情况下,公共 API 侦听br-ctlplane
接口。在自定义环境文件中设置PublicVirtualInterface
参数,并通过配置custom_env_files
参数在undercloud.conf
文件中包括自定义环境文件。有关自定义 undercloud 网络接口的详情,请参阅配置 undercloud 网络接口。
- undercloud_service_certificate
- 用于 OpenStack SSL/TLS 通信的证书的位置和文件名。理想的情况是从一个信任的证书认证机构获得这个证书。否则,生成自己的自签名证书。
- undercloud_timezone
- undercloud 的主机时区。如果未指定时区,director 将使用现有时区配置。
- undercloud_update_packages
- 定义是否在安装 undercloud 期间更新软件包。
子网
每个置备子网在 undercloud.conf
文件中都有一个对应的同名部分。例如,要创建称为 ctlplane-subnet
的子网,在 undercloud.conf
文件中使用以下示例:
[ctlplane-subnet] cidr = 192.168.24.0/24 dhcp_start = 192.168.24.5 dhcp_end = 192.168.24.24 inspection_iprange = 192.168.24.100,192.168.24.120 gateway = 192.168.24.1 masquerade = true
您可以根据自身环境所需来指定相应数量的置备网络。
director 在创建子网后无法更改子网的 IP 地址。
- cidr
-
director 用来管理 overcloud 实例的网络。这是 undercloud
neutron
服务管理的 Provisioning 网络。保留其默认值192.168.24.0/24
,除非您需要 Provisioning 网络使用其他子网。 - masquerade
定义是否伪装
cidr
中定义的用于外部访问的网络。这为 Provisioning 网络提供了网络地址转换(NAT),使 Provisioning 网络能够通过 director 进行外部访问。注意director 配置还使用相关
sysctl
内核参数自动启用 IP 转发。- dhcp_start; dhcp_end
overcloud 节点 DHCP 分配范围的开始值和终止值。确保此范围包含足够的 IP 地址,以分配给您的节点。如果没有为子网指定,director 通过删除为
local_ip
、gateway
、undercloud_admin_host
、undercloud_public_host、undercloud_public_host
以及inspection_iprange
参数的值来确定分配池。您可以通过指定启动和结束地址对列表,为 undercloud control plane 子网配置非持续分配池。另外,您可以使用
dhcp_exclude
选项排除 IP 地址范围中的 IP 地址。例如,以下配置同时创建分配池172.20.0.100-172.20.0.150
和172.20.0.200-172.20.0.250
:选项 1
dhcp_start = 172.20.0.100,172.20.0.200 dhcp_end = 172.20.0.150,172.20.0.250
选项 2
dhcp_start = 172.20.0.100 dhcp_end = 172.20.0.250 dhcp_exclude = 172.20.0.151-172.20.0.199
- dhcp_exclude
DHCP 分配范围中排除的 IP 地址。例如,以下配置排除 IP 地址
172.20.0.105
和 IP 地址范围172.20.0.210-172.20.0.219
:dhcp_exclude = 172.20.0.105,172.20.0.210-172.20.0.219
- dns_nameservers
-
特定于子网的 DNS 名称服务器。如果没有为子网定义名称服务器,子网将使用
undercloud_nameservers
参数中定义的名称服务器。 - gateway
-
overcloud 实例的网关。它是 undercloud 主机,会把网络流量转发到外部网络。保留其默认值
192.168.24.1
,除非您需要 director 使用其他 IP 地址,或想直接使用外部网关。 - host_routes
-
此网络上 overcloud 实例的 Neutron 管理的子网的主机路由。这也为 undercloud 上的
local_subnet
配置主机路由。 - inspection_iprange
-
在检查过程中,此网络上的节点要使用的临时 IP 范围。这个范围不得与
dhcp_start
和dhcp_ end
定义的范围重叠,但必须位于同一个 IP 子网中。
6.11. 运行 director 升级
完成以下步骤以升级 director。
流程
运行以下命令,在 undercloud 上升级 director:
$ openstack undercloud upgrade
此命令会启动 director 配置脚本。director 升级其软件包并配置其服务,使其服务适合
undercloud.conf
中的设置。这个脚本会需要一些时间来完成。注意在继续操作前,director 配置脚本会提示确认。使用
-y
选项绕过此确认:$ openstack undercloud upgrade -y
此脚本还会自动启动 undercloud 上的所有 OpenStack Platform 服务容器。您可以通过
systemd
资源管理每个服务。检查systemd
资源:$ sudo systemctl list-units "tripleo_*"
每个
systemd
服务都控制一个容器。使用以下命令来检查已启用的容器:$ sudo podman ps
该脚本将
stack
用户添加到docker
组,以确保stack
用户有权访问容器管理命令。使用以下命令刷新stack
用户权限:$ exec su -l stack
该命令提示您再次登录。输入 stack 用户密码。
运行以下命令初始化
stack
用户来使用命令行工具:$ source ~/stackrc
提示信息现在指示,OpenStack 命令在对 undercloud 验证身份并执行命令;
(undercloud) $
director 升级已完成。
第 7 章 overcloud 准备的初始步骤
您必须完成一些初始步骤,以便为 overcloud 升级做准备。
7.1. 准备 overcloud 服务停机时间
overcloud 升级过程在关键点禁用主 control plane 服务。当达到这些关键点时,您无法使用任何 overcloud 服务来创建新的资源。在升级过程中,overcloud 运行的工作负载会保持活跃状态,这意味着在升级 control plane 时实例继续运行。在升级 Compute 节点期间,这些工作负载可以实时迁移到已升级的 Compute 节点。
务必要规划维护窗口,以确保在升级过程中无法访问 overcloud 服务。
受 overcloud 升级的影响
- OpenStack Platform 服务
不受 overcloud 升级的影响
- 升级过程中运行的实例
- Ceph 存储 OSD(实例的后端存储)
- Linux 网络
- Open vSwitch 网络
- undercloud
7.2. 选择 Compute 节点进行升级测试
Overcloud 升级过程允许您:
- 升级角色中的所有节点
- 独立节点
为确保 overcloud 平稳升级过程,在升级所有 Compute 节点前,对环境中几个单独 Compute 节点的升级很有用。这样可保证在升级过程中不会发生重大问题,同时保持到工作负载的停机时间。
使用以下建议来帮助选择测试节点进行升级:
- 选择两个或三个 Compute 节点以升级测试
- 选择没有运行任何关键实例的节点
- 如有必要,将关键实例从所选测试 Compute 节点迁移到其他 Compute 节点
7.3. 创建 overcloud 清单文件
使用 tripleo-ansible-inventory
命令生成环境中所有节点的 Ansible 清单文件。
流程
-
以
stack
用户的身份登录 undercloud。 source
stackrc
文件:$ source ~/stackrc
创建所有节点的静态清单文件:
$ tripleo-ansible-inventory --static-yaml-inventory ~/inventory.yaml --stack <STACK_NAME> --ansible_ssh_user heat-admin
如果不使用默认的
overcloud
堆栈名称,请将 <STACK NAME
> 替换为堆栈的名称。要在您的环境中执行 Ansible playbook,请运行
ansible-playbook
命令,并使用-i
选项包括动态清单工具的完整路径。例如:(undercloud) $ ansible-playbook -i ~/inventory.yaml <PLAYBOOK>
7.4. 验证预升级要求
运行 预升级
验证组检查预升级要求。
有关 Red Hat OpenStack Platform (RHOSP) 验证框架的更多信息,请参阅 Director 安装和使用指南中的使用验证框架。
流程
source
stackrc
文件:$ source ~/stackrc
使用
--group pre-upgrade
选项运行openstack tripleo validator run
命令,并包含/usr/libexec/platform-python
python 运行时环境:$ openstack tripleo validator run --group pre-upgrade --python-interpreter /usr/libexec/platform-python -i inventory.yaml
注意确保包含要检查的软件包列表。
您可以使用命令中的 --extra-vars
或--extra-vars-file
通过 CLI 提供列表。如需更多信息,请参阅 tripleo validator run 的命令参数。查看验证报告的结果。要查看特定验证的详细输出,请根据报告中具体验证的 UUID 运行
openstack tripleo validator show run --full
命令:$ openstack tripleo validator show run --full <UUID>
FAILED
验证不会阻止您部署或运行 RHOSP。但是,FAILED
验证可能会显示生产环境中潜在的问题。
7.5. 在 overcloud 中禁用隔离
在升级 overcloud 之前,请确保已禁用隔离功能。
升级 overcloud 时,您可以单独升级每个 Controller 节点来保留高可用性功能。如果在您的环境中部署隔离,overcloud 可能会检测到特定的节点已被禁用,并尝试尝试隔离操作,这可能会导致意外的结果。
如果在 overcloud 中启用了隔离功能,您必须临时在升级期间禁用隔离,以避免产生任何意外的结果。
流程
-
以
stack
用户的身份登录 undercloud。 source
stackrc
文件:$ source ~/stackrc
登录到 Controller 节点,并运行 Pacemaker 命令以禁用隔离:
$ ssh heat-admin@<controller_ip> "sudo pcs property set stonith-enabled=false"
将
<controller_ip
> 替换为 Controller 节点的 IP 地址。您可以使用openstack server list
命令查找 Controller 节点的 IP 地址。-
在
fencing.yaml
环境文件中,将EnableFencing
参数设置为false
,以确保隔离在升级过程中禁用。
7.6. 检查自定义 Puppet 参数
如果您使用 ExtraConfig
接口来自定义 Puppet 参数,则 Puppet 可能会在升级过程中报告重复声明错误。这是因为 puppet 模块本身提供的接口有变化。
此流程演示了如何检查环境文件中的任何自定义 ExtraConfig
hieradata 参数。
流程
选择一个环境文件,检查它是否有
ExtraConfig
参数:$ grep ExtraConfig ~/templates/custom-config.yaml
-
如果结果在所选文件中显示
ExtraConfig
参数(如ControllerExtraConfig
),请检查该文件中的完整参数结构。 如果参数包含
SECTION/parameter
语法后跟一个值
的任何 puppet Hierdata,则它可能已被替换为实际 Puppet 类的参数。例如:parameter_defaults: ExtraConfig: neutron::config::dhcp_agent_config: 'DEFAULT/dnsmasq_local_resolv': value: 'true'
检查 director 的 Puppet 模块,以查看参数现在存在于 Puppet 类中。例如:
$ grep dnsmasq_local_resolv
如果是,请更改为新接口。
以下是演示语法更改的示例:
示例 1:
parameter_defaults: ExtraConfig: neutron::config::dhcp_agent_config: 'DEFAULT/dnsmasq_local_resolv': value: 'true'
更改:
parameter_defaults: ExtraConfig: neutron::agents::dhcp::dnsmasq_local_resolv: true
示例 2:
parameter_defaults: ExtraConfig: ceilometer::config::ceilometer_config: 'oslo_messaging_rabbit/rabbit_qos_prefetch_count': value: '32'
更改:
parameter_defaults: ExtraConfig: oslo::messaging::rabbit::rabbit_qos_prefetch_count: '32'
第 8 章 为 Leapp 升级配置 overcloud
Red Hat OpenStack Platform(RHOSP)升级需要基本操作系统从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8。Red Hat Enterprise Linux 7 使用 Leapp 程序对 Red Hat Enterprise Linux 8 执行升级。有关 Leapp 及其依赖软件包的更多信息,请参阅 为升级准备 RHEL 7 系统。
overcloud 升级框架自动运行 leapp 升级。为确保 RHOSP 升级成功,建议您手动运行预升级报告来识别并解决潜在问题。对每个计算、控制器和 Ceph 存储角色至少一个主机运行预升级报告。有关 Leapp 预升级报告的更多信息,请参阅 检查预升级报告。
8.1. 创建升级环境文件
升级过程使用环境文件来启用升级过程并配置特定的升级参数。
流程
-
以
stack
用户的身份登录 undercloud。 在
templates
目录中创建一个名为 upgrade-environment.yaml
的环境文件:$ touch templates/upgrades-environment.yaml
编辑该文件并添加以下强制内容:
parameter_defaults: UpgradeLeappCommandOptions: " --enablerepo rhel-8-for-x86_64-baseos-eus-rpms --enablerepo rhel-8-for-x86_64-appstream-eus-rpms --enablerepo rhel-8-for-x86_64-highavailability-eus-rpms --enablerepo ansible-2.9-for-rhel-8-x86_64-rpms --enablerepo fast-datapath-for-rhel-8-x86_64-rpms "
有关您可以在环境文件中配置的升级参数的更多信息,请参阅升级 参数。
-
保存 upgrade
-environment.yaml
文件。
8.2. 升级参数
您可以使用升级参数修改升级过程的行为。
参数 | 描述 |
---|---|
| 在所有 overcloud 节点上运行的命令或脚本片段以初始化升级过程。例如,仓库开关。 |
| 升级过程所需的常用命令。这通常不应该由 Operator 修改,并在 major-upgrade-composable-steps.yaml 和 major-upgrade-converge.yaml 环境文件中设置和取消设置。 |
| 附加到 Leapp 命令的其他命令行选项。 |
|
运行 Leapp 时打印调试输出。默认值为 |
| 在 development/testing 中运行 Leapp 时,通过设置 env 变量跳过 Leapp 检查。例如: LEAPP_DEVEL_SKIP_RHSM=1。 |
|
使用 Leapp 进行操作系统升级。默认值为 |
|
等待机器重启并响应 test 命令的最大(秒)。默认值为 |
|
通过 Leapp 进行 OS 升级阶段的超时(秒)。默认值为 |
| Leapp 升级后要安装的软件包列表。 |
| Leapp 升级过程中要删除的软件包列表。 |
8.3. 为 overcloud 节点使用可预测的 NIC 名称
在 overcloud 节点上运行 Leapp 升级前,您必须检查基于内核的 NIC 名称,该名称通常包含 eth
前缀。在 NIC 分配方面,这些 NIC 名称通常不可预测。
您可以运行 playbook-nics.yaml
playbook,将 NIC 名称重命名为使用 em
NIC 前缀。您还可以通过在运行 playbook 时修改 prefix 变量来设置不同的 NIC 前缀
。但是,只有 Leapp 升级过程完成后才会应用 NIC 更改,并重新引导节点。
先决条件
在 undercloud 准备过程中创建的
playbook-nics.yaml
playbook。playbook-nics.yaml
playbook 适合使用以太网设备、桥接和 Linux 绑定的大部分 overcloud 网络场景。如果您的环境除了这些设备类型之外还需要额外的配置,请在继续前遵循这些建议:- 在单独的系统中测试 playbook,其与 overcloud 节点类似的网络配置
-
修改 playbook,以在其他设备类型的配置内重命名
eth
前缀 - 完成此步骤后,检查 overcloud 节点的网络配置
流程
-
以
stack
用户的身份登录 undercloud。 在所有 overcloud 节点上运行
playbook-nics.yaml
playbook:$ ansible-playbook -i ~/inventory.yaml playbook-nics.yaml
playbook 将新 NIC 前缀设置为
em
。要设置不同的 NIC 前缀,请在运行 playbook 时设置前缀
变量:$ ansible-playbook -i ~/inventory.yaml -e prefix="mynic" playbook-nics.yaml
只有 Leapp 升级过程完成后才会应用 NIC 更改,并重新引导节点。
第 9 章 更新可组合的服务和参数
您必须完成一些可组合服务配置,以便为 overcloud 升级进行准备。
9.1. 在自定义 roles_data
文件中更新可组合服务
本节介绍新的和弃用的可组合服务。
-
如果您使用默认的
roles_data
文件,则会自动包含这些服务。 -
如果您使用自定义
roles_data
文件,请添加新服务,并为每个相关角色删除已弃用的服务。
如果部署中的任何 overcloud 节点是专用 Object Storage(swift)节点,您必须复制默认的 roles_data.yaml
文件并编辑 ObjectStorage
以删除以下行: deprecated_server_resource_name: 'SwiftStorage'
Controller 节点
Controller 节点弃用了以下服务。从控制器角色中删除它们。
服务 | 原因 |
---|---|
| OpenStack 遥测服务在指标和监控的 Service Telemetry Framework(STF)中被弃用。传统的遥测服务只在 RHOSP 16.2 中提供,以帮助促进到 STF 的转换,并将在以后的 RHOSP 版本中删除。 注意 如果使用自动扩展,请不要从 Controller 节点中删除这些服务。 |
| OpenStack 遥测服务在指标和监控的 Service Telemetry Framework(STF)中被弃用。传统的遥测服务只在 RHOSP 16.2 中提供,以帮助促进到 STF 的转换,并将在以后的 RHOSP 版本中删除。 注意 如果使用 CloudForms,请不要从 Controller 节点中删除这些服务。 |
| 这些服务不再被支持。从 Controller 节点中删除这些服务。 |
| 不再支持 Congres。 |
| 由于 OpenStack Platform Image Service(glance)API v2,所以这个服务不再被支持。 |
| OpenStack Networking(neutron)已弃用的插件。 |
| OpenStack Networking(neutron)Load Balancing 作为 Octavia 被弃用的服务。 |
| 此服务已删除。 |
|
弃用了 |
| OpenDaylight 不再被支持。 |
| 这个服务已被替换为两个新服务:
|
| Skydive 已不再受支持。 |
| Tacker 不再被支持。 |
| Gnocchi 已被弃用,并将在以后的 RHOSP 发行版本中删除。 |
| Panko 已被弃用,并将在以后的 RHOSP 发行版本中删除。 |
以下服务是 Controller 节点的新服务。将它们添加到您的 Controller 角色。
服务 | 原因 |
---|---|
| 启用 Ceph Dashboard 服务的任务。 |
| Block Storage (cinder) 的新后端。 |
| 运行 命令,以自动拉取和准备与 overcloud 中服务相关的容器镜像。 |
| DNS 即服务的服务(指定)。 |
| overcloud 的裸机内省服务。 |
| OpenStack Bare Metal(ironic)的网络代理。 |
| Mellanox InfiniBand 的 OpenStack Networking(neutron)代理服务。 |
| 用于安装 Red Hat OpenStack Platform 命令行工具的服务。 |
|
替换 |
| 放置 API 的服务。 |
Compute 节点
Compute 节点弃用了以下服务。从您的 Compute 角色中删除它们。
服务 | 原因 |
---|---|
| OpenDaylight 不再被支持。 |
| Skydive 已不再受支持。 |
下列服务是 Compute 节点的新服务。将它们添加到您的 Compute 角色。
服务 | 原因 |
---|---|
| 在 OpenStack Compute(nova)中配置主机聚合和可用性区域的服务。 |
所有节点
在所有节点中,以下服务都已弃用。从一个所有角色中移除它们。
服务 | 原因 |
---|---|
| 使用 Podman 替代。 |
|
在 |
|
在 |
| 弃用的服务。 |
|
在 |
以下服务适用于所有节点:将它们添加到所有角色。
服务 | 原因 |
---|---|
| 设置内核参数、Tuned 配置集和 CPU 隔离的服务。 |
| 用于配置折叠服务。 |
| 提供一个多路径服务,默认是禁用的 |
| 要安装并启用 Podman 的服务。 |
| 要安装并启用 Relax-and-Recover(ReaR)备份和恢复工具的服务。 |
| 用于配置集中日志收集的服务。 |
| 启用时间同步方法的服务,默认为 Chronyd。 |
9.2. 在自定义环境文件中更新可组合服务
如果您有任何带有 resource_registry
部分的自定义环境文件,请检查 resource_registry
部分是否有可组合服务模板映射的更改。Red Hat OpenStack Platform 16.2 的可组合服务文件位于 /usr/share/openstack-tripleo-heat-templates/
中的一个新位置:
Red Hat OpenStack Platform 13 | Red Hat OpenStack Platform 16.2 |
---|---|
|
|
部署
目录包含一组子目录来分组可组合服务。例如,keystone
子目录包含 OpenStack Identity(keystone)的可组合服务模板。
要在自定义环境文件中重新映射可组合服务,请检查当前服务映射的模板位置,并编辑到新位置的映射。此流程使用 ceph-mgr.yaml
作为示例。
这个过程只作为重新映射可映射服务的指南。如果您不确定任何映射,请联系红帽 并提出有关正确映射的建议。
流程
搜索使用可组合服务的自定义环境文件。您通常会将自定义环境文件存储在
/home/stack/templates
目录中:$ cd ~/templates/ $ grep "OS::TripleO::Services" *
在这种情况下,其中一个文件会显示过时的映射:
OS::TripleO::Services::CephMgr: /usr/share/openstack-tripleo-heat-templates/docker/services/ceph-ansible/ceph-mgr.yaml
识别
/usr/share/openstack-tripleo-heat-templates/
中的新ceph-mgr.yaml
位置。此文件现在位于 'deployment/ceph-ansible' 目录中:$ find /usr/share/openstack-tripleo-heat-templates/ -name ceph-mgr.yaml /usr/share/openstack-tripleo-heat-templates/deployment/ceph-ansible/ceph-mgr.yaml
编辑自定义环境文件中的服务:
resource_registry: OS::TripleO::Services::CephMgr: /usr/share/openstack-tripleo-heat-templates/deployment/ceph-ansible/ceph-mgr.yaml
保存该文件。
9.3. 配置对 undercloud registry 的访问
要配置对 undercloud registry 的访问,请将 undercloud 的 control plane 主机名和 undercloud 的 IP 地址添加到 DockerInsecureRegistryAddress
参数。将此参数放在 containers-prepare-parameter.yaml
文件中,以确保 参数包含在未来的 overcloud 部署中。
流程
-
以
stack
用户的身份登录 undercloud。 获取 undercloud 上的 control plane 主机名:
$ sudo hiera container_image_prepare_node_names ["undercloud.ctlplane.localdomain"]
编辑
containers-prepare-parameter.yaml
文件,并在 provisioning 网络上添加DockerInsecureRegistryAddress
参数,其中包含 undercloud 的 control plane 主机名和 undercloud 的 IP 地址:parameter_defaults: DockerInsecureRegistryAddress: - undercloud.ctlplane.localdomain:8787 - 192.168.24.1:8787 ...
您还必须将 overcloud registry 的端口号附加到主机名和 IP 地址值。端口号是
8787
。
9.4. 弃用并移除了 NovaSchedulerDefaultFilters 参数的过滤器
如果您的环境使用自定义 NovaSchedulerDefaultFilters
参数,请编辑 参数以移除以下已弃用和删除的过滤器:
Filter | 状态 |
---|---|
| 已弃用 |
| 已弃用 |
| 已弃用 |
| 删除 |
| 删除 |
| 删除 |
| 删除 |
| 删除 |
| 删除 |
| 已弃用 |
避免使用标记为 已弃用 的过滤器。Red Hat OpenStack Platform 16.2 仍然包括已弃用的过滤器,但将来的 Red Hat OpenStack Platform 版本不包括这些过滤器。
9.5. 设置 Compute 名称格式
Red Hat OpenStack Platform 13 使用 %stackname%-compute-%index%
作为 Compute 节点的默认命名格式。Red Hat OpenStack Platform 16.2 使用 %stackname%-novacompute-%index%
作为 Compute 节点的默认命名格式。更改默认命名格式,以保留原始 Red Hat OpenStack Platform 13 命名格式。如果不使用原始命名格式,director 会使用新的命名格式配置新的 OpenStack Compute(nova)代理,并使用旧命名格式保留现有的 OpenStack Compute(nova)代理。
流程
-
以
stack
用户的身份登录 undercloud。 设置计算命名格式:
如果您使用自定义
roles_data
文件,请编辑自定义roles_data
文件并为Compute
角色设置HostnameFormatDefault
参数:- name: Compute … HostnameFormatDefault: '%stackname%-compute-%index%' …
保存自定义
roles_data
文件。如果您在
openstack-tripleo-heat-templates
中使用默认roles_data
文件,请在环境文件中设置命名格式。编辑带有节点数和类型的环境文件,它通常命名为node-info.yaml
。将ComputeHostnameFormat
参数添加到parameter_defaults
部分:parameter_defaults: … ComputeHostnameFormat: '%stackname%-compute-%index%' …
保存
node-info.yaml
文件。
9.6. 配置实例序列号
在 Red Hat OpenStack Platform 13 中,存储在虚拟机的虚拟 BIOS 中的实例序列号基于主机的序列号。
在 Red Hat OpenStack Platform 16.2 中,存储在虚拟机的虚拟 BIOS 中的实例序列号默认基于实例的 UUID。
如果要在升级到 Red Hat OpenStack Platform 16.2 时保留 Red Hat OpenStack Platform 13 部署的行为,您必须配置 [libvirt]sysinfo_serial
。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:[stack@director ~]$ source ~/stackrc
- 打开环境文件。
在环境文件中添加以下配置,以指定实例序列号基于主机的序列号:
parameter_defaults: <Role>ExtraConfig: nova::compute::libvirt::sysinfo_serial: auto
- 将更新保存到环境文件。
- 将该文件添加到 overcloud 升级和部署命令中。
9.7. 更新 SSL/TLS 配置
从 resource_registry
中删除 NodeTLSData
资源,以更新 SSL/TLS 配置。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:$ source ~/stackrc
-
编辑自定义 overcloud SSL/TLS 公共端点文件,该文件通常命名为
~/templates/enable-tls.yaml
。 从
resource_registry
中删除NodeTLSData
资源:resource_registry: OS::TripleO::NodeTLSData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/tls-cert-inject.yaml ...
overcloud 部署使用 HAProxy 中的新服务来确定是否启用了 SSL/TLS。
注意如果这是
enable-tls.yaml
文件的resource_registry
部分的唯一资源,请删除完整的resource_registry
部分。- 保存 SSL/TLS 公共端点文件。
9.8. 更新后配置模板
如果使用 OS::TripleO::NodeExtraConfigPost
资源来注册并运行后配置模板,您必须将 EndpointMap
参数添加到模板中。
流程
- 编辑后配置模板。
在
parameters
部分下,添加EndpointMap
参数及其子参数:parameters: servers: type: json nameserver_ip: type: string DeployIdentifier: type: string EndpointMap: default: {} type: json
- 保存模板。
9.9. 保留旧遥测服务时的注意事项
在 Red Hat OpenStack Platform(RHOSP)16.2 中,OpenStack Telemetry 组件以 Service Telemetry Framework(STF)替代,因此升级后不会启用旧的遥测组件。
如果使用自动扩展或 CloudForms 服务,您必须保留旧的遥测服务。
要保留旧的 RHOSP 13 遥测服务,请在运行 openstack overcloud upgrade prepare
和 openstack overcloud upgrade converge
命令时包括 /usr/share/openstack-tripleo-heat-templates/environments/enable-legacy-telemetry.yaml
环境文件。
在每次升级后更新 overcloud 时,您还必须包含 enable-legacy-telemetry.yaml
环境文件。
旧的遥测服务仅适用于帮助促进到 STF 的转换,并将在以后的 RHOSP 版本中删除。
第 10 章 将 overcloud 注册更新到红帽客户门户网站
Red Hat OpenStack Platform 16.2 使用基于 Ansible 的方法将 overcloud 节点注册到红帽客户门户网站。
10.1. Red Hat Subscription Manager(RHSM)可组合服务
您可以使用 rhsm
可组合服务通过 Ansible 注册 overcloud 节点。默认 roles_data
文件中的每个角色都包含一个 OS::TripleO::Services::Rhsm
资源,默认为禁用。要启用该服务,请将资源注册到 rhsm
可组合服务文件中:
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml
rhsm
可组合服务接受 RhsmVars
参数,该参数可用于定义与注册相关的多个子参数:
parameter_defaults: RhsmVars: rhsm_repos: - rhel-8-for-x86_64-baseos-eus-rpms - rhel-8-for-x86_64-appstream-eus-rpms - rhel-8-for-x86_64-highavailability-eus-rpms … rhsm_username: "myusername" rhsm_password: "p@55w0rd!" rhsm_org_id: "1234567" rhsm_release: 8.4
您还可以将 RhsmVars
参数与特定于角色的参数结合使用,例如 ControllerParameters
,在为不同的节点类型启用特定的存储库时提供灵活性。
10.2. RhsmVars sub-parameters
当您配置 rhsm
可组合服务时,请使用以下子参数作为 RhsmVars
参数的一部分。如需有关可用的 Ansible 参数的更多信息,请参阅 角色文档。
rhsm | 描述 |
---|---|
|
选择注册方法。 |
|
要用于注册的组织。要找到此 ID,请从 undercloud 节点运行 |
|
要使用的订阅池 ID。如果您不想自动附加订阅,请使用此参数。要找到此 ID,请运行 |
| 要用于注册的激活码。 |
|
使用这个参数自动将兼容订阅附加到这个系统。将值设为 |
| 获取内容的基本 URL。默认 URL 是 Red Hat Content Delivery Network。如果使用 Satellite 服务器,请将此值更改为 Satellite 服务器内容存储库的基本 URL。 |
| 用于注册的订阅管理服务的主机名。默认为 Red Hat Subscription Management 主机名。如果使用 Satellite 服务器,请将此值改为 Satellite 服务器主机名。 |
| 您要启用的仓库列表。 |
| 注册的用户名。如果可能,使用激活码进行注册。 |
| 注册的密码。如果可能,使用激活码进行注册。 |
| 用于固定软件仓库的 Red Hat Enterprise Linux 版本。对于 Red Hat OpenStack Platform,这被设置为 8.4 |
|
HTTP 代理的主机名。例如: |
|
HTTP 代理通信的端口。例如: |
| 用于访问 HTTP 代理的用户名。 |
| 用于访问 HTTP 代理的密码。 |
只有在将 rhsm_method
设置为 portal
时,您只能一起使用 rhsm_activation_key
和 rhsm_repos
。如果将 rhsm_method
设置为 'satellite',则只能使用 rhsm_activation_key
或 rhsm_repos
。
10.3. 切换到 rhsm 可组合服务
以前的 rhel-registration
方法运行一个 bash 脚本来处理 overcloud 注册。这个方法的脚本和环境文件位于 /usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/
的核心 heat 模板集合中。
完成以下步骤,从 rhel-registration
方法切换到 rhsm
可组合服务。
流程
从将来的部署操作中排除
rhel-registration
环境文件。在大多数情况下,排除以下文件:-
rhel-registration/environment-rhel-registration.yaml
-
rhel-registration/rhel-registration-resource-registry.yaml
-
如果您使用自定义
roles_data
文件,请确保roles_data
文件中的每个角色都包含OS::TripleO::Services::Rhsm
可组合服务。例如:- name: Controller description: | Controller role that has all the controller services loaded and handles Database, Messaging and Network functions. CountDefault: 1 ... ServicesDefault: ... - OS::TripleO::Services::Rhsm ...
-
将
rhsm
可组合服务参数的环境文件添加到将来的部署操作。
这个方法将 rhel-registration
参数替换为 rhsm
服务参数,并更改启用该服务的 heat 资源:
resource_registry: OS::TripleO::NodeExtraConfig: rhel-registration.yaml
至:
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml
您还可以在部署中包含 /usr/share/openstack-tripleo-heat-templates/environments/rhsm.yaml
环境文件以启用该服务。
10.4. RHEL-registration to rhsm 映射
为了帮助您从 rhel-registration
方法转换到 rhsm
方法,请使用下表来映射您的参数和值。
rhel-registration | rhsm / RhsmVars |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10.5. 使用 rhsm 可组合服务注册 overcloud
创建启用并配置 rhsm
可组合服务的环境文件。director 使用此环境文件来注册和订阅您的节点。
流程
-
创建名为
templates/rhsm.yml
的环境文件,以存储配置。 在环境文件中包括您的配置。例如:
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml parameter_defaults: RhsmVars: rhsm_repos: - rhel-8-for-x86_64-baseos-eus-rpms - rhel-8-for-x86_64-appstream-eus-rpms - rhel-8-for-x86_64-highavailability-eus-rpms … rhsm_username: "myusername" rhsm_password: "p@55w0rd!" rhsm_org_id: "1234567" rhsm_pool_ids: "1a85f9223e3d5e43013e3d6e8ff506fd" rhsm_method: "portal" rhsm_release: 8.4
-
resource_registry
部分将rhsm
可组合服务与OS::TripleO::Services::Rhsm
资源相关联,每行都可用。 -
RhsmVars
变量传递参数到 Ansible 以配置您的红帽注册。
-
- 保存环境文件。
10.6. 将 rhsm 可组合服务应用到不同的角色
您可以根据角色应用 rhsm
可组合服务。例如,您可以将不同的配置应用到 Controller 节点、Compute 节点和 Ceph Storage 节点。
流程
-
创建名为
templates/rhsm.yml
的环境文件,以存储配置。 在环境文件中包括您的配置。例如:
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml parameter_defaults: ControllerParameters: RhsmVars: rhsm_repos: - rhel-8-for-x86_64-baseos-eus-rpms - rhel-8-for-x86_64-appstream-eus-rpms - rhel-8-for-x86_64-highavailability-eus-rpms - ansible-2.9-for-rhel-8-x86_64-rpms - openstack-16.2-for-rhel-8-x86_64-rpms - fast-datapath-for-rhel-8-x86_64-rpms rhsm_username: "myusername" rhsm_password: "p@55w0rd!" rhsm_org_id: "1234567" rhsm_pool_ids: "55d251f1490556f3e75aa37e89e10ce5" rhsm_method: "portal" rhsm_release: 8.4 ComputeParameters: RhsmVars: rhsm_repos: - rhel-8-for-x86_64-baseos-eus-rpms - rhel-8-for-x86_64-appstream-eus-rpms - rhel-8-for-x86_64-highavailability-eus-rpms - ansible-2.9-for-rhel-8-x86_64-rpms - openstack-16.2-for-rhel-8-x86_64-rpms - fast-datapath-for-rhel-8-x86_64-rpms rhsm_username: "myusername" rhsm_password: "p@55w0rd!" rhsm_org_id: "1234567" rhsm_pool_ids: "55d251f1490556f3e75aa37e89e10ce5" rhsm_method: "portal" rhsm_release: 8.4 CephStorageParameters: RhsmVars: rhsm_repos: - rhel-8-for-x86_64-baseos-rpms - rhel-8-for-x86_64-appstream-rpms - rhel-8-for-x86_64-highavailability-rpms - ansible-2.9-for-rhel-8-x86_64-rpms - openstack-16.2-deployment-tools-for-rhel-8-x86_64-rpms rhsm_username: "myusername" rhsm_password: "p@55w0rd!" rhsm_org_id: "1234567" rhsm_pool_ids: "68790a7aa2dc9dc50a9bc39fabc55e0d" rhsm_method: "portal" rhsm_release: 8.4
resource_registry
将rhsm
可组合服务与OS::TripleO::Services::Rhsm
资源相关联,每行都可用。ControllerParameters
、ComputeParameters
和CephStorageParameters
参数分别使用单独的RhsmVars
参数将订阅详情传递给相应的角色。注意在
CephStorageParameters
参数中设置RhsmVars
参数,以使用特定于 Ceph Storage 的 Red Hat Ceph Storage 订阅和存储库。确保rhsm_repos
参数包含标准的 Red Hat Enterprise Linux 软件仓库,而不是 Controller 和 Compute 节点所需的扩展更新支持(EUS)仓库。- 保存环境文件。
第 11 章 将 overcloud 注册更新为 Red Hat Satellite Server
Red Hat OpenStack Platform 16.2 使用基于 Ansible 的方法将 overcloud 节点注册到 Red Hat Satellite Server 6。
11.1. Red Hat Subscription Manager(RHSM)可组合服务
您可以使用 rhsm
可组合服务通过 Ansible 注册 overcloud 节点。默认 roles_data
文件中的每个角色都包含一个 OS::TripleO::Services::Rhsm
资源,默认为禁用。要启用该服务,请将资源注册到 rhsm
可组合服务文件中:
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml
rhsm
可组合服务接受 RhsmVars
参数,该参数可用于定义与注册相关的多个子参数:
parameter_defaults: RhsmVars: rhsm_repos: - rhel-8-for-x86_64-baseos-eus-rpms - rhel-8-for-x86_64-appstream-eus-rpms - rhel-8-for-x86_64-highavailability-eus-rpms … rhsm_username: "myusername" rhsm_password: "p@55w0rd!" rhsm_org_id: "1234567" rhsm_release: 8.4
您还可以将 RhsmVars
参数与特定于角色的参数结合使用,例如 ControllerParameters
,在为不同的节点类型启用特定的存储库时提供灵活性。
11.2. RhsmVars sub-parameters
当您配置 rhsm
可组合服务时,请使用以下子参数作为 RhsmVars
参数的一部分。如需有关可用的 Ansible 参数的更多信息,请参阅 角色文档。
rhsm | 描述 |
---|---|
|
选择注册方法。 |
|
要用于注册的组织。要找到此 ID,请从 undercloud 节点运行 |
|
要使用的订阅池 ID。如果您不想自动附加订阅,请使用此参数。要找到此 ID,请运行 |
| 要用于注册的激活码。 |
|
使用这个参数自动将兼容订阅附加到这个系统。将值设为 |
| 获取内容的基本 URL。默认 URL 是 Red Hat Content Delivery Network。如果使用 Satellite 服务器,请将此值更改为 Satellite 服务器内容存储库的基本 URL。 |
| 用于注册的订阅管理服务的主机名。默认为 Red Hat Subscription Management 主机名。如果使用 Satellite 服务器,请将此值改为 Satellite 服务器主机名。 |
| 您要启用的仓库列表。 |
| 注册的用户名。如果可能,使用激活码进行注册。 |
| 注册的密码。如果可能,使用激活码进行注册。 |
| 用于固定软件仓库的 Red Hat Enterprise Linux 版本。对于 Red Hat OpenStack Platform,这被设置为 8.4 |
|
HTTP 代理的主机名。例如: |
|
HTTP 代理通信的端口。例如: |
| 用于访问 HTTP 代理的用户名。 |
| 用于访问 HTTP 代理的密码。 |
只有在将 rhsm_method
设置为 portal
时,您只能一起使用 rhsm_activation_key
和 rhsm_repos
。如果将 rhsm_method
设置为 'satellite',则只能使用 rhsm_activation_key
或 rhsm_repos
。
11.3. 切换到 rhsm 可组合服务
以前的 rhel-registration
方法运行一个 bash 脚本来处理 overcloud 注册。这个方法的脚本和环境文件位于 /usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/
的核心 heat 模板集合中。
完成以下步骤,从 rhel-registration
方法切换到 rhsm
可组合服务。
流程
从将来的部署操作中排除
rhel-registration
环境文件。在大多数情况下,排除以下文件:-
rhel-registration/environment-rhel-registration.yaml
-
rhel-registration/rhel-registration-resource-registry.yaml
-
如果您使用自定义
roles_data
文件,请确保roles_data
文件中的每个角色都包含OS::TripleO::Services::Rhsm
可组合服务。例如:- name: Controller description: | Controller role that has all the controller services loaded and handles Database, Messaging and Network functions. CountDefault: 1 ... ServicesDefault: ... - OS::TripleO::Services::Rhsm ...
-
将
rhsm
可组合服务参数的环境文件添加到将来的部署操作。
这个方法将 rhel-registration
参数替换为 rhsm
服务参数,并更改启用该服务的 heat 资源:
resource_registry: OS::TripleO::NodeExtraConfig: rhel-registration.yaml
至:
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml
您还可以在部署中包含 /usr/share/openstack-tripleo-heat-templates/environments/rhsm.yaml
环境文件以启用该服务。
11.4. RHEL-registration to rhsm 映射
为了帮助您从 rhel-registration
方法转换到 rhsm
方法,请使用下表来映射您的参数和值。
rhel-registration | rhsm / RhsmVars |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11.5. 将 overcloud 注册到 Red Hat Satellite Server
创建可启用并配置 rhsm
可组合服务的环境文件,以将节点注册到 Red Hat Satellite 而不是红帽客户门户网站。
流程
-
创建名为
templates/rhsm.yml
的环境文件,以存储配置。 在环境文件中包括您的配置。例如:
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/deployment/rhsm/rhsm-baremetal-ansible.yaml parameter_defaults: RhsmVars: rhsm_activation_key: "myactivationkey" rhsm_method: "satellite" rhsm_org_id: "ACME" rhsm_server_hostname: "satellite.example.com" rhsm_baseurl: "https://satellite.example.com/pulp/repos" rhsm_release: 8.4
resource_registry
将rhsm
可组合服务与OS::TripleO::Services::Rhsm
资源相关联,每行都可用。RhsmVars
变量传递参数到 Ansible 以配置您的红帽注册。- 保存环境文件。
11.6. 准备 Leapp 使用 Satellite 服务器
如果您使用 Satellite Server 6 来托管 RPM 内容,请完成以下准备步骤以确保使用 Satellite 成功进行 Leapp 升级。
先决条件
- 创建与 Red Hat OpenStack Platform 16.2 和 Red Hat Enterprise Linux 8.4 的软件仓库关联的卫星服务器激活码。
- 为您的 overcloud 节点生成 Ansible 清单文件。
- 在卫星服务器上,为 Red Hat OpenStack Platform 16.2 升级创建并提升内容视图,并包括升级所需的存储库。如需更多信息,请参阅 Red Hat Satellite Server 6 的注意事项。
如果使用 Ceph 订阅并将 director 配置为将
overcloud-minimal
镜像用于 Ceph 存储节点,您必须创建内容视图并将以下 Red Hat Enterprise Linux(RHEL)8.4 软件仓库添加到其中:Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
rhel-8-for-x86_64-appstream-rpms x86_64 8.4
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
rhel-8-for-x86_64-baseos-rpms x86_64 8.4
如需更多信息,请参阅 Red Hat Satellite Content Management 指南中的 Importing Red Hat Content 和 Managing Content Views。
流程
-
以
stack
用户的身份登录 undercloud。 创建名为
playbook-satellite.yaml
的文件,并粘贴到文件中:- name: Pre-install leapp hosts: overcloud become: yes tasks: - name: Pre-install leapp yum: name: - leapp - leapp-repository state: installed - name: Remove katello-host-tools-fact-plugin yum: name: - katello-host-tools-fact-plugin state: removed - name: Register system redhat_subscription: activationkey: "osp16-key" org_id: "ACME" server_hostname: "satellite.example.com" rhsm_baseurl: "https://satellite.example.com/pulp/repos" force_register: True
修改
redhat_subscription
变量,使其适合您的卫星服务器。运行 playbook:
$ ansible-playbook -i ~/inventory.yaml playbook-satellite.yaml
第 12 章 准备 director 部署的 Ceph Storage 升级
如果您的部署使用 director 部署的 Red Hat Ceph Storage 集群,则必须完成本节中所含的步骤。
RHEL 8.4 支持 RHOSP 16.2。但是,映射到 Ceph Storage 角色更新的主机到最新的主 RHEL 发行版本。有关更多信息,请参阅 Red Hat Ceph Storage: 支持的配置。
如果您要使用外部 Ceph 部署升级,则必须跳过本节中所含的步骤,并继续 第 13 章 准备使用外部 Ceph 部署升级。
升级过程在升级到 Red Hat OpenStack Platform 16.2 的过程中维护使用 Red Hat Ceph Storage 3 容器化服务。完成 Red Hat OpenStack Platform 16.2 升级后,您可以将 Ceph Storage 服务升级到 Red Hat Ceph Storage 4。
在使用共享文件系统服务(manila)置备新共享,直到完成 Red Hat OpenStack Platform 16.2 升级和 Ceph Storage 服务升级到 Red Hat Ceph Storage 4。
12.1. 以高级别了解 Ceph Storage 节点升级过程
director 部署的 Ceph Storage 节点在 overcloud 升级过程中继续使用 Red Hat Ceph Storage 3 容器。要了解 Ceph Storage 节点和服务在升级过程中如何受到影响,请阅读 Ceph Storage 升级过程的各个方面的以下摘要。
ceph-ansible
ceph-ansible
是 director 用来安装、维护和升级 Ceph Storage 服务的角色和 playbook 集合。升级 undercloud 时,您要运行某些命令来确保 ceph-ansible
在过渡到 Red Hat Enterprise Linux 8.4 后会保留最新的版本 3 集合。ceph-ansible
版本 3 在 overcloud 升级前,使容器化 Ceph Storage 服务保留在版本 3 上。完成升级后,启用了 Red Hat Ceph Storage,更新了 RHEL 8 软件仓库的 Red Hat Ceph Storage 工具 4,并将 ceph-ansible
更新至版本 4。
迁移到 Podman
在 overcloud 升级过程中,您必须运行 openstack overcloud external-upgrade run --tags ceph_systemd
命令,将控制 Ceph Storage 容器化服务的 systemd
服务更改为使用 Podman 而不是 Docker。在任何包含 Ceph Storage 容器化服务的节点中执行操作系统升级之前,请先运行此命令。
将 systemd
服务更改为在节点上使用 Podman 后,您要执行操作系统升级和 OpenStack Platform 服务升级。该节点上的 Ceph Storage 容器将在 OpenStack 平台服务升级后再次运行。
Ceph Storage 操作系统升级
您通常遵循与在 overcloud 节点上相同的 Ceph Storage 节点上的工作流。当您针对 Ceph Storage 节点运行 openstack overcloud upgrade run --tags system_upgrade
命令时,director 在 Ceph Storage 节点上运行 Leapp,并将操作系统升级到 Red Hat Enterprise Linux 8.4。然后,针对 Ceph Storage 节点运行 untagged openstack overcloud upgrade run
命令,它运行以下容器:
- Red Hat Ceph Storage 3 容器化服务
- Red Hat OpenStack Platform 16.2 containerized services
升级到 Red Hat Ceph Storage 4
完成 Leapp 升级和 Red Hat OpenStack Platform 升级后,Ceph Storage 容器化服务仍将使用版本 3 容器。此时,您必须将 ceph-ansible
升级到版本 4,然后运行 openstack overcloud external-upgrade run --tags ceph
命令,执行所有节点上的所有 Red Hat Ceph Storage 服务升级到版本 4。
Ceph Storage 工作流概述
以下列表是 Red Hat Ceph Storage 升级的高级工作流。此工作流已集成到一般的 Red Hat OpenStack Platform 工作流中,并在 undercloud 上运行升级框架命令以在此工作流中执行操作。
-
升级 undercloud,但保留
ceph-ansible
版本 3 - 启动 overcloud 升级
为托管 Ceph Storage 容器化服务的每个节点执行以下任务:
- 将 Ceph Storage 容器化服务迁移到 Podman
- 升级操作系统
- 升级 OpenStack Platform 服务,重新启动 Ceph Storage 版本 3 容器化服务
- 完成 overcloud 升级
-
将
ceph-ansible
升级到 undercloud 上的版本 4 - 升级到 overcloud 上的 Red Hat Ceph Storage 4
此列表不会捕获完整的 Red Hat OpenStack Platform 16.2 升级过程中的所有步骤,只关注与 Red Hat Ceph Storage 相关的一些方面,以描述升级过程中 Ceph Storage 服务的情况。
12.2. 检查 ceph-ansible 版本
在 undercloud 升级过程中,您保留了 ceph-ansible
软件包的 Ceph Storage 3 版本。这有助于维护 Ceph Storage 节点上的 Ceph Storage 3 容器的兼容性。验证此软件包是否保留在 undercloud 上。
流程
-
以
stack
用户的身份登录 undercloud。 运行
dnf
命令检查ceph-ansible
软件包的版本:$ sudo dnf info ceph-ansible
命令输出显示
ceph-ansible
软件包的版本 3:Installed Packages Name : ceph-ansible Version : 3.xx.xx.xx ...
如果 ceph-ansible
软件包缺失或版本 3 软件包,请从 Red Hat Package Browser 下载最新版本 3 软件包,并在 undercloud 上手动安装该软件包。请注意,ceph-ansible
版本 3 软件包仅适用于 Red Hat Enterprise Linux 7 软件仓库,它不适用于 Red Hat Enterprise Linux 8 软件仓库。在升级的 Red Hat OpenStack Platform 框架上下文之外,Red Hat Enterprise Linux 8 不支持 Ceph -ansible
版本 3。
12.3. 设置 ceph-ansible 存储库
Red Hat OpenStack Platform 16.2 验证框架测试在 director 把 overcloud 升级到 Red Hat Ceph Storage 4 前,可以正确安装 ceph-ansible
。框架使用 CephAnsibleRepo
参数检查您是否从正确的存储库安装了 ceph-ansible
。director 在运行 openstack overcloud upgrade prepare
命令后禁用测试,此测试在 Red Hat OpenStack Platform 16.2 overcloud 升级前禁用。在运行 openstack overcloud upgrade converge
命令后,director 会重新启用这个测试。但是,为了准备进行这种验证,您必须将 CephAnsibleRepo
参数设置为 Red Hat Ceph Storage Tools 4 for RHEL 8 软件仓库。
流程
-
以
stack
用户的身份登录 undercloud。 编辑包含 overcloud Ceph Storage 配置的环境文件。此文件通常命名为
ceph-config.yaml
,您可以在templates
目录中找到该文件:$ vi /home/stack/templates/ceph-config.yaml
将
CephAnsibleRepo
参数添加到parameter_defaults
部分:parameter_defaults: ... CephAnsibleRepo: rhceph-4-tools-for-rhel-8-x86_64-rpms ...
CephAnsibleRepo
设置包含ceph-ansible
的存储库。验证框架使用此参数检查已在 undercloud 上安装了ceph-ansible
。-
保存
ceph-config.yaml
文件。
12.4. 在升级前检查 Ceph 集群状态
在进行 overcloud 升级前,您必须验证 Ceph 集群是否按预期工作。
流程
-
登录运行
ceph-mon
服务的节点。此节点通常是 Controller 节点或独立 Ceph 监控节点。 输入以下命令来查看 Ceph 集群的状态:
$ docker exec ceph-mon-$HOSTNAME ceph -s
-
确认集群的运行状况状态为
HEALTH_OK
,并且所有 OSD 都为up
。
第 13 章 准备使用外部 Ceph 部署升级
如果您要使用外部 Ceph 部署升级,则必须完成本节中所含的步骤。
如果您的部署不使用外部 Ceph Storage 集群,则必须跳过本节中所含的步骤,并继续进行下一部分。
13.1. 安装 ceph-ansible
如果要使用外部 Ceph 部署升级,则必须完成此步骤。
当在 Red Hat OpenStack Platform 中使用 Ceph Storage 时,需要 ceph-ansible
软件包。
流程
启用 Ceph 工具存储库:
[stack@director ~]$ sudo subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
安装
ceph-ansible
软件包:[stack@director ~]$ sudo dnf install -y ceph-ansible
13.2. 设置 ceph-ansible 存储库
Red Hat OpenStack Platform 16.2 验证框架测试在 director 把 overcloud 升级到 Red Hat Ceph Storage 4 前,可以正确安装 ceph-ansible
。框架使用 CephAnsibleRepo
参数检查您是否从正确的存储库安装了 ceph-ansible
。director 在运行 openstack overcloud upgrade prepare
命令后禁用测试,此测试在 Red Hat OpenStack Platform 16.2 overcloud 升级前禁用。在运行 openstack overcloud upgrade converge
命令后,director 会重新启用这个测试。但是,为了准备进行这种验证,您必须将 CephAnsibleRepo
参数设置为 Red Hat Ceph Storage Tools 4 for RHEL 8 软件仓库。
流程
-
以
stack
用户的身份登录 undercloud。 编辑包含 overcloud Ceph Storage 配置的环境文件。此文件通常命名为
ceph-config.yaml
,您可以在templates
目录中找到该文件:$ vi /home/stack/templates/ceph-config.yaml
将
CephAnsibleRepo
参数添加到parameter_defaults
部分:parameter_defaults: ... CephAnsibleRepo: rhceph-4-tools-for-rhel-8-x86_64-rpms ...
CephAnsibleRepo
设置包含ceph-ansible
的存储库。验证框架使用此参数检查已在 undercloud 上安装了ceph-ansible
。-
保存
ceph-config.yaml
文件。
第 14 章 更新网络配置
您必须完成一些网络配置,以便为 overcloud 升级做准备。
14.1. 更新网络接口模板
Red Hat OpenStack Platform 包含一个脚本,可自动将缺少的参数添加到 NIC 模板文件。
流程
-
以
stack
用户的身份登录 undercloud。 source
stackrc
文件:$ source ~/stackrc
在 undercloud 上,创建一个名为
update-nic-templates.sh
的文件,并在文件中包含以下内容:#!/bin/bash STACK_NAME="overcloud" ROLES_DATA="/usr/share/openstack-tripleo-heat-templates/roles_data.yaml" NETWORK_DATA="/usr/share/openstack-tripleo-heat-templates/network_data.yaml" NIC_CONFIG_LINES=$(openstack stack environment show $STACK_NAME | grep "::Net::SoftwareConfig" | sed -E 's/ *OS::TripleO::// ; s/::Net::SoftwareConfig:// ; s/ http.*user-files/ /') echo "$NIC_CONFIG_LINES" | while read LINE; do ROLE=$(echo "$LINE" | awk '{print $1;}') NIC_CONFIG=$(echo "$LINE" | awk '{print $2;}') if [ -f "$NIC_CONFIG" ]; then echo "Updating template for $ROLE role." python3 /usr/share/openstack-tripleo-heat-templates/tools/merge-new-params-nic-config-script.py \ --tht-dir /usr/share/openstack-tripleo-heat-templates \ --roles-data $ROLES_DATA \ --network-data $NETWORK_DATA \ --role-name "$ROLE" \ --discard-comments yes \ --template "$NIC_CONFIG" else echo "No NIC template detected for $ROLE role. Skipping $ROLE role." fi done
-
如果您使用自定义 overcloud 名称,请将
STACK_NAME
变量设置为 overcloud 的名称。overcloud
堆栈的默认名称为 overcloud。 -
如果您使用自定义
roles_data
文件,请将ROLES_DATA
变量设置为自定义文件的位置。如果您使用默认的roles_data
文件,请将变量保留为/usr/share/openstack-tripleo-heat-templates/roles_data.yaml
-
如果您使用自定义
network_data
文件,请将NETWORK_DATA
变量设置为自定义文件的位置。如果使用默认的network_data
文件,请将变量保留为/usr/share/openstack-tripleo-heat-templates/network_data.yaml
-
运行
/usr/share/openstack-tripleo-heat-templates/tools/merge-new-params-nic-config-script.py -h
以查看添加到脚本的选项列表。
-
如果您使用自定义 overcloud 名称,请将
为脚本添加可执行权限:
$ chmod +x update-nic-templates.sh
-
可选:如果您为 RHOSP 环境使用 spine-leaf network topology,请检查
roles_data.yaml
文件,并确保它为部署的 NIC 模板使用正确的角色名称。该脚本使用roles_data.yaml
文件中的deprecated_nic_config_name
参数的值。 运行脚本:
$ ./update-nic-templates.sh
该脚本保存每个自定义 NIC 模板的副本,并使用缺少的参数更新每个模板。此脚本还会跳过任何没有自定义模板的角色:
No NIC template detected for BlockStorage role. Skipping BlockStorage role. Updating template for CephStorage role. The original template was saved as: /home/stack/templates/custom-nics/ceph-storage.yaml.20200903144835 The update template was saved as: /home/stack/templates/custom-nics/ceph-storage.yaml Updating template for Compute role. The original template was saved as: /home/stack/templates/custom-nics/compute.yaml.20200903144838 The update template was saved as: /home/stack/templates/custom-nics/compute.yaml Updating template for Controller role. The original template was saved as: /home/stack/templates/custom-nics/controller.yaml.20200903144841 The update template was saved as: /home/stack/templates/custom-nics/controller.yaml No NIC template detected for ObjectStorage role. Skipping ObjectStorage role.
14.2. 在升级过程中维护 Open vSwitch 兼容性
Red Hat OpenStack Platform 13 使用 Open vSwitch(OVS)作为 OpenStack Networking(neutron)的默认 ML2 后端。Red Hat OpenStack Platform 的较新版本使用 Open Virtual Network(OVN),它扩展了 OVS 功能。但是,为了确保稳定的升级,您必须在升级过程中维护 OVS 功能,然后在完成升级后迁移到 OVN。
要在升级过程中维护 OVS 兼容性,请包括以下环境文件作为环境文件集合的一部分:
-
/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml
包含 neutron-ovs.yaml
环境文件时,请检查 neutron-ovs-dvr.yaml
环境文件是否包含在环境文件集合中。您必须在 neutron-ovs-dvr.yaml
文件前包括 neutron-ovs.yaml
环境文件,以避免升级过程中失败。
将此文件视为部署的一部分,直至完成迁移至 OVN。包含所有 overcloud 升级和部署命令的文件:
-
OpenStack overcloud 升级准备
-
OpenStack overcloud 升级聚合
-
OpenStack overcloud 部署
-
OpenStack overcloud 更新准备
-
OpenStack overcloud 更新聚合
- 任何使用环境文件的命令。
OVS 兼容性故障排除
如果升级过程失败,因为 neutron-ovs.yaml
文件中定义的参数会覆盖 neutron-ovs-dvr.yaml
中定义的参数,请更改包含这些文件的顺序,并在受影响的节点上再次运行 openstack overcloud upgrade prepare
和 openstack overcloud upgrade run
。如果受影响的节点是 Compute 节点,请从该节点中删除 openstack-neutron*
软件包。
14.3. 在升级过程中维护可组合网络兼容性
Red Hat OpenStack Platform 16.2 的 network_data
文件格式包括可用于定义网络中的其他子网和路由的新部分。但是,如果您使用自定义 network_data
文件,您仍可使用 Red Hat OpenStack Platform 13 的 network_data
文件格式。
-
当您从 Red Hat OpenStack Platform 13 升级到 16.2 时,请在升级期间和之后使用 Red Hat OpenStack Platform 13
network_data
文件格式。有关 Red Hat OpenStack Platform 13 可组合网络语法的更多信息,请参阅自定义 可组合网络。 -
当您在 Red Hat OpenStack Platform 16.2 上创建新的 overcloud 时,请使用 Red Hat OpenStack Platform 16.2
network_data
文件格式。有关 Red Hat OpenStack Platform 16.2 可组合网络语法的更多信息,请参阅自定义 可组合网络。
第 15 章 准备网络功能虚拟化(NFV)
如果使用网络功能虚拟化(NFV),则必须完成一些准备 overcloud 升级。
15.1. 网络功能虚拟化(NFV)环境文件
在典型的基于 NFV 的环境中,您可以启用如下服务:
- 单根输入/输出虚拟化(SR-IOV)
- 数据平面开发套件(DPDK)
您不需要对这些服务的任何特定重新配置,以适应 Red Hat OpenStack Platform 16.2 升级。但是,请确保启用 NFV 功能的环境文件满足以下要求:
启用 NFV 功能的默认环境文件位于 Red Hat OpenStack Platform 16.2
openstack-tripleo-heat-templates
集合的环境/
服务目录中。如果您在 Red Hat OpenStack Platform 13 部署中包含openstack-tripleo-heat-templates
中的默认 NFV 环境文件,请验证 Red Hat OpenStack Platform 16.2 中相应功能的正确环境文件位置:-
Open vSwitch(OVS)网络和 SR-IOV:
/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml
-
Open vSwitch(OVS)网络和 DPDK:
/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs-dpdk.yaml
-
Open vSwitch(OVS)网络和 SR-IOV:
-
要在从 Red Hat OpenStack Platform 13 升级到 Red Hat OpenStack Platform 16.2 的过程中维护 OVS 兼容性,您必须包括
/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml
环境文件。在运行涉及环境文件的部署和升级命令时,您必须在neutron-ovs.yaml
文件后包括与 NFV 相关的环境文件。例如,在运行openstack overcloud upgrade prepare
with OVS 和 NFV 环境文件时,按以下顺序包括这些文件: - OVS 环境文件
- SR-IOV 环境文件
DPDK 环境文件
$ openstack overcloud upgrade prepare \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs-dpdk.yaml \ ...
在升级过程中,只有在 RHOSP 13 和 RHOSP 16.2 Compute 节点处于 hybrid
状态时,才能在 RHOSP 13 和 RHOSP 16.2 Compute 节点之间迁移实例。如需更多信息,请参阅 Configuring the Compute Service for Instance Creation 指南中的 Migration constraints。
NFV 工作负载还有额外的迁移约束:无法在升级过程中从 OVS-DPDK Compute 节点实时迁移实例。另外,您可以在升级过程中冷从 OVS-DPDK Compute 节点迁移实例。
第 16 章 升级前的最终检查
在开始升级前,请完成所有准备步骤的最终检查。
16.1. 要在部署中包括的自定义文件
如果部署中的任何 overcloud 节点是专用 Object Storage(swift)节点,您必须复制默认的 roles_data.yaml
文件并编辑 ObjectStorage
以删除 deprecated_server_resource_name: 'SwiftStorage'
。然后使用 --roles-file
选项将文件传递到 openstack overcloud upgrade prepare
或 openstack overcloud upgrade converge
命令。
16.2. 要在部署中包括的新环境文件
除了常规的 overcloud 环境文件外,还必须包括新的环境文件以方便升级到 Red Hat OpenStack Platform(RHOSP)16.2。
File | 备注 |
---|---|
|
此文件包含特定于升级的参数。只有在升级的持续时间时才需要这个文件。运行 |
| 此文件包含用于 overcloud 的注册和订阅信息。此文件将您的系统注册到红帽客户门户或红帽卫星服务器。 |
| 包含源和准备步骤的文件。这与您用于 undercloud 升级的文件相同。 |
| OpenStack Platform 16.2 使用 Open Virtual Network(OVN)作为默认网络后端。但是 OpenStack Platform 13 使用 Open vSwitch(OVS)。包含此文件来在升级过程中保留 OVS 兼容性。OpenStack Platform 16.2 文档包括在升级后从 OVS 迁移到 OVN 的说明。 |
运行以下命令时,将这些文件添加到环境文件的末尾:
-
OpenStack overcloud 升级准备
-
OpenStack overcloud 升级聚合
-
OpenStack overcloud 部署
16.3. 要从部署中删除的环境文件
删除特定于您的 OpenStack Platform Red Hat OpenStack Platform 13 的任何环境文件:
- Red Hat OpenStack Platform 13 container image list
-
Red Hat OpenStack Platform 13 Customer Portal or Satellite
rhel-registration
scripts
运行以下命令时,从您包含的环境文件列表中删除这些文件:
-
OpenStack overcloud 升级准备
-
OpenStack overcloud 升级聚合
-
OpenStack overcloud 部署
16.4. 升级检查列表
使用以下清单来确定升级 overcloud 的准备情况:
项 | complete |
---|---|
验证正常工作的 overcloud。 | Y/N |
执行 overcloud control plane 的 Relax-and-Recover(ReaR)备份。如需更多信息,请参阅 Red Hat OpenStack Platform 13 Undercloud 和 Control Plane 备份和恢复。 | Y/N |
创建在 undercloud 节点上运行的数据库的备份。如需更多信息,请参阅 Red Hat OpenStack Platform 16.2 备份和恢复 undercloud 和 control plane 节点指南中的创建 undercloud 节点的数据库备份。 | Y/N |
实施对 Leapp 的所有准备,包括:
| Y/N |
将您的注册详情更新为 Red Hat OpenStack Platform 16.2 存储库,并转换环境文件以使用基于 Ansible 的方法。 | Y/N |
更新了网络配置模板。 | Y/N |
使用 Red Hat OpenStack Platform 16.2 的新环境文件更新环境文件列表。 | Y/N |
可选: 如果您的部署包含专用 Object Storage(swift)节点:
复制的 | Y/N |
删除了只与 Red Hat OpenStack Platform 13 相关的旧环境文件,如旧的红帽注册和容器镜像位置文件。 | Y/N |
第 17 章 升级命令概述
升级过程涉及您在进程的特定阶段运行的不同命令。
本节仅包含每个命令的信息。您必须按特定顺序运行这些命令,并提供特定于 overcloud 的选项。等待您收到在合适的步骤中运行这些命令的说明。
17.1. OpenStack overcloud 升级准备
此命令执行 overcloud 升级的初始准备步骤,其中包括将 undercloud 上的当前 overcloud 计划替换为新的 OpenStack Platform 16.2 overcloud 计划以及更新的环境文件。此命令功能类似于 openstack overcloud deploy
命令,并使用许多相同的选项。
17.2. OpenStack overcloud 升级运行
这个命令会执行升级过程。director 根据新的 OpenStack Platform 16.2 overcloud 计划创建一组 Ansible playbook,并在整个 overcloud 上运行 fast forward 任务。这包括通过 13 到 16.2 版本来运行升级过程。
除了标准升级过程外,此命令还可在 overcloud 节点上执行操作系统的 Leapp 升级。使用 --tags
选项运行这些任务。
Leapp 升级任务标签
system_upgrade
-
合并了
system_upgrade_prepare
、system_upgrade_run
和system_upgrade_reboot
的任务。 system_upgrade_prepare
- 使用 Leapp 准备操作系统升级的任务。
system_upgrade_run
- 运行 Leapp 和升级操作系统的任务。
system_upgrade_reboot
- 重启系统并完成操作系统升级的任务。
用于工作负载迁移的升级任务标签
nova_hybrid_state
- 在 Compute 节点上设置临时 OpenStack Platform 16.2 容器的任务,以便在升级过程中促进工作负载迁移。
17.3. OpenStack overcloud external-upgrade 运行
此命令在标准升级过程之外执行升级任务。director 根据新的 OpenStack Platform 16.2 overcloud 计划创建一组 Ansible playbook,并使用 --tags
选项运行特定的任务。
用于容器管理的外部任务标签
container_image_prepare
- 将容器镜像拉取到 undercloud registry 的任务,并为要使用的 overcloud 准备镜像。
用于 Ceph Storage 升级的外部任务标签
如果您的部署使用了使用 director 部署的 Red Hat Ceph Storage 集群,您可以使用以下标签:
ceph
-
使用
ceph-ansible
playbook 安装 Red Hat Ceph Storage 的任务。 ceph_systemd
-
转换 Red Hat Ceph Storage systemd 单元文件的任务使用
podman
管理。
-
如果您要使用外部 Ceph 部署升级,您可以跳过使用
ceph
和ceph_systemd
标签的任务。
用于数据库传输的外部任务标签
system_upgrade_cleanup
-
清理与
system_upgrade_transfer_data
任务相关的存储目录的任务。 system_upgrade_stop_services
- 关闭所有服务的任务。
system_upgrade_transfer_data
- 关闭所有服务并将数据库传送到 bootstrap 节点的任务。
17.4. OpenStack overcloud 升级聚合
此命令在 overcloud 升级过程中执行最后的步骤。最后一步将 overcloud heat 堆栈与 OpenStack Platform 16.2 overcloud 计划和您更新的环境文件同步。此过程可确保生成的 overcloud 与新 OpenStack Platform 16.2 overcloud 的配置匹配。该命令与 openstack overcloud deploy
命令类似,并使用许多相同的选项。
17.5. Overcloud 节点升级工作流
在每个 overcloud 节点上执行升级时,您必须考虑以下问题以确定升级中相关阶段要运行的正确命令:
控制器服务
- 节点是否包含 Pacemaker 服务?您必须首先升级 bootstrap 节点,才能启动数据库传输并启动临时容器,以便在从 Red Hat OpenStack 13 转换到 16.2 期间迁移。在 bootstrap Controller 节点升级过程中,会创建一个新的 Pacemaker 集群,并在该节点上启动新的 Red Hat OpenStack 16.2 容器,剩余的 Controller 节点仍然在 Red Hat OpenStack 13 上运行。升级 bootstrap 节点后,您必须使用 Pacemaker 服务升级每个额外节点,并确保每个节点加入使用 bootstrap 节点启动的新 Pacemaker 集群。在没有 Pacemaker 的情况下升级 split-service Controller 节点的过程不需要这些附加步骤。
计算服务
节点是 Compute 节点吗?如果节点包含 Compute 服务,则必须从节点迁移虚拟机以确保最大可用性。在这种情况下,计算节点包括用于托管虚拟机的任何节点。此定义包括以下 Compute 节点类型:
- 常规 Compute 节点
- 使用 Hyper-Converged Infrastructure(HCI)的计算节点.
- 带有网络功能虚拟化技术的计算节点,如 Data Plane Development Kit(DPDK)或 Single Root Input/Output Virtualization(SR-IOV)
- Real Time Compute 节点
Ceph Storage Services
节点是否包含任何 Ceph Storage 服务?您必须为节点上任何容器化 Ceph Storage 服务转换
systemd
单元文件,以使用podman
而不是docker
。这适用于以下节点类型:- Ceph Storage OSD 节点
- 带有 Ceph MON 服务的控制器节点
- split-Controller Ceph MON 节点
- 使用 Hyper-Converged Infrastructure(HCI)的计算节点.
工作流
使用以下工作流图来标识特定节点的正确更新路径:
第 18 章 升级标准 overcloud
此场景包含标准 overcloud 环境的升级过程示例,其中包括以下节点类型:
- 三个 Controller 节点
- 三个 Ceph Storage 节点
- 多个 Compute 节点
18.1. 运行 overcloud 升级准备
升级需要运行 openstack overcloud upgrade prepare
命令,它将执行以下任务:
- 将 overcloud 计划更新至 OpenStack Platform 16.2
- 为升级准备节点
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
运行升级准备命令:
$ openstack overcloud upgrade prepare \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待升级准备完成。
下载容器镜像:
$ openstack overcloud external-upgrade run --stack STACK NAME --tags container_image_prepare
18.2. 升级 Controller 节点
要将所有 Controller 节点升级到 Red Hat OpenStack Platform (RHOSP) 16.2,您必须从 bootstrap Controller 节点开始升级每个 Controller 节点。
如果您的部署使用了使用 director 部署的 Red Hat Ceph Storage 集群,请按照使用 director 部署的 Ceph Storage 升级 Controller 节点 中的步骤。
在 bootstrap Controller 节点升级过程中,会创建一个新的 Pacemaker 集群,新的 RHOSP 16.2 容器会在节点上启动,而剩余的 Controller 节点仍然在 RHOSP 13 上运行。
升级 bootstrap 节点后,您必须使用 Pacemaker 服务升级每个额外节点,并确保每个节点加入使用 bootstrap 节点启动的新 Pacemaker 集群。有关更多信息,请参阅 Overcloud 节点升级工作流。
流程
Source
stackrc
文件:$ source ~/stackrc
在 undercloud 节点上,识别 bootstrap Controller 节点:
$ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
-
将
<stack_name
> 替换为堆栈的名称。
-
将
升级 bootstrap Controller 节点:
在 bootstrap Controller 节点上执行操作系统的 Leapp 升级:
$ openstack overcloud upgrade run [--stack <stack>] --tags system_upgrade --limit <bootstrap_controller_node>
-
将
<bootstrap_controller_node
> 替换为环境中 bootstrap Controller 节点的主机名,如overcloud-controller-0
。 如果您不使用默认的 overcloud 堆栈名称
overcloud
,请包含--stack
可选参数,并将 <stack&
gt; 替换为 overcloud 堆栈的名称。在 Leapp 升级过程中,bootstrap Controller 节点会被重启。
-
将
将数据库的最新版本从现有节点复制到 bootstrap 节点:
$ openstack overcloud external-upgrade run [--stack <stack>] --tags system_upgrade_transfer_data
重要此命令会导致 control plane 上的中断。在 RHOSP 升级完成并且 control plane 再次激活前,您无法对 overcloud 执行任何标准操作。
在后续步骤中,在 Compute 节点上启动临时 16.2 容器,以帮助加快工作负载迁移。
$ openstack overcloud upgrade run --stack <stack> --playbook upgrade_steps_playbook.yaml --tags nova_hybrid_state --limit all
在没有标签的情况下升级 overcloud:
$ openstack overcloud upgrade run --stack <stack> --limit <bootstrap_controller_node>
升级后,验证新 Pacemaker 集群是否已启动,并且 control plane 服务(如
galera
、rabbit
、haproxy
和redis
)正在运行:$ sudo pcs status
升级下一个 Controller 节点:
验证旧集群不再运行:
$ sudo pcs status
当集群没有运行时,会显示类似如下的错误:
Error: cluster is not currently running on this node
在 Controller 节点上执行操作系统的 Leapp 升级:
$ openstack overcloud upgrade run --stack <stack> --tags system_upgrade --limit <controller_node>
将
<controller_node
> 替换为要升级的 Controller 节点的主机名,如overcloud-controller-1
。Controller 节点作为 Leapp 升级的一部分重启。
升级 Controller 节点,将其添加到新 Pacemaker 集群中之前升级的节点:
$ openstack overcloud upgrade run --stack <stack> --limit <bootstrap_controller_node,controller_node_1,controller_node_n>
-
将 <
bootstrap_controller_node,controller_node_1,controller_node_n
> 替换为您目前升级的 Controller 节点列表,以及您要添加到 Pacemaker 集群的额外 Controller 节点,例如overcloud-controller-0、overcloud-controller-1、overcloud-controller-2
。
-
将 <
18.3. 使用 director 部署的 Ceph Storage 升级 Controller 节点
如果您的部署使用了使用 director 部署的 Red Hat Ceph Storage 集群,则必须完成此步骤。
要将所有 Controller 节点升级到 OpenStack Platform 16.2,您必须升级从 bootstrap Controller 节点开始的每个 Controller 节点。
在 bootstrap Controller 节点升级过程中,会创建一个新的 Pacemaker 集群,并在该节点上启动新的 Red Hat OpenStack 16.2 容器,剩余的 Controller 节点仍然在 Red Hat OpenStack 13 上运行。
升级 bootstrap 节点后,您必须使用 Pacemaker 服务升级每个额外节点,并确保每个节点加入使用 bootstrap 节点启动的新 Pacemaker 集群。有关更多信息,请参阅 Overcloud 节点升级工作流。
在本例中,控制器节点使用默认的 overcloud-controller-NODEID
约定。这包括以下三个控制器节点:
-
overcloud-controller-0
-
overcloud-controller-1
-
overcloud-controller-2
在适用的情况下,用自己的节点名称替换这些值。
流程
Source
stackrc
文件:$ source ~/stackrc
通过在 undercloud 节点上运行以下命令来识别 bootstrap Controller 节点:
$ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
-
可选:将
<stack_name
> 替换为堆栈的名称。如果未指定,则默认值为overcloud
。
-
可选:将
升级 bootstrap Controller 节点:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-0
将
<stack_name
> 替换为堆栈的名称。这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选 Controller 节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
作为 Leapp 升级的一部分执行重启。
重要下一个命令会导致 control plane 中断。在接下来的几个步骤中,您无法对 overcloud 执行任何标准操作。
使用
system_upgrade_transfer_data
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags system_upgrade_transfer_data
此命令将现有节点中数据库的最新版本复制到 bootstrap 节点。
使用
nova_hybrid_state
标签运行升级命令,仅运行upgrade_steps_playbook.yaml
playbook:$ openstack overcloud upgrade run [--stack <stack_name>] --playbook upgrade_steps_playbook.yaml --tags nova_hybrid_state --limit all
此命令在 Compute 节点上启动临时 16.2 容器,以帮助在升级 Compute 节点时协助工作负载迁移。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0
此命令执行 Red Hat OpenStack Platform 升级。
重要当此命令完成后,control plane 变为活跃的。您可以对 overcloud 执行标准操作。
在升级后,验证新 Pacemaker 集群是否启动,并且 control plane 服务(如 galera、rabbit、haproxy 和 redis)是否正在运行:
$ sudo pcs status
升级下一个 Controller 节点:
验证旧集群不再运行:
$ sudo pcs status
当集群没有运行时,会显示类似如下的错误:
Error: cluster is not currently running on this node
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-1
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选 Controller 节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。在下一个 Controller 节点上使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-1
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1
此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,将之前升级的 bootstrap 节点包括在
--limit
选项中。
升级最终的 Controller 节点:
验证旧集群不再运行:
$ sudo pcs status
当集群没有运行时,会显示类似如下的错误:
Error: cluster is not currently running on this node
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-2
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选 Controller 节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-2
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1,overcloud-controller-2
此命令执行 Red Hat OpenStack Platform 升级。在
--limit
选项中包含所有 Controller 节点。
18.4. 升级 Ceph Storage 节点的操作系统
如果您的部署使用了使用 director 部署的 Red Hat Ceph Storage 集群,则必须升级每个 Ceph Storage 节点的操作系统。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
选择 Ceph Storage 节点并升级操作系统:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephstorage-0
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephstorage-0
此命令将运行
config-download
playbook,并在 Ceph Storage 节点上配置可组合服务。这一步不会将 Ceph Storage 节点升级到 Red Hat Ceph Storage 4。Red Hat Ceph Storage 4 升级会在后续步骤中进行。
选择下一个 Ceph Storage 节点并升级操作系统:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephstorage-1
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-1
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephstorage-1
此命令将运行
config-download
playbook,并在 Ceph Storage 节点上配置可组合服务。这一步不会将 Ceph Storage 节点升级到 Red Hat Ceph Storage 4。Red Hat Ceph Storage 4 升级会在后续步骤中进行。
选择最终的 Ceph Storage 节点并升级操作系统:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephstorage-2
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-2
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephstorage-2
此命令将运行
config-download
playbook,并在 Ceph Storage 节点上配置可组合服务。这一步不会将 Ceph Storage 节点升级到 Red Hat Ceph Storage 4。Red Hat Ceph Storage 4 升级会在后续步骤中进行。
18.5. 升级 Compute 节点
将所有 Compute 节点升级到 OpenStack Platform 16.2。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
- 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机。
使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0
此命令执行 Red Hat OpenStack Platform 升级。
要并行升级多个 Compute 节点,请将
--limit
选项设置为要升级的节点列表。先执行system_upgrade
任务:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
然后执行标准 OpenStack 服务升级:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
18.6. 同步 overcloud 堆栈
升级需要更新 overcloud 堆栈,以确保堆栈资源结构和参数与全新 OpenStack Platform 16.2 部署一致。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
编辑
containers-prepare-parameter.yaml
文件并删除以下参数及其值:-
ceph3_namespace
-
ceph3_tag
-
ceph3_image
-
name_prefix_stein
-
name_suffix_stein
-
namespace_stein
-
tag_stein
-
-
要在 overcloud 中重新启用隔离,请在 fence
.yaml
环境文件中将EnableFencing
参数设置为true
。 运行升级最终化命令:
$ openstack overcloud upgrade converge \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
将
EnableFencing
参数设置为true
的环境文件(fencing.yaml
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待堆栈同步完成。
对于进一步的部署操作,您不需要 upgrade-environment.yaml
文件。
第 19 章 使用外部 Ceph 部署升级 overcloud
此场景包含具有外部 Ceph 部署的 overcloud 环境示例升级过程,它包括以下节点类型:
- 三个 Controller 节点
- 外部 Ceph Storage 集群
- 多个 Compute 节点
19.1. 运行 overcloud 升级准备
升级需要运行 openstack overcloud upgrade prepare
命令,它将执行以下任务:
- 将 overcloud 计划更新至 OpenStack Platform 16.2
- 为升级准备节点
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
运行升级准备命令:
$ openstack overcloud upgrade prepare \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待升级准备完成。
下载容器镜像:
$ openstack overcloud external-upgrade run --stack STACK NAME --tags container_image_prepare
19.2. 使用外部 Ceph 部署升级 Controller 节点
如果要使用外部 Ceph 部署升级,则必须完成此步骤。
要将所有 Controller 节点升级到 OpenStack Platform 16.2,您必须升级从 bootstrap Controller 节点开始的每个 Controller 节点。
在 bootstrap Controller 节点升级过程中,会创建一个新的 Pacemaker 集群,并在该节点上启动新的 Red Hat OpenStack 16.2 容器,剩余的 Controller 节点仍然在 Red Hat OpenStack 13 上运行。
升级 bootstrap 节点后,您必须使用 Pacemaker 服务升级每个额外节点,并确保每个节点加入使用 bootstrap 节点启动的新 Pacemaker 集群。有关更多信息,请参阅 Overcloud 节点升级工作流。
在本例中,控制器节点使用默认的 overcloud-controller-NODEID
约定。这包括以下三个控制器节点:
-
overcloud-controller-0
-
overcloud-controller-1
-
overcloud-controller-2
在适用的情况下,用自己的节点名称替换这些值。
流程
Source
stackrc
文件:$ source ~/stackrc
通过在 undercloud 节点上运行以下命令来识别 bootstrap Controller 节点:
$ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
-
可选:将
<stack_name
> 替换为堆栈的名称。如果未指定,则默认值为overcloud
。
-
可选:将
升级 bootstrap Controller 节点:
使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
作为 Leapp 升级的一部分执行重启。
重要下一个命令会导致 control plane 中断。在接下来的几个步骤中,您无法对 overcloud 执行任何标准操作。
使用
system_upgrade_transfer_data
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags system_upgrade_transfer_data
此命令将现有节点中数据库的最新版本复制到 bootstrap 节点。
使用
nova_hybrid_state
标签运行升级命令,仅运行upgrade_steps_playbook.yaml
playbook:$ openstack overcloud upgrade run [--stack <stack_name>] --playbook upgrade_steps_playbook.yaml --tags nova_hybrid_state --limit all
此命令在 Compute 节点上启动临时 16.2 容器,以帮助在升级 Compute 节点时协助工作负载迁移。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0
此命令执行 Red Hat OpenStack Platform 升级。
重要当此命令完成后,control plane 变为活跃的。您可以对 overcloud 执行标准操作。
在升级后,验证新 Pacemaker 集群是否启动,并且 control plane 服务(如 galera、rabbit、haproxy 和 redis)是否正在运行:
$ sudo pcs status
升级下一个 Controller 节点:
验证旧集群不再运行:
$ sudo pcs status
当集群没有运行时,会显示类似如下的错误:
Error: cluster is not currently running on this node
在下一个 Controller 节点上使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-1
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1
此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,将之前升级的 bootstrap 节点包括在
--limit
选项中。
升级最终的 Controller 节点:
验证旧集群不再运行:
$ sudo pcs status
当集群没有运行时,会显示类似如下的错误:
Error: cluster is not currently running on this node
使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-2
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1,overcloud-controller-2
此命令执行 Red Hat OpenStack Platform 升级。在
--limit
选项中包含所有 Controller 节点。
19.3. 升级 Compute 节点
将所有 Compute 节点升级到 OpenStack Platform 16.2。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
- 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机。
使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0
此命令执行 Red Hat OpenStack Platform 升级。
要并行升级多个 Compute 节点,请将
--limit
选项设置为要升级的节点列表。先执行system_upgrade
任务:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
然后执行标准 OpenStack 服务升级:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
19.4. 同步 overcloud 堆栈
升级需要更新 overcloud 堆栈,以确保堆栈资源结构和参数与全新 OpenStack Platform 16.2 部署一致。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
编辑
containers-prepare-parameter.yaml
文件并删除以下参数及其值:-
ceph3_namespace
-
ceph3_tag
-
ceph3_image
-
name_prefix_stein
-
name_suffix_stein
-
namespace_stein
-
tag_stein
-
-
要在 overcloud 中重新启用隔离,请在 fence
.yaml
环境文件中将EnableFencing
参数设置为true
。 运行升级最终化命令:
$ openstack overcloud upgrade converge \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
将
EnableFencing
参数设置为true
的环境文件(fencing.yaml
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待堆栈同步完成。
对于进一步的部署操作,您不需要 upgrade-environment.yaml
文件。
第 20 章 加快 overcloud 升级
为了加快 overcloud 升级过程,您可以逐步升级 control plane,或一次性升级所有节点。
递增升级
您可以一次升级 control plane 的 1/3。升级 control plane 的第一个 1/3 后,您可以将您的环境移至运行 control plane API 的混合模式,以及云可以正常工作。只有在整个 control plane 升级后,才能恢复高可用性操作性能。
第 20.1 到 20.4 节,包含 overcloud 环境的示例升级过程,其中包括以下具有可组合角色的节点类型:
- 三个 Controller 节点
- 三个数据库节点
- 三个网络节点
- 三个 Ceph Storage 节点
- 多个 Compute 节点
一次升级整个 overcloud
通过一次升级整个 overcloud,您可以更快地完成升级。请注意,这个选项要求您使 control plane 和 data plane 离线。
要升级整个 overcloud,请参阅 第 20.5 节 “一次升级整个 overcloud”。
20.1. 运行 overcloud 升级准备
升级需要运行 openstack overcloud upgrade prepare
命令,它将执行以下任务:
- 将 overcloud 计划更新至 OpenStack Platform 16.2
- 为升级准备节点
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
运行升级准备命令:
$ openstack overcloud upgrade prepare \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待升级准备完成。
下载容器镜像:
$ openstack overcloud external-upgrade run --stack STACK NAME --tags container_image_prepare
20.2. 升级 control plane 节点
要将环境中的 control plane 节点升级到 OpenStack Platform 16.2,您必须一次升级 control plane 节点的 1/3,从 bootstrap 节点开始。
在 bootstrap Controller 节点升级过程中,会创建一个新的 Pacemaker 集群,并在该节点上启动新的 Red Hat OpenStack 16.2 容器,剩余的 Controller 节点继续在 Red Hat OpenStack 13 上运行。
本例包括以下具有可组合角色的节点类型。control plane 节点使用默认的 overcloud-ROLE-NODEID
约定命名:
-
overcloud-controller-0
-
overcloud-controller-1
-
overcloud-controller-2
-
overcloud-database-0
-
overcloud-database-1
-
overcloud-database-2
-
overcloud-networker-0
-
overcloud-networker-1
-
overcloud-networker-2
-
overcloud-ceph-0
-
overcloud-ceph-1
-
overcloud-ceph-2
在适用的情况下,为您自己的节点名称替换这些值。
升级 overcloud-controller-0
、overcloud-database-0
、overcloud-networker-0
和 overcloud-ceph-0
bootstrap 节点后,其中包含 control plane 节点的第一个 1/3,您必须使用 Pacemaker 服务升级每个额外的 1/3 节点,并确保每个节点加入使用 bootstrap 节点启动的新 Pacemaker 集群。因此,在升级 overcloud-controller-2
, overcloud-database-2
, overcloud-networker-2
, 和 overcloud-ceph-2
之前,您必须升级 overcloud-controller-1
, overcloud-database-1
, overcloud-networker-1
, 和 overcloud-ceph-1
。
流程
-
以
stack
用户身份登录 undercloud 主机。 Source
stackrc
文件:$ source ~/stackrc
在 undercloud 节点上,识别 bootstrap Controller 节点:
$ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
-
可选:将
<stack_name
> 替换为堆栈的名称。如果未指定,则默认值为overcloud
。
-
可选:将
升级
overcloud-controller-0
、overcloud-database-0
、overcloud-networker-0
和overcloud-ceph-0
control plane 节点:使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack <stack_name> --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-0,overcloud-database-0,overcloud-networker-0,overcloud-ceph-0
这个命令执行以下操作:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
这一步是准备 Ceph Storage 服务进行 Leapp 升级的简明措施。
在每个 control plane 节点上执行操作系统的 Leapp 升级:
$ openstack overcloud upgrade run --stack <stack_name> --tags system_upgrade --limit overcloud-controller-0,overcloud-database-0,overcloud-networker-0,overcloud-ceph-0
control plane 节点作为 Leapp 升级的一部分重启。
重要如果 Ceph 节点升级失败,请确保
controller-0
已完成升级,然后再进行剩余升级。将数据库的最新版本从现有节点复制到 bootstrap 节点:
$ openstack overcloud external-upgrade run --stack <stack_name> --tags system_upgrade_transfer_data
重要此命令会导致 control plane 上的中断。在接下来的几个步骤中,您无法对 overcloud 执行任何标准操作。
使用
nova_hybrid_state
标签运行升级命令,仅运行upgrade_steps_playbook.yaml
playbook:$ openstack overcloud upgrade run --stack <stack_name> \ --playbook upgrade_steps_playbook.yaml \ --tags nova_hybrid_state --limit all
此命令在 Compute 节点上启动临时 16.2 容器,以帮助在升级 Compute 节点时协助工作负载迁移。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack <stack_name> --limit overcloud-controller-0,overcloud-database-0,overcloud-networker-0,overcloud-ceph-0 --playbook all
此命令执行 Red Hat OpenStack Platform 升级。
重要当此命令完成后,control plane 变为活跃的。您可以对 overcloud 执行标准操作。
可选:在 bootstrap Controller 节点上,验证升级后是否启动新的 Pacemaker 集群,并且 control plane 服务(如 galera、rabbit、haproxy 和 redis)正在运行:
$ sudo pcs status
升级
overcloud-controller-1
、overcloud-database-1
、overcloud-networker-1
和overcloud-ceph-1
control plane 节点:登录
overcloud-controller-1
节点,并验证旧集群不再运行:$ sudo pcs status
当集群没有运行时,会显示类似如下的错误:
Error: cluster is not currently running on this node
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack <stack_name> --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-1,overcloud-database-1,overcloud-networker-1,overcloud-ceph-1
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
这一步是准备 Ceph Storage 服务进行 Leapp 升级的简明措施。
使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack <stack_name> --tags system_upgrade --limit overcloud-controller-1,overcloud-database-1,overcloud-networker-1,overcloud-ceph-1
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack <stack_name> --limit overcloud-controller-0,overcloud-controller-1,overcloud-database-0,overcloud-database-1,overcloud-networker-0,overcloud-networker-1,overcloud-ceph-0,overcloud-ceph-1
此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,将之前升级的 bootstrap 节点包括在
--limit
选项中。
升级
overcloud-controller-2
、overcloud-database-2
、overcloud-networker-2
和overcloud-ceph-2
control plane 节点:登录
overcloud-controller-2
节点,并验证旧集群不再运行:$ sudo pcs status
当集群没有运行时,会显示类似如下的错误:
Error: cluster is not currently running on this node
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack <stack_name> --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-2,overcloud-database-2,overcloud-networker-2,overcloud-ceph-2
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
这一步是准备 Ceph Storage 服务进行 Leapp 升级的简明措施。
使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack <stack_name> --tags system_upgrade --limit overcloud-controller-2,overcloud-database-2,overcloud-networker-2,overcloud-ceph-2
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack <stack_name> --limit overcloud-controller-0,overcloud-controller-1,overcloud-controller-2,overcloud-database-0,overcloud-database-1,overcloud-database-2,overcloud-networker-0,overcloud-networker-1,overcloud-networker-2,overcloud-ceph-0,overcloud-ceph-1,overcloud-ceph-2
此命令执行 Red Hat OpenStack Platform 升级。在
--limit
选项中包含所有 control plane 节点。
20.3. 并行升级 Compute 节点
要将大量 Compute 节点升级到 OpenStack Platform 16.2,您可以在 20 个节点上并行运行 openstack overcloud upgrade run
命令,并使用 --limit Compute
选项并行运行。
您可以在后台运行多个升级任务,每个任务都会升级一个单独的 20 个节点组。当您使用这个方法并行升级 Compute 节点时,您无法选择升级哪些节点。节点的选择是基于在运行 tripleo-ansible-inventory
命令时生成的清单文件。例如,如果您的部署中有 80 个 Compute 节点,您可以运行以下命令来并行更新 Compute 节点:
$ openstack overcloud upgrade run -y --limit 'Compute[0:19]' > upgrade-compute-00-19.log 2>&1 & $ openstack overcloud upgrade run -y --limit 'Compute[20:29]' > upgrade-compute-20-29.log 2>&1 & $ openstack overcloud upgrade run -y --limit 'Compute[40:59]' > update-compute-40-59.log 2>&1 & $ openstack overcloud upgrade run -y --limit 'Compute[60:79]' > update-compute-60-79.log 2>&1 &
要升级特定的 Compute 节点,请使用以逗号分隔的节点列表:
$ openstack overcloud upgrade run --limit <Compute0>,<Compute1>,<Compute2>,<Compute3>
如果您不使用默认堆栈名称 overcloud
,请使用 --stack STACK NAME
选项,并将 STACK NAME
替换为堆栈的名称。
流程
-
以
stack
用户身份登录 undercloud 主机。 Source
stackrc
文件:$ source ~/stackrc
- 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机。
使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run -y --stack STACK NAME --tags system_upgrade --limit 'Compute[0:19]' > upgrade-compute-00-19.log 2>&1 & $ openstack overcloud upgrade run -y --stack STACK NAME --tags system_upgrade --limit 'Compute[20:29]' > upgrade-compute-20-29.log 2>&1 & $ openstack overcloud upgrade run -y --stack STACK NAME --tags system_upgrade --limit 'Compute[40:59]' > update-compute-40-59.log 2>&1 & $ openstack overcloud upgrade run -y --stack STACK NAME --tags system_upgrade --limit 'Compute[60:79]' > update-compute-60-79.log 2>&1 &
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run -y --stack STACK NAME --limit 'Compute[0:19]' > upgrade-compute-00-19.log 2>&1 & $ openstack overcloud upgrade run -y --stack STACK NAME --limit 'Compute[20:29]' > upgrade-compute-20-29.log 2>&1 & $ openstack overcloud upgrade run -y --stack STACK NAME --limit 'Compute[40:59]' > update-compute-40-59.log 2>&1 & $ openstack overcloud upgrade run -y --stack STACK NAME --limit 'Compute[60:79]' > update-compute-60-79.log 2>&1 &
此命令执行 Red Hat OpenStack Platform 升级。
可选: 要升级所选 Compute 节点,请使用
--limit
选项以及您要升级的节点列表。下例将overcloud-compute-0
、overcloud-compute-1
、overcloud-compute-2
节点并行升级。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
20.4. 同步 overcloud 堆栈
升级需要更新 overcloud 堆栈,以确保堆栈资源结构和参数与全新 OpenStack Platform 16.2 部署一致。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
编辑
containers-prepare-parameter.yaml
文件并删除以下参数及其值:-
ceph3_namespace
-
ceph3_tag
-
ceph3_image
-
name_prefix_stein
-
name_suffix_stein
-
namespace_stein
-
tag_stein
-
-
要在 overcloud 中重新启用隔离,请在 fence
.yaml
环境文件中将EnableFencing
参数设置为true
。 运行升级最终化命令:
$ openstack overcloud upgrade converge \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
将
EnableFencing
参数设置为true
的环境文件(fencing.yaml
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待堆栈同步完成。
对于进一步的部署操作,您不需要 upgrade-environment.yaml
文件。
20.5. 一次升级整个 overcloud
此升级过程要求您首先关闭 overcloud 中运行的所有工作负载。然后,您可以升级所有 overcloud 系统,并在之后重启工作负载。此过程由 undercloud 驱动。
您还可以升级包括 Red Hat Ceph Storage 的 Compute 节点作为此流程的一部分,或者在升级所有其他节点后单独升级它们。
先决条件
在 upgrade
-environment.yaml
文件中,在parameter_defaults
中包含以下参数:AllInOneUpgrade: true
流程
- 关闭工作负载。
如果您部署了 director 的 Ceph,请将 Ceph systemd 文件切换到 podman:
$ openstack overcloud external-upgrade run --stack overcloud --tags ceph_systemd -e ceph_ansible_limit=controller-0,controller-1,controller-2,ceph-0,ceph-1,ceph-2,networker-0,networker-1
-
将
controller-0
,controller-1
,controller-2
,ceph-0
,ceph-1
,ceph-2
,networker-0
,networker-1
替换为环境中角色的服务器名称。 要升级包含 Ceph 的 Compute 节点,请在
openstack overcloud external-upgrade run
命令中包含 Compute 节点的主机名。例如:$ openstack overcloud upgrade run --stack overcloud --tags ceph_systemd -e ceph_ansible_limit=overcloud-compute-0,overcloud-compute-1
此外,在第 4 和 5 步的命令中包括 Compute 节点的主机名。
-
将
停止节点上的所有 RHOSP 服务:
$ openstack overcloud external-upgrade run --stack overcloud --tags system_upgrade_stop_services
在所有节点上运行系统升级。如果您部署了 director 集成的 Ceph,请在同一 --limit 命令中包含所有 Ceph 节点:
$ openstack overcloud upgrade run --stack overcloud --tags system_upgrade --limit controller-0,controller-1,controller-2,ceph-0,ceph-1,ceph-2,networker-0,networker-1
在没有标签的情况下运行升级:
$ openstack overcloud upgrade run --stack overcloud --limit controller-0,controller-1,controller-2,ceph-0,ceph-1,ceph-2,networker-0,networker-1
后续步骤
- 继续升级,从 同步 overcloud 堆栈。
第 21 章 升级分割 Controller overcloud
此场景包含带有 Controller 节点服务的 overcloud 的示例升级过程被分成多个节点。这包括以下节点类型:
- 使用 Pacemaker 的多个分割高可用性服务
- 多个分离控制器服务
- 三个 Ceph MON 节点
- 三个 Ceph Storage 节点
- 多个 Compute 节点
21.1. 运行 overcloud 升级准备
升级需要运行 openstack overcloud upgrade prepare
命令,它将执行以下任务:
- 将 overcloud 计划更新至 OpenStack Platform 16.2
- 为升级准备节点
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
运行升级准备命令:
$ openstack overcloud upgrade prepare \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待升级准备完成。
下载容器镜像:
$ openstack overcloud external-upgrade run --stack STACK NAME --tags container_image_prepare
21.2. 升级基于 Pacemaker 的节点
将托管 Pacemaker 服务的所有节点升级到 OpenStack Platform 16.2。以下角色包括基于 Pacemaker 的服务:
- Controller
- 数据库(MySQL、Galeral)
- 消息传递(RabbitMQ)
- 负载均衡(HAProxy)
包含以下服务的任何其他角色:
-
OS::TripleO::Services::Pacemaker
-
OS::TripleO::Services::PacemakerRemote
-
此过程涉及从 bootstrap 节点开始升级每个节点。
流程
Source
stackrc
文件:$ source ~/stackrc
通过在 undercloud 节点上运行以下命令来识别 bootstrap 节点:
$ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
-
可选:将
<stack_name
> 替换为堆栈的名称。如果未指定,则默认值为overcloud
。
-
可选:将
升级 bootstrap 节点:
如果节点包含 Ceph Storage 容器,请使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-0
将
<stack_name
> 替换为堆栈的名称。这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
使用
system_upgrade_transfer_data
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags system_upgrade_transfer_data
此命令将现有节点中数据库的最新版本复制到 bootstrap 节点。
使用
nova_hybrid_state
标签运行升级命令,仅运行upgrade_steps_playbook.yaml
playbook:$ openstack overcloud upgrade run [--stack <stack_name>] --playbook upgrade_steps_playbook.yaml --tags nova_hybrid_state --limit all
此命令在 Compute 节点上启动临时 16.2 容器,以帮助在升级 Compute 节点时协助工作负载迁移。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0
此命令执行 Red Hat OpenStack Platform 升级。
升级每个基于 Pacemaker 的节点:
如果节点包含 Ceph Storage 容器,请使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-database-0
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。在下一个节点上,使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-database-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-database-0
此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,在
--limit
选项中包含之前升级的节点。
- 在每个基于 Pacemaker 的节点上重复升级过程,直到您已升级了所有基于 Pacemaker 的节点。
21.3. 升级非 Pacemaker Controller 节点
将没有基于 Pacemaker 的服务的所有节点升级到 OpenStack Platform 16.2。这些节点通常包含特定的 OpenStack 服务。没有基于 Pacemaker 的服务的角色示例包括:
- Networker
- ironic Conductor
- Object Storage
- 任何带有服务的自定义角色从标准 Controller 节点分离或扩展
不要在此分组中包括以下节点:
- 任何 Compute 节点
- 任何 Ceph Storage 节点
这个过程涉及升级每个节点。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-networker-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-networker-0
此命令执行 Red Hat OpenStack Platform 升级。
- 在每个节点上重复升级过程,直到您已升级了所有基于 Controller 的节点。
21.4. 升级 Ceph MON 节点的操作系统
为每个 Ceph MON 节点升级操作系统。建议单独升级每个 Ceph MON 节点,以便在节点间维护仲裁。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
选择 Ceph MON 节点并升级操作系统:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephmon-0
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephmon-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephmon-0
此命令将运行
config-download
playbook,并在 Ceph MON 节点上配置可组合服务。这一步不会将 Ceph MON 节点升级到 Red Hat Ceph Storage 4。Red Hat Ceph Storage 4 升级会在后续步骤中进行。
选择下一个 Ceph MON 节点并升级操作系统:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephmon-1
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephmon-1
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephmon-1
此命令将运行
config-download
playbook,并在 Ceph MON 节点上配置可组合服务。这一步不会将 Ceph MON 节点升级到 Red Hat Ceph Storage 4。Red Hat Ceph Storage 4 升级会在后续步骤中进行。
选择最终的 Ceph MON 节点并升级操作系统:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephmon-2
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephmon-2
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephmon-2
此命令将运行
config-download
playbook,并在 Ceph MON 节点上配置可组合服务。这一步不会将 Ceph MON 节点升级到 Red Hat Ceph Storage 4。Red Hat Ceph Storage 4 升级会在后续步骤中进行。
21.5. 升级 Ceph Storage 节点的操作系统
如果您的部署使用了使用 director 部署的 Red Hat Ceph Storage 集群,则必须升级每个 Ceph Storage 节点的操作系统。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
选择 Ceph Storage 节点并升级操作系统:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephstorage-0
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephstorage-0
此命令将运行
config-download
playbook,并在 Ceph Storage 节点上配置可组合服务。这一步不会将 Ceph Storage 节点升级到 Red Hat Ceph Storage 4。Red Hat Ceph Storage 4 升级会在后续步骤中进行。
选择下一个 Ceph Storage 节点并升级操作系统:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephstorage-1
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-1
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephstorage-1
此命令将运行
config-download
playbook,并在 Ceph Storage 节点上配置可组合服务。这一步不会将 Ceph Storage 节点升级到 Red Hat Ceph Storage 4。Red Hat Ceph Storage 4 升级会在后续步骤中进行。
选择最终的 Ceph Storage 节点并升级操作系统:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephstorage-2
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-2
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephstorage-2
此命令将运行
config-download
playbook,并在 Ceph Storage 节点上配置可组合服务。这一步不会将 Ceph Storage 节点升级到 Red Hat Ceph Storage 4。Red Hat Ceph Storage 4 升级会在后续步骤中进行。
21.6. 升级 Compute 节点
将所有 Compute 节点升级到 OpenStack Platform 16.2。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
- 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机。
使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0
此命令执行 Red Hat OpenStack Platform 升级。
要并行升级多个 Compute 节点,请将
--limit
选项设置为要升级的节点列表。先执行system_upgrade
任务:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
然后执行标准 OpenStack 服务升级:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
21.7. 同步 overcloud 堆栈
升级需要更新 overcloud 堆栈,以确保堆栈资源结构和参数与全新 OpenStack Platform 16.2 部署一致。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
编辑
containers-prepare-parameter.yaml
文件并删除以下参数及其值:-
ceph3_namespace
-
ceph3_tag
-
ceph3_image
-
name_prefix_stein
-
name_suffix_stein
-
namespace_stein
-
tag_stein
-
-
要在 overcloud 中重新启用隔离,请在 fence
.yaml
环境文件中将EnableFencing
参数设置为true
。 运行升级最终化命令:
$ openstack overcloud upgrade converge \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
将
EnableFencing
参数设置为true
的环境文件(fencing.yaml
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待堆栈同步完成。
对于进一步的部署操作,您不需要 upgrade-environment.yaml
文件。
第 22 章 使用超融合基础架构升级 overcloud
此场景包含带有超融合基础架构(HCI)的 overcloud 升级过程示例,其中包括以下节点类型:
- 三个 Controller 节点
- 多个 HCI Compute 节点,其中包含计算和 Ceph OSD 服务
22.1. 运行 overcloud 升级准备
升级需要运行 openstack overcloud upgrade prepare
命令,它将执行以下任务:
- 将 overcloud 计划更新至 OpenStack Platform 16.2
- 为升级准备节点
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
运行升级准备命令:
$ openstack overcloud upgrade prepare \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待升级准备完成。
下载容器镜像:
$ openstack overcloud external-upgrade run --stack STACK NAME --tags container_image_prepare
22.2. 使用 director 部署的 Ceph Storage 升级 Controller 节点
如果您的部署使用了使用 director 部署的 Red Hat Ceph Storage 集群,则必须完成此步骤。
要将所有 Controller 节点升级到 OpenStack Platform 16.2,您必须升级从 bootstrap Controller 节点开始的每个 Controller 节点。
在 bootstrap Controller 节点升级过程中,会创建一个新的 Pacemaker 集群,并在该节点上启动新的 Red Hat OpenStack 16.2 容器,剩余的 Controller 节点仍然在 Red Hat OpenStack 13 上运行。
升级 bootstrap 节点后,您必须使用 Pacemaker 服务升级每个额外节点,并确保每个节点加入使用 bootstrap 节点启动的新 Pacemaker 集群。有关更多信息,请参阅 Overcloud 节点升级工作流。
在本例中,控制器节点使用默认的 overcloud-controller-NODEID
约定。这包括以下三个控制器节点:
-
overcloud-controller-0
-
overcloud-controller-1
-
overcloud-controller-2
在适用的情况下,用自己的节点名称替换这些值。
流程
Source
stackrc
文件:$ source ~/stackrc
通过在 undercloud 节点上运行以下命令来识别 bootstrap Controller 节点:
$ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
-
可选:将
<stack_name
> 替换为堆栈的名称。如果未指定,则默认值为overcloud
。
-
可选:将
升级 bootstrap Controller 节点:
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-0
将
<stack_name
> 替换为堆栈的名称。这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选 Controller 节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
作为 Leapp 升级的一部分执行重启。
重要下一个命令会导致 control plane 中断。在接下来的几个步骤中,您无法对 overcloud 执行任何标准操作。
使用
system_upgrade_transfer_data
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags system_upgrade_transfer_data
此命令将现有节点中数据库的最新版本复制到 bootstrap 节点。
使用
nova_hybrid_state
标签运行升级命令,仅运行upgrade_steps_playbook.yaml
playbook:$ openstack overcloud upgrade run [--stack <stack_name>] --playbook upgrade_steps_playbook.yaml --tags nova_hybrid_state --limit all
此命令在 Compute 节点上启动临时 16.2 容器,以帮助在升级 Compute 节点时协助工作负载迁移。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0
此命令执行 Red Hat OpenStack Platform 升级。
重要当此命令完成后,control plane 变为活跃的。您可以对 overcloud 执行标准操作。
在升级后,验证新 Pacemaker 集群是否启动,并且 control plane 服务(如 galera、rabbit、haproxy 和 redis)是否正在运行:
$ sudo pcs status
升级下一个 Controller 节点:
验证旧集群不再运行:
$ sudo pcs status
当集群没有运行时,会显示类似如下的错误:
Error: cluster is not currently running on this node
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-1
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选 Controller 节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。在下一个 Controller 节点上使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-1
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1
此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,将之前升级的 bootstrap 节点包括在
--limit
选项中。
升级最终的 Controller 节点:
验证旧集群不再运行:
$ sudo pcs status
当集群没有运行时,会显示类似如下的错误:
Error: cluster is not currently running on this node
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-2
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量将操作限制为所选 Controller 节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-2
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1,overcloud-controller-2
此命令执行 Red Hat OpenStack Platform 升级。在
--limit
选项中包含所有 Controller 节点。
22.3. 使用超融合基础架构(HCI)升级计算节点
将 HCI 计算节点升级到 OpenStack Platform 16.2。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
- 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机。
使用
ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-computehci-0
这个命令执行以下功能:
- 更改控制 Ceph 存储容器的 systemd 单元以使用 Podman 管理。
-
使用
ceph_ansible_limit
变量,将操作限制为所选 Ceph Storage 节点。
此步骤是一种初步措施,可为
leapp
升级准备 Ceph Storage 服务。使用
system_upgrade
标签运行升级命令:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-computehci-0
这个命令执行以下操作:
- 对操作系统执行 Leapp 升级。
- 作为 Leapp 升级的一部分执行重启。
在没有标签的情况下运行升级命令:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-computehci-0
此命令执行 Red Hat OpenStack Platform 升级。
要并行升级多个 Compute 节点,请将
--limit
选项设置为要升级的节点列表。首先使用ceph_systemd
标签运行外部升级命令:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-computehci-0,overcloud-computehci-1,overcloud-computehci-2
然后执行
system_upgrade
任务:$ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-computehci-0,overcloud-computehci-1,overcloud-computehci-2
然后执行标准 OpenStack 服务升级:
$ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-computehci-0,overcloud-computehci-1,overcloud-computehci-2
22.4. 同步 overcloud 堆栈
升级需要更新 overcloud 堆栈,以确保堆栈资源结构和参数与全新 OpenStack Platform 16.2 部署一致。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
编辑
containers-prepare-parameter.yaml
文件并删除以下参数及其值:-
ceph3_namespace
-
ceph3_tag
-
ceph3_image
-
name_prefix_stein
-
name_suffix_stein
-
namespace_stein
-
tag_stein
-
-
要在 overcloud 中重新启用隔离,请在 fence
.yaml
环境文件中将EnableFencing
参数设置为true
。 运行升级最终化命令:
$ openstack overcloud upgrade converge \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/templates/rhsm.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ …
包括与您的环境相关的以下选项:
-
环境文件 (
upgrades-environment.yaml
) 带有特定于升级的参数 (-e
)。 -
将
EnableFencing
参数设置为true
的环境文件(fencing.yaml
)。 -
使用注册和订阅参数(
-e
)的环境文件(rhsm.yaml
)。 -
带有新容器镜像位置(
-e
)的环境文件(containers-prepare-parameter.yaml
)。在大多数情况下,这与 undercloud 使用的环境文件相同。 -
用于维护 OVS 兼容性的环境文件(
neutron-ovs.yaml
)。 -
与部署相关的任何自定义配置环境文件(
-e
)。 -
如果适用,您的自定义角色(
roles_data
)文件使用--roles-file
。 -
适用,使用
--networks-file
可组合网络(network_data
)文件。 -
如果您使用自定义堆栈名称,请使用
--stack
选项传递名称。
-
环境文件 (
- 等待堆栈同步完成。
对于进一步的部署操作,您不需要 upgrade-environment.yaml
文件。
第 23 章 将 director 部署的 Ceph Storage 集群升级到 Red Hat Ceph Storage 4
如果您的部署使用了使用 director 部署的 Red Hat Ceph Storage 集群,则必须完成本节中所含的步骤。
当您将 Red Hat Ceph Storage 集群从之前的版本升级到 4.2z2 时,升级会在 HEALTH_WARN
状态中使用存储集群完成,并带有指示 monitor 允许不安全 global_id
重新声明 的警告信息。这是因为补丁的 CVE(CVE-2021-20288),请参阅 带有 'mons 的 Ceph HEALTH_WARN,在安装到 RHCS 4.2z2(或更新版本)后允许 global_id reclaim'。
因为 HEALTH_WARN
状态是由于 CVE 造成的,因此可能会临时返回健康状况警告。但是,如果您执行警告时没有看到潜在的旧和未修补至集群的客户端,则存在风险。有关沟通健康警告的更多信息,请参阅 Red Hat Ceph Storage 文档中的升级 Red Hat Ceph Storage 集群。
如果您要使用外部 Ceph 部署升级,则必须跳过本节中所含的步骤,并继续进行下一部分。
在升级 overcloud 后,将 director 部署的 Ceph Storage 集群升级到 Red Hat Ceph Storage 集群版本 4。
23.1. 安装 ceph-ansible
如果您的部署使用了使用 director 部署的 Red Hat Ceph Storage 集群,则必须完成此步骤。
当在 Red Hat OpenStack Platform 中使用 Ceph Storage 时,需要 ceph-ansible
软件包。
流程
启用 Ceph 工具存储库:
[stack@director ~]$ sudo subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
安装
ceph-ansible
软件包:[stack@director ~]$ sudo dnf install -y ceph-ansible
23.2. 升级到 Ceph Storage 4
将 Ceph Storage 节点从版本 3 升级到版本 4。
如果您不使用默认堆栈名称(overcloud
),请将堆栈名称设置为 --stack STACK NAME
选项,将 STACK NAME
替换为您的堆栈的名称。
流程
Source
stackrc
文件:$ source ~/stackrc
使用
ceph
标签运行 Ceph Storage 外部升级过程:$ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph
- 等待 Ceph Storage 升级完成。
第 24 章 OSD 从 FileStore 迁移到 BlueStore
完成并验证升级过程后,您必须将 FileStore OSD 迁移到 BlueStore。您必须一次完成一个节点。以下流程使用 ceph-ansible
完成迁移。只有由 director 部署 Ceph 集群时才应用此步骤。
24.1. 检查集群是否在运行 FileStore,因此需要迁移
流程
-
在具有 Ceph MON 容器的节点上,以
heat-admin
用户身份登录,如 Controller 节点或单机 Ceph MON 节点。例如,在标准 overcloud 部署中,overcloud-controller-1
使用 Ceph MON 容器。 查询 Ceph 集群,以查看 OSD 使用什么驱动程序:
[heat-admin@overcloud-controller-1 ~]$ sudo -i [root@overcloud-controller-1 ~]# podman exec -it ceph-mon-overcloud-controller-1 sh -c "ceph -f json osd metadata" | jq -c 'sort_by(.hostname) | .[] | ["host", .hostname, "osd_id", .id, "objectstore", .osd_objectstore]' [root@overcloud-controller-1 ~]#
-
如果有任何行返回
"objectstore": "filestore"
,则该节点需要 OSD 迁移。
迁移时间可能会因集群大小而异。如果您有一个非常大的集群,迁移时间与该集群中的 OSD 数量成比例,以及保存的数据量。确保尽快完成迁移,以便您的环境不在混合架构场景中,从而影响性能。
因为使用 Red Hat Ceph Storage (RHCS) 4 版本的 ceph-ansible
管理基于 FileStore 的 OSD 不被支持,所以在运行任何堆栈更新前先完成迁移。
24.2. 将 OSD 从 FileStore 迁移到 BlueStore
要从 FileStore 迁移到 BlueStore,director 使用 Ansible 删除并重新创建节点上的所有 OSD。director 在迁移过程前执行容量检查。最后,director 会使用 BlueStore 后端销毁 OSD。
您可以通过增加回填和恢复操作的节流,加快从 FileStore 迁移到 BlueStore。有关节流的更多信息,请参阅红帽知识库文章 Ceph:排除回填和恢复和重新平衡。在开始节流步骤前,请联络 Red Hat Ceph Storage 团队,以确保流程可以安全地在您的环境中使用。
先决条件
功能并运行 Red Hat Ceph Storage (RHCS) 4 集群。您可以通过在 Controller 或 Standalone Ceph MON 节点上的 ceph MON 容器中输入以下命令来检查集群:
[root@overcloud-controller-1 ~]# podman exec -it ceph-mon-overcloud-controller-1 sh -c "ceph -s"
流程
确保
CephAnsibleDisksConfig
参数中的osd_objectstore
没有默认为文件存储
。如果osd_objectstore
参数存在于任何自定义 heat 环境文件中,您必须明确定义值bluestore
或删除它:parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd osd_scenario: lvm osd_objectstore: bluestore
注意如果您有任何特定的 FileStore 配置,例如日志,请确保相应地更新配置。有关高级配置的更多信息,请参阅 Deploying an overcloud with containerized Red Hat Ceph 指南中的 Mapping the Ceph Storage Node Disk Layout。
-
以
stack
用户的身份登录 undercloud。 使用
ceph_fstobs
标签输入openstack overcloud external-upgrade run
命令。将<NODE_NAME
> 替换为您要升级的 Ceph OSD 节点的名称。您可以使用openstack server list
命令查找节点名称。[stack@undercloud ~] $ openstack overcloud external-upgrade run --tags ceph_fstobs -e ceph_ansible_limit=<NODE_NAME> | tee oc-fstobs.log
登录具有 Ceph MON 服务的节点,再查询 Ceph 集群以检查已升级节点的 OSD 的状态。在启动下一个 OSD 节点的迁移前,您必须确定已升级的节点已成功迁移:
[heat-admin@overcloud-controller-1 ~]$ sudo -i [root@overcloud-controller-1 ~]# podman exec -it ceph-mon-overcloud-controller-1 sh -c "ceph -f json osd metadata" | jq -c '.[] | select(.hostname == "<NODE_NAME>") | ["host", .hostname, "osd_id", .id, "objectstore", .osd_objectstore]' [root@overcloud-controller-1 ~]# exit
将 <NODE_NAME> 替换为迁移的节点的名称。如果结果显示 OSD 使用 BlueStore,则其迁移会成功。
可选: 要查看有关特定 OSD 的额外详情,请输入以下命令:
[root@overcloud-controller-1 ~]# podman exec -it ceph-mon-overcloud-controller-1 sh -c "ceph osd metadata <ID>"
将 <ID> 替换为您要查询的 OSD 的 ID。
在下一个节点上启动迁移过程前,您必须等待集群同步。
[root@overcloud-controller-1 ~]# podman exec -it ceph-mon-overcloud-controller-1 sh -c "ceph -s"
Review the command output and ensure that the health of the cluster is `HEALTH_OK` and the PGs are in the `active+clean` state.
在下一个节点上启动迁移过程前,您必须等待集群重新平衡过程完成。要跟踪状态,请运行以下命令:
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<NODE_NAME> ceph -w
将 <NODE_NAME> 替换为迁移的节点的名称。
- 为存储集群中的每个节点重复迁移过程。
有关从 FileStore 迁移到 BlueStore 的更多信息,请参阅 Red Hat Ceph Storage Administration Guide 中的 BlueStore。
24.3. 验证您的 FileStore 到 BlueStore 的迁移
您可以检查 OSD 的状态,以确保成功完成迁移。
流程
-
以
heat-admin
用户身份登录托管于其中一个 Controller 节点的 ceph-mon 容器。 查询 Ceph 集群:
[heat-admin@overcloud-controller-1 ~]$ sudo -i [root@overcloud-controller-1 ~]# podman exec -it ceph-mon-overcloud-controller-1 sh -c "ceph -f json osd metadata" | jq -c 'sort_by(.hostname) | .[] | ["host", .hostname, "osd_id", .id, "objectstore", .osd_objectstore]' [root@overcloud-controller-1 ~]#
如果配置显示集群中的所有 OSD 使用 BlueStore,则迁移会成功。
推荐的最佳实践是运行幂等的堆栈更新,以确保配置定义和实际配置匹配。堆栈更新持续时间因系统大小而异,从而缩短在维护窗口期间可以计划完成迁移的停机时间。
第 25 章 执行升级后的操作
完成 overcloud 升级后,您必须执行一些升级后的配置,以确保您的环境被完全支持,并可为将来的操作做好准备。
25.1. 从 undercloud 中删除不必要的软件包和目录
在 Leapp 升级后,删除保留在 undercloud 中的不必要的软件包和目录。
流程
删除不必要的软件包
$ sudo dnf -y remove --exclude=python-pycadf-common python2*
从
/httpboot
和/tftpboot
目录中删除包含 Red Hat OpenStack 13 中使用的旧镜像的内容:$ sudo rm -rf /httpboot /tftpboot
25.2. 删除冗余遥测服务的用户
遥测端点默认为禁用。您可以使用此流程删除升级后保留的任何遥测端点。
先决条件
- 升级后,您仍然有遥测端点。您可以使用流程来识别剩余的遥测端点。
流程
登录 undercloud 并提供 overcloud 身份验证文件:
$ source ~/overcloudrc
识别升级后保留的遥测端点:
$ openstack endpoint list | grep -i -e aodh -e gnocchi -e panko
删除缺少端点的用户:
$ openstack user delete aodh gnocchi panko
验证
验证端点用户是否不存在:
$ openstack user list
25.3. 验证升级后的功能
运行 升级后 验证组检查升级后的功能。
流程
source
stackrc
文件:$ source ~/stackrc
如果没有清单文件,您必须生成静态清单文件:
$ tripleo-ansible-inventory --static-yaml-inventory ~$HOME/config-download/<stack_name>/tripleo-ansible-inventory.yaml --stack <stack_name> --ansible_ssh_user heat-admin
如果您不使用默认的 overcloud 堆栈名称,请将 <stack_name> 替换为堆栈的名称。
使用 --group post-upgrade 选项运行
openstack tripleo validator run
命令:$ openstack tripleo validator run --group {validation} --inventory ~$HOME/config-download/<stack_name>/tripleo-ansible-inventory.yaml
如果您不使用默认的 overcloud 堆栈名称,请将 <stack_name> 替换为堆栈的名称。
查看验证报告的结果。要查看特定验证的详细输出,请根据报告中具体验证的 UUID 运行
openstack tripleo validator show run --full
命令:$ openstack tripleo validator show run --full <UUID>
FAILED
验证不会阻止您部署或运行 Red Hat OpenStack Platform。但是,FAILED
验证可能会显示生产环境中潜在的问题。
25.4. 升级 overcloud 镜像
您必须将您当前的 overcloud 镜像替换为新版本。新镜像确保 director 可以使用最新版本的 OpenStack Platform 软件内省和置备节点。
先决条件
- 您已将 undercloud 升级到最新版本。
流程
-
以
stack
用户的身份登录 undercloud。 source
stackrc
文件:$ source ~/stackrc
安装包含 overcloud QCOW2 归档的软件包:
$ sudo dnf install rhosp-director-images rhosp-director-images-ipa-x86_64
从
stack
用户的主目录(/home/stack/images
)的images
中删除任何存在的镜像。$ rm -rf ~/images/*
解压存档:
$ cd ~/images $ for i in /usr/share/rhosp-director-images/overcloud-full-latest-16.2.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-16.2.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)
部署 overcloud 节点时,请确保 overcloud 镜像版本对应于对应的 heat 模板版本。例如,只有 OpenStack Platform 16.2 heat 模板使用 OpenStack Platform 16.2 镜像。
新的 overcloud-full
镜像替换旧的 overcloud-full
镜像。如果对旧镜像进行了更改,您必须重复新镜像的更改,特别是您要以后部署新节点。
25.5. 更新 CPU 固定参数
Red Hat OpenStack Platform 16.2 使用新的参数进行 CPU 固定:
NovaComputeCpuDedicatedSet
- 设置专用(固定)CPU。
NovaComputeCpuSharedSet
- 设置共享(未固定)CPU。
在完成升级到 Red Hat OpenStack Platform 16.2 后,您必须将 CPU 固定配置从 NovaVcpuPinSet
参数迁移到 NovaComputeCpuDedicatedSet
和 NovaComputeCpuSharedSet
参数。
流程
-
以
stack
用户的身份登录 undercloud。 如果您的 Compute 节点支持并发多线程(SMT),但创建带有
hw:cpu_thread_policy=isolated
策略的实例,则必须执行以下选项之一:取消设置
hw:cpu_thread_policy
线程策略并重新定义实例大小:查找 overcloud 身份验证文件:
$ source ~/overcloudrc
取消设置类别的
hw:cpu_thread_policy
属性:(overcloud) $ openstack flavor unset --property hw:cpu_thread_policy <flavor>
注意-
取消设置
hw:cpu_thread_policy
属性可将策略设置为默认的prefer
策略,这会将实例设置为使用启用了 SMT 的 Compute 节点(如果可用)。您还可以将hw:cpu_thread_policy
属性设置为require
,这会为启用了 SMT 的 Compute 节点设置硬要求。 -
如果 Compute 节点没有 SMT 架构,或者有可用线程同级的足够 CPU 内核,调度将失败。要防止这种情况,将
hw:cpu_thread_policy
设置为prefer
而不是require
。默认首选的
策略可确保有线程同级可用。 -
如果使用
hw:cpu_thread_policy=isolate
,则必须禁用 SMT,或使用不支持 SMT 的平台。
-
取消设置
将实例转换为使用新的线程策略。
(overcloud) $ openstack server resize --flavor <flavor> <server> (overcloud) $ openstack server resize confirm <server>
使用
hw:cpu_thread_policy=isolated
策略为所有固定实例重复此步骤。
从 Compute 节点迁移实例,并在 Compute 节点上禁用 SMT:
查找 overcloud 身份验证文件:
$ source ~/overcloudrc
禁用 Compute 节点接受新虚拟机:
(overcloud) $ openstack compute service list (overcloud) $ openstack compute service set <hostname> nova-compute --disable
- 从 Compute 节点迁移所有实例。有关实例迁移的更多信息,请参阅在 Compute 节点间迁移虚拟机实例。
- 重新引导 Compute 节点,并在 Compute 节点的 BIOS 中禁用 SMT。
- 引导 Compute 节点。
重新启用 Compute 节点:
(overcloud) $ openstack compute service set <hostname> nova-compute --enable
Source
stackrc
文件:$ source ~/stackrc
-
编辑包含
NovaVcpuPinSet
参数的环境文件。 将 CPU 固定配置从
NovaVcpuPinSet
参数迁移到NovaComputeCpuDedicatedSet
和NovaComputeCpuSharedSet
:-
将
NovaVcpuPinSet
的值迁移到之前用于固定实例的主机的NovaComputeCpuDedicatedSet
。 -
对于之前用于未固定实例的主机,将
NovaVcpuPinSet
的值迁移到NovaComputeCpuSharedSet
。 -
如果没有为 NovaVcpuPinSet 设置值,则所有 Compute 节点内核都应分配给
NovaComputeCpuDedicatedSet
或NovaComputeCpuSharedSet
,具体取决于您要在节点上托管的实例类型。
例如,以前的环境文件可能包含以下固定配置:
parameter_defaults: ... NovaVcpuPinSet: 1,2,3,5,6,7 ...
要将配置迁移到固定配置,请设置
NovaComputeCpuDedicatedSet
参数,并取消设置NovaVcpuPinSet
参数:parameter_defaults: ... NovaComputeCpuDedicatedSet: 1,2,3,5,6,7 NovaVcpuPinSet: "" ...
要将配置迁移到未固定配置,请设置
NovaComputeCpuSharedSet
参数,并取消设置NovaVcpuPinSet
参数:parameter_defaults: ... NovaComputeCpuSharedSet: 1,2,3,5,6,7 NovaVcpuPinSet: "" ...
重要确保
NovaComputeCpuDedicatedSet
或NovaComputeCpuSharedSet
的配置与NovaVcpuPinSet
中定义的配置匹配。要更改此配置,或在更新配置前配置NovaComputeCpuDedicatedSet
或NovaComputeCpuSharedSet
,请确保具有固定配置的 Compute 节点不会运行任何实例。-
将
- 保存该文件。
运行部署命令,以使用新的 CPU 固定参数更新 overcloud。
(undercloud) $ openstack overcloud deploy \ --stack _STACK NAME_ \ --templates \ ... -e /home/stack/templates/<compute_environment_file>.yaml ...
25.6. 将用户迁移到 member 角色
在 Red Hat OpenStack Platform 13 中,默认成员角色名为 _member_
。
在 Red Hat OpenStack Platform 16.2 中,默认成员角色名为 member
。
完成从 Red Hat OpenStack Platform 13 升级到 Red Hat OpenStack Platform 16.2 时,分配给 _member_
角色的用户仍具有该角色。您可以使用以下步骤将所有用户迁移到 member
角色。
先决条件
- 您已将 overcloud 升级到最新版本。
流程
列出您的云中具有
_member_
角色的所有用户:openstack role assignment list --names --role _member_ --sort-column project
对于每个用户,删除
_member_
角色,再应用member
角色:openstack role remove --user <user> --project <project> _member_ openstack role add --user <user> --project <project> member
第 26 章 升级问题的故障排除
如果您在升级过程中遇到任何问题,请参考本节的建议。
26.1. 修正环境文件
如果有任何自定义环境文件中的参数错误,您可以更正环境文件并在升级期间随时运行 openstack overcloud upgrade prepare
命令。此命令将把 overcloud 计划的新版本上传到 director,这将生成一组新的 config-download
playbook。
本例在 upgrade -environment.yaml
文件中包含错误的存储库名称:
parameter_defaults:
UpgradeLeappEnabled: true
UpgradeLeappCommandOptions: "--enablerepo rhel-7-for-x86_64-baseos-eus-rpms --enablerepo rhel-8-for-x86_64-appstream-eus-rpms --enablerepo fast-datapath-for-rhel-8-x86_64-rpms"
CephAnsibleRepo: rhceph-4-tools-for-rhel-8-x86_64-rpms
这个错误会在 Leapp 升级过程中为 Controller 节点造成问题。要更正此问题,请更正错误并运行 openstack overcloud upgrade prepare
命令。
流程
更正文件中的错误:
parameter_defaults: UpgradeLeappEnabled: true UpgradeLeappCommandOptions: "--enablerepo rhel-8-for-x86_64-baseos-eus-rpms --enablerepo rhel-8-for-x86_64-appstream-eus-rpms --enablerepo fast-datapath-for-rhel-8-x86_64-rpms" CephAnsibleRepo: rhceph-4-tools-for-rhel-8-x86_64-rpms
使用更正的文件运行升级准备命令:
$ openstack overcloud upgrade prepare \ --stack STACK NAME \ --templates \ -e ENVIRONMENT FILE … -e /home/stack/templates/upgrades-environment.yaml \ …
等待 overcloud 栈更新完成。
- 继续失败的升级操作步骤。