搜索

升级框架(13 到 16.2)

download PDF
Red Hat OpenStack Platform 16.2

从 Red Hat OpenStack Platform 13 原位升级到 16.2

OpenStack Documentation Team

摘要

本指南包含有关在长生命版本中原位升级的框架。此框架包含用于将 OpenStack Platform 环境从长版本升级到下一个长生命版本的工具。在这种情况下,本指南着重介绍从 Red Hat OpenStack Platform 13(Queens)升级到 16.2(Train)。

使开源包含更多

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

对红帽文档提供反馈

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

在 JIRA 中提供文档反馈

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

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

第 1 章 关于用于升级的 Red Hat OpenStack Platform 框架

升级的 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 版本。

表 1.1. 更新版本路径
当前版本目标版本

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 更新

表 1.2. 升级版本路径
当前版本目标版本

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 并行迁移的更多信息,请联络红帽全球支持服务。
重要

这个表中的持续时间是基于内部测试的最小估算值,可能不适用于所有生产环境。例如,如果您的硬件有低规格或延长的启动周期,则允许更多的时间使用这些持续时间。要准确衡量每个任务的升级持续时间,请在测试环境中执行与生产环境类似的硬件。

表 1.3. 升级路径的影响和持续时间
 原位升级并行迁移

undercloud 的升级持续时间

每个主要操作的预计持续时间都包括:

  • 30 分钟(Leapp upgrade)命令
  • 30 分钟(Leapp 重启)
  • 40 分钟( director 升级)

无。除了现有的 undercloud 外,您还将创建新的 undercloud。

overcloud control plane 的升级持续时间

每个 Controller 节点的估算:

  • 60 分钟用于 Leapp 升级并重启
  • 服务升级 60 分钟

无。除了现有的 control plane 外,您还需要创建新的 control plane。

control plane 的中断持续时间

bootstrap Controller 节点的服务升级期间,大约 60 分钟。

无。两个 overcloud 在工作负载迁移期间都正常运行。

control plane 中断的结果

您不能在停机期间执行 OpenStack 操作。

没有中断。

overcloud data plane 的升级持续时间

每个 Compute 节点和 Ceph Storage 节点的估算:

  • 60 分钟用于 Leapp 升级并重启
  • 30 分钟服务升级

无。除了现有的 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,请遵循以下建议:

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 自定义配置,如 CephConfigOverridesCephAnsibleExtraConfig
  • 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 部署的原位升级时,您必须考虑的区别:

  1. 在将 Red Hat OpenStack Platform 部署从版本 13 升级到 16.2 之前,您必须将 Red Hat Ceph Storage 集群从版本 3 升级到版本 4。有关更多信息,请参阅 Red Hat Ceph Storage 4 安装指南中的升级 Red Hat Ceph Storage 集群
  2. 将 Red Hat Ceph Storage 集群从版本 3 升级到版本 4 后,Red Hat OpenStack Platform 13 仍然可以运行 RHCSv3 客户端组件,但这些内容与 RHCSv4 集群兼容。
  3. 您可以遵循 Framework for Upgrades(13 到 16.2)文档中所述的升级路径,并在适用的情况下完成支持此特定情况的条件步骤。条件步骤的开头为以下语句:"如果您正在升级使用外部 Ceph 部署"。
  4. 在使用外部 Ceph 部署升级时,您将安装 RHCSv4 ceph-ansible 作为 overcloud 升级过程的一部分。当您升级使用 director 部署的 Ceph 集群时,您要在 overcloud 升级过程完成后安装 RHCSv4 ceph-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-rpmsadvanced-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 部分中设置 NovaPasswordPlacementPassword

如果在 parameter_defaults 部分中设置了这两个密码,则 Compute 节点可能无法与 control plane 通信,直到升级为止。有关升级 Compute 节点的更多信息,请参阅升级 Compute 节点

另外,如果使用 NovaPasswordPlacementPassword 或两者在 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 指南。

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 升级。

2.11. 删除 RHEL 注册资源

如果 DeleteOnRHELUnregistration 参数在现有环境文件或 rhel-registration.yaml 模板中被设置为 true,则 overcloud 升级无法继续。在这种情况下,当您对最新的 Red Hat OpenStack Platform 13z 版本执行次要更新时,请将 DeleteOnRHELUnregistration 参数设置为 false

流程

  1. 在环境文件的 parameter_defaults 部分中,如果 DeleteOnRHELUnregistration 参数设置为 true,请将 参数设置为 false
  2. 运行 openstack overcloud update prepare 命令。
  3. 运行 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 证书错误

流程

  1. stack 用户的身份登录 undercloud。
  2. Source stackrc 文件:

    $ source ~/stackrc
  3. 创建一个名为 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
  4. 添加运行脚本的权限:

    $ chmod +x pre-upgrade-validations.sh
  5. 运行脚本:

    $ ./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-rpmsadvanced-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)

rhel-8-for-x86_64-baseos-eus-rpms

x86_64 系统的基本操作系统仓库。

Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)

rhel-8-for-x86_64-appstream-eus-rpms

包含 RHOSP 依赖项。

Red Hat Enterprise Linux 8 for x86_64 - High Availability (RPMs) Extended Update Support (EUS)

rhel-8-for-x86_64-highavailability-eus-rpms

RHEL 的高可用性工具。用于 Controller 节点的高可用性功能。

Red Hat Ansible Engine 2.9 for RHEL 8 x86_64 (RPMs)

ansible-2.9-for-rhel-8-x86_64-rpms

RHEL 的 Ansible Engine。用于提供最新版本的 Ansible。

RHOSP 16.2 for RHEL 8 (RPMs)

openstack-16.2-for-rhel-8-x86_64-rpms

Core RHOSP 存储库,其中包含 RHOSP director 的软件包。

Red Hat Fast datapath for RHEL 8 (RPMS)

fast-datapath-for-rhel-8-x86_64-rpms

为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。

Ceph 软件仓库

下表列出了用于 undercloud 的与 Ceph Storage 有关的软件仓库。

名称软件仓库要求说明

Red Hat Ceph Storage Tools 4 for RHEL 8 x86_64 (RPMs)

rhceph-4-tools-for-rhel-8-x86_64-rpms

提供节点与 Ceph Storage 集群进行通信的工具。如果您计划在 overcloud 中使用 Ceph Storage,或者要与现有 Ceph Storage 集群集成,undercloud 需要此软件仓库的 ceph-ansible 软件包。

IBM POWER 软件仓库

下表包含用于 POWER PC 架构上的 RHOSP 的软件仓库列表。使用这些软件仓库来替代核心软件仓库中的同等库。

名称软件仓库要求说明

Red Hat Enterprise Linux for IBM Power,little endian - BaseOS (RPMs)

rhel-8-for-ppc64le-baseos-rpms

ppc64le 系统的基本操作系统软件仓库。

Red Hat Enterprise Linux 8 for IBM Power, little endian - AppStream (RPMs)

rhel-8-for-ppc64le-appstream-rpms

包含 RHOSP 依赖项。

Red Hat Enterprise Linux 8 for IBM Power, little endian - High Availability (RPMs)

rhel-8-for-ppc64le-highavailability-rpms

RHEL 的高可用性工具。用于 Controller 节点的高可用性功能。

Red Hat Fast Datapath for RHEL 8 IBM Power, little endian (RPMS)

fast-datapath-for-rhel-8-ppc64le-rpms

为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。

Red Hat Ansible Engine 2.9 for RHEL 8 IBM Power, little endian (RPMs)

ansible-2.9-for-rhel-8-ppc64le-rpms

RHEL 的 Ansible Engine。提供最新版本的 Ansible。

Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs)

openstack-16.2-for-rhel-8-ppc64le-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-rpmsadvanced-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)

rhel-8-for-x86_64-baseos-eus-rpms

x86_64 系统的基本操作系统仓库。

Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)

rhel-8-for-x86_64-appstream-eus-rpms

包含 RHOSP 依赖项。

Red Hat Enterprise Linux 8 for x86_64 - High Availability (RPMs) Extended Update Support (EUS)

rhel-8-for-x86_64-highavailability-eus-rpms

RHEL 的高可用性工具。

Red Hat Ansible Engine 2.9 for RHEL 8 x86_64 (RPMs)

ansible-2.9-for-rhel-8-x86_64-rpms

RHEL 的 Ansible Engine。用于提供最新版本的 Ansible。

Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs)

openstack-16.2-for-rhel-8-x86_64-rpms

核心 RHOSP 存储库。

Red Hat Fast datapath for RHEL 8 (RPMS)

fast-datapath-for-rhel-8-x86_64-rpms

为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。

Red Hat Ceph Storage Tools 4 for RHEL 8 x86_64 (RPMs)

rhceph-4-tools-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)

rhel-8-for-x86_64-baseos-eus-rpms

x86_64 系统的基本操作系统仓库。

Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)

rhel-8-for-x86_64-appstream-eus-rpms

包含 RHOSP 依赖项。

Red Hat Enterprise Linux 8 for x86_64 - High Availability (RPMs) Extended Update Support (EUS)

rhel-8-for-x86_64-highavailability-eus-rpms

RHEL 的高可用性工具。

Red Hat Ansible Engine 2.9 for RHEL 8 x86_64 (RPMs)

ansible-2.9-for-rhel-8-x86_64-rpms

RHEL 的 Ansible Engine。用于提供最新版本的 Ansible。

Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs)

openstack-16.2-for-rhel-8-x86_64-rpms

核心 RHOSP 存储库。

Red Hat Fast datapath for RHEL 8 (RPMS)

fast-datapath-for-rhel-8-x86_64-rpms

为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。

Red Hat Ceph Storage Tools 4 for RHEL 8 x86_64 (RPMs)

rhceph-4-tools-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)

rhel-8-for-x86_64-rt-rpms

Real Time KVM (RT-KVM) 的软件仓库。包含用于启用实时内核的软件包。对 RT-KVM 为目标的所有 Compute 节点启用此软件仓库。注意:您需要单独订阅 Red Hat OpenStack Platform for Real Time SKU,才能访问此软件仓库。

Red Hat Enterprise Linux 8 for x86_64 - Real Time for NFV (RPMs)

rhel-8-for-x86_64-nfv-rpms

适用于 NFV 的实时 KVM (RT-KVM) 的软件仓库。包含用于启用实时内核的软件包。对以 RT-KVM 为目标的所有 NFV Compute 节点启用此软件仓库。注意:您需要单独订阅 Red Hat OpenStack Platform for Real Time SKU,才能访问此软件仓库。

Ceph Storage 节点软件仓库

下表列出了用于 overcloud 的与 Ceph Storage 有关的软件仓库。

名称软件仓库要求说明

Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)

rhel-8-for-x86_64-baseos-rpms

x86_64 系统的基本操作系统仓库。

Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)

rhel-8-for-x86_64-appstream-rpms

包含 RHOSP 依赖项。

Red Hat Enterprise Linux 8 for x86_64 - High Availability (RPMs) Extended Update Support (EUS)

rhel-8-for-x86_64-highavailability-eus-rpms

RHEL 的高可用性工具。注意:如果您使用了 Ceph Storage 角色的 overcloud-full 镜像,您必须启用此存储库。Ceph Storage 角色应使用 overcloud-minimal 镜像,该镜像不需要此存储库。

Red Hat Ansible Engine 2.9 for RHEL 8 x86_64 (RPMs)

ansible-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)

openstack-16.2-deployment-tools-for-rhel-8-x86_64-rpms

帮助 director 配置 Ceph Storage 节点的软件包。此软件仓库包含在单机 Ceph Storage 订阅中。如果使用 OpenStack Platform 和 Ceph Storage 组合订阅,请使用 openstack-16.2-for-rhel-8-x86_64-rpms 软件仓库。

Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs)

openstack-16.2-for-rhel-8-x86_64-rpms

帮助 director 配置 Ceph Storage 节点的软件包。此软件仓库包含在 OpenStack Platform 和 Ceph Storage 组合订阅中。如果使用的是单机 Ceph Storage 订阅,则请使用 openstack-16.2-deployment-tools-for-rhel-8-x86_64-rpms 软件仓库。

Red Hat Ceph Storage Tools 4 for RHEL 8 x86_64 (RPMs)

rhceph-4-tools-for-rhel-8-x86_64-rpms

提供节点与 Ceph Storage 集群进行通信的工具。

Red Hat Fast datapath for RHEL 8 (RPMS)

fast-datapath-for-rhel-8-x86_64-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)

rhel-8-for-ppc64le-baseos-rpms

ppc64le 系统的基本操作系统软件仓库。

Red Hat Enterprise Linux 8 for IBM Power, little endian - AppStream (RPMs)

rhel-8-for-ppc64le-appstream-rpms

包含 RHOSP 依赖项。

Red Hat Enterprise Linux 8 for IBM Power, little endian - High Availability (RPMs)

rhel-8-for-ppc64le-highavailability-rpms

RHEL 的高可用性工具。用于 Controller 节点的高可用性功能。

Red Hat Fast Datapath for RHEL 8 IBM Power, little endian (RPMS)

fast-datapath-for-rhel-8-ppc64le-rpms

为 OpenStack Platform 提供 Open vSwitch (OVS) 软件包。

Red Hat Ansible Engine 2.9 for RHEL 8 IBM Power, little endian (RPMs)

ansible-2.9-for-rhel-8-ppc64le-rpms

RHEL 的 Ansible Engine。用于提供最新版本的 Ansible。

Red Hat OpenStack Platform 16.2 for RHEL 8 (RPMs)

openstack-16.2-for-rhel-8-ppc64le-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 ContentManaging 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 13Red 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 更改,并重新引导节点。

流程

  1. stack 用户的身份登录 undercloud。
  2. 创建名为 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。

  3. 在 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 参数。您必须将此参数明确设置为 yesno

为了安全起见,请将此参数设置为 no 以禁用对 undercloud 上 root 用户的 SSH 访问。

流程

  1. stack 用户的身份登录 undercloud。
  2. 检查 /etc/ssh/sshd_config 文件,以查找 PermitRootLogin 参数:

    $ sudo grep PermitRootLogin /etc/ssh/sshd_config
  3. 如果 /etc/ssh/sshd_config 文件中没有参数,请编辑该文件并设置 PermitRootLogin 参数:

    PermitRootLogin no
  4. 保存该文件。

4.5. 转换为下一代电源管理驱动程序

Red Hat OpenStack Platform 现在使用下一代驱动程序(也称为 硬件类型 )替换旧的驱动程序。

下表显示了与传统驱动程序与下一代硬件类型等效的类似比较:

旧驱动程序新硬件类型

pxe_ipmitool

ipmi

pxe_drac

idrac

pxe_ilo

ilo

pxe_irmc

irmc

VBMC (pxe_ipmitool)

ipmi

fake_pxe

fake-hardware

在 OpenStack Platform 15 中,这些较旧的驱动程序已被删除,不再可以访问。在升级到 OpenStack Platform 16.2 之前,您必须更改硬件类型。

流程

  1. 检查当前启用的硬件类型列表:

    $ source ~/stackrc
    $ openstack baremetal driver list --type dynamic
  2. 如果使用没有启用的硬件类型驱动程序,请使用 undercloud.conf 文件中的 enabled_hardware_types 参数启用驱动程序:

    enabled_hardware_types = ipmi,redfish,idrac
  3. 保存文件并刷新 undercloud:

    $ openstack undercloud install
  4. 运行以下命令,将 OLDDRIVERNEWDRIVER 变量用于电源管理类型:

    $ 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 工具的依赖项。

流程

  1. stack 用户的身份登录 undercloud。
  2. 禁用 undercloud 上的 OpenStack 主服务:

    $ sudo systemctl stop 'openstack-*' httpd haproxy mariadb 'rabbitmq*' docker xinetd
  3. 从 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
  4. /etc/httpd/var/lib/docker 目录中删除内容:

    $ sudo rm -rf /etc/httpd /var/lib/docker

5.2. 在 undercloud 上执行 Leapp 升级

安装并运行 Leapp 工具将操作系统升级到 Red Hat Enterprise Linux(RHEL)8。

先决条件

流程

  1. stack 用户的身份登录 undercloud。
  2. 安装 Leapp 工具程序和 jq:

    $ sudo yum install leapp
    $ sudo yum install jq
  3. 下载额外所需的数据文件(RPM 软件包的变化和 RPM 存储库映射),附加到 Leapp 程序所需的知识基本文档数据,以便从 RHEL 7 原位升级到 RHEL 8,并将这些文件放在 /etc/leapp/files/ 目录中。
  4. 更新您的红帽订阅:

    • 如果您的 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 的内容。

  5. Red Hat OpenStack Platform 16.2 使用了一个新版本的 Open vSwitch。通过 to_removeto_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
  6. 使用 to_keep 事务文件进行升级保留 Red Hat Ceph Storage 3 的 ceph-ansible 版本:

    $ echo 'ceph-ansible' | sudo tee -a /etc/leapp/transaction/to_keep
  7. 调整 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
  8. 删除 pam_pkcs11 模块:

    $ sudo leapp answer --add --section remove_pam_pkcs11_module_check.confirm=True
  9. 可选: 如果您的环境使用 TLS-Everywhere 架构进行了部署,并使用已弃用的 authconfig 程序在您的系统中配置身份验证,请使用 authselect 程序配置 RHEL 8 系统:

    $ sudo leapp answer --add --section authselect_check.confirm=True

    有关 Leapp 升级过程中验证配置的更多信息,请参阅从 RHEL 7 升级到 RHEL 8的问题

  10. 设置 LEAPP_DEVEL_TARGET_RELEASELEAPP_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 环境变量。

  11. 从 Leapp 进程中删除持久性网络名称:

    注意

    如果您在执行 Leapp 升级过程前没有重命名网络接口名称,则在升级到 RHEL 8.2 后接口名称可能会改变。有关重命名网络接口名称的详情请参考 第 4.3 节 “为 undercloud 节点使用可预测的 NIC 名称”

    $ sudo rm -f /usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/persistentnetnamesdisable/actor.py
  12. 启动 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 一起。

  13. 等待 leapp upgrade 命令成功完成。
  14. 在根目录中创建一个空 .autorelabel 文件:

    $ sudo touch /.autorelabel

    重启后,SELinux 会检测到此文件并自动重新标记文件系统。

  15. 重新引导 undercloud:

    $ sudo reboot
  16. 从 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 变量中。

步骤

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

    $ source ~/stackrc
  3. 在自定义模板中,添加 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 发行版本,以避免将操作系统升级到较新的次版本。

步骤

  1. stack 用户的身份登录 undercloud。
  2. 使用 subscription-manager release 命令将 undercloud 锁定到特定版本:

    $ sudo subscription-manager release --set=8.4

6.2. 为 undercloud 启用软件仓库

启用 undercloud 所需的软件仓库,并将系统软件包更新至最新版本。

步骤

  1. stack 用户身份登录 undercloud。
  2. 禁用所有默认的软件仓库,然后启用所需的 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 所需的软件包。

  3. container-tools 软件仓库模块设置为版本 3.0

    [stack@director ~]$ sudo dnf module reset container-tools
    [stack@director ~]$ sudo dnf module enable -y container-tools:3.0
  4. 同步操作系统以确保您的系统软件包与操作系统版本匹配:

    [stack@director ~]$ sudo dnf distro-sync -y
    [stack@director ~]$ sudo reboot

6.3. 安装 director 软件包

安装与 Red Hat OpenStack Platform director 相关的软件包。

步骤

  1. 安装用于安装和配置 director 的命令行工具:

    [stack@director ~]$ sudo dnf install -y python3-tripleoclient

6.4. 准备容器镜像

undercloud 安装需要一个环境文件来确定从何处获取容器镜像以及如何存储它们。生成并自定义此环境文件,您可以使用这个文件准备容器镜像。

注意

如果需要为您的 undercloud 配置特定的容器镜像版本,必须将镜像固定到特定的版本。有关更多信息,请参阅为 undercloud 固定容器镜像

步骤

  1. stack 用户身份登录 undercloud 主机。
  2. 生成默认的容器镜像准备文件:

    $ 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 定义容器镜像源。

  3. 修改 containers-prepare-parameter.yaml 以符合您的需求。

6.5. 容器镜像准备参数

用于准备您的容器的默认文件 (containers-prepare-parameter.yaml) 包含 ContainerImagePrepare heat 参数。此参数定义一个用于准备一系列镜像的策略列表:

parameter_defaults:
  ContainerImagePrepare:
  - (strategy one)
  - (strategy two)
  - (strategy three)
  ...

每一策略接受一组子参数,它们定义要使用哪些镜像以及对这些镜像执行哪些操作。下表包含有关您可与每个 ContainerImagePrepare 策略配合使用的子参数的信息:

参数描述

excludes

用于从策略中排除镜像名称的正则表达式列表。

includes

用于在策略中包含的正则表达式列表。至少一个镜像名称必须与现有镜像匹配。如果指定了 includes,将忽略所有 excludes

modify_append_tag

要附加到目标镜像标签的字符串。例如,如果使用标签 16.2.3-5.161 拉取镜像并将 modify_append_tag 设置为 -hotfix,director 会将最终镜像标记为 16.2.3-5.161-hotfix。

modify_only_with_labels

过滤想要修改的镜像的镜像标签字典。如果镜像与定义的标签匹配,则 director 将该镜像包括在修改过程中。

modify_role

在上传期间但在将镜像推送到目标 registry 之前运行的 ansible 角色名称字符串。

modify_vars

要传递给 modify_role 的变量的字典。

push_destination

定义用于在上传过程中要将镜像推送到的 registry 的命名空间。

  • 如果设为 true,则使用主机名将 push_destination 设置为 undercloud registry 命名空间,这是建议的方法。
  • 如果设置为 false,则不会推送到本地 registry,节点直接从源拉取镜像。
  • 如果设置为自定义值,则 director 将镜像推送到外部本地 registry。

当直接从 Red Hat Container Catalog 拉取镜像时,如果在生产环境中将此参数设置为 false,则所有 overcloud 节点都将通过外部连接同时从 Red Hat Container Catalog 拉取镜像,这可能会导致出现带宽问题。仅使用 false 直接从托管容器镜像的 Red Hat Satellite Server 拉取。

如果 push_destination 参数设置为 false 或未定义,且远程 registry 需要身份验证,请将 ContainerImageRegistryLogin 参数设置为 true,并使用 ContainerImageRegistryCredentials 参数包含凭据。

pull_source

从中拉取原始容器镜像的源 registry 。

set

用于定义从何处获取初始镜像的 key: value 定义的字典。

tag_from_label

使用指定容器镜像元数据标签的值为每个镜像创建标签,并拉取该标记的镜像。例如,如果设置了 tag_from_label: {version}-{release},则 director 会使用 versionrelease 标签来构造新标签。对于一个容器,version 可能会设置为 16.2.3,release 可能会设置为 5.161,这会产生标签 16.2.3-5.161。仅当未在 set 字典中定义 tag 时,director 才使用此参数。

重要

将镜像推送到 undercloud 时,请使用 push_destination: true 而不是 push_destination: UNDERCLOUD_IP:PORTpush_destination: true 方法在 IPv4 和 IPv6 地址之间提供了一定程度的一致性。

set 参数接受一组 key: value 定义:

描述

ceph_image

Ceph Storage 容器镜像的名称。

ceph_namespace

Ceph Storage 容器镜像的命名空间。

ceph_tag

Ceph Storage 容器镜像的标签。

ceph_alertmanager_image

ceph_alertmanager_namespace

ceph_alertmanager_tag

Ceph Storage Alert Manager 容器镜像的名称、命名空间和标签。

ceph_grafana_image

ceph_grafana_namespace

ceph_grafana_tag

Ceph Storage Grafana 容器镜像的名称、命名空间和标签。

ceph_node_exporter_image

ceph_node_exporter_namespace

ceph_node_exporter_tag

Ceph Storage 节点导出器容器镜像的名称、命名空间和标签。

ceph_prometheus_image

ceph_prometheus_namespace

ceph_prometheus_tag

Ceph Storage Prometheus 容器镜像的名称、命名空间和标签。

name_prefix

各个 OpenStack 服务镜像的前缀。

name_suffix

各个 OpenStack 服务镜像的后缀。

namespace

各个 OpenStack 服务镜像的命名空间。

neutron_driver

用于确定要使用的 OpenStack Networking (neutron) 容器的驱动程序。null 值代表使用标准的 neutron-server 容器。设为 ovn 可使用基于 OVN 的容器。

tag

为来自源的所有镜像设置特定的标签。如果没有定义,director 将 Red Hat OpenStack Platform 版本号用作默认值。此参数优先于 tag_from_label 值。

注意

容器镜像使用基于 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 中检查到的最新容器镜像发行版本的标签元数据生成标签。例如,特定容器的标签可能会使用以下 versionrelease 元数据:

      "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 参数。
  • tagtag_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 文件中包括 ContainerImageRegistryCredentialsContainerImageRegistryLogin 参数。

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_usernamemy_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。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 编辑 containers-prepare-parameter.yaml 文件。
  3. 添加 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 服务器上的镜像位置。
  4. 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)。

  5. 保存 containers-prepare-parameter.yaml 文件。

6.9. 更新 undercloud.conf 文件

您可以继续使用 Red Hat OpenStack Platform 13 环境中的原始 undercloud.conf 文件,但必须修改该文件以保持与 Red Hat OpenStack Platform 16.2 的兼容性。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 编辑 undercloud.conf 文件。
  3. 在文件的 DEFAULT 部分添加以下参数:

    container_images_file = /home/stack/containers-prepare-parameter.yaml

    此参数定义 containers-prepare-parameter.yaml 环境文件的位置,以便 director 从正确的位置拉取 undercloud 的容器镜像。

  4. 检查 generate_service_certificate 参数。此参数的默认值从 false 变为 true,这会在升级过程中启用 undercloud 上的 SSL/TLS。
  5. 如果您已迁移到可预测的 NIC 命名规则,请检查 local_interface 参数。
  6. 如果您在 Red Hat OpenStack Platform 13 中设置 masquerade_network 参数,请删除此参数,并为每个子网设置 masquerade = true
  7. 检查 文件中的所有其他参数,以了解任何更改。
  8. 保存该文件。

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].pemcertificate_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-hardwarepython-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 网络中,您必须将 public VirtualInterface 参数设置为 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_ipgatewayundercloud_admin_host、undercloud_public_host、undercloud_public_host 以及 inspection_iprange 参数的值来确定分配池。

您可以通过指定启动和结束地址对列表,为 undercloud control plane 子网配置非持续分配池。另外,您可以使用 dhcp_exclude 选项排除 IP 地址范围中的 IP 地址。例如,以下配置同时创建分配池 172.20.0.100-172.20.0.150172.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_startdhcp_ end 定义的范围重叠,但必须位于同一个 IP 子网中。

6.11. 运行 director 升级

完成以下步骤以升级 director。

流程

  1. 运行以下命令,在 undercloud 上升级 director:

    $ openstack undercloud upgrade

    此命令会启动 director 配置脚本。director 升级其软件包并配置其服务,使其服务适合 undercloud.conf 中的设置。这个脚本会需要一些时间来完成。

    注意

    在继续操作前,director 配置脚本会提示确认。使用 -y 选项绕过此确认:

    $ openstack undercloud upgrade -y
  2. 此脚本还会自动启动 undercloud 上的所有 OpenStack Platform 服务容器。您可以通过 systemd 资源管理每个服务。检查 systemd 资源:

    $ sudo systemctl list-units "tripleo_*"

    每个 systemd 服务都控制一个容器。使用以下命令来检查已启用的容器:

    $ sudo podman ps
  3. 该脚本将 stack 用户添加到 docker 组,以确保 stack 用户有权访问容器管理命令。使用以下命令刷新 stack 用户权限:

    $ exec su -l stack

    该命令提示您再次登录。输入 stack 用户密码。

  4. 运行以下命令初始化 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 清单文件。

流程

  1. stack 用户的身份登录 undercloud。
  2. source stackrc 文件:

    $ source ~/stackrc
  3. 创建所有节点的静态清单文件:

    $ tripleo-ansible-inventory --static-yaml-inventory ~/inventory.yaml --stack <STACK_NAME>
     --ansible_ssh_user heat-admin

    如果不使用默认的 overcloud 堆栈名称,请将 &lt ;STACK NAME > 替换为堆栈的名称。

  4. 要在您的环境中执行 Ansible playbook,请运行 ansible-playbook 命令,并使用 -i 选项包括动态清单工具的完整路径。例如:

    (undercloud) $ ansible-playbook -i ~/inventory.yaml <PLAYBOOK>

7.4. 验证预升级要求

运行 预升级 验证组检查预升级要求。

有关 Red Hat OpenStack Platform (RHOSP) 验证框架的更多信息,请参阅 Director 安装和使用指南中的使用验证框架

流程

  1. source stackrc 文件:

    $ source ~/stackrc
  2. 使用 --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 的命令参数

  3. 查看验证报告的结果。要查看特定验证的详细输出,请根据报告中具体验证的 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 中启用了隔离功能,您必须临时在升级期间禁用隔离,以避免产生任何意外的结果。

流程

  1. stack 用户的身份登录 undercloud。
  2. source stackrc 文件:

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

    $ ssh heat-admin@<controller_ip> "sudo pcs property set stonith-enabled=false"

    <controller_ip > 替换为 Controller 节点的 IP 地址。您可以使用 openstack server list 命令查找 Controller 节点的 IP 地址。

  4. fencing.yaml 环境文件中,将 EnableFencing 参数设置为 false,以确保隔离在升级过程中禁用。

7.6. 检查自定义 Puppet 参数

如果您使用 ExtraConfig 接口来自定义 Puppet 参数,则 Puppet 可能会在升级过程中报告重复声明错误。这是因为 puppet 模块本身提供的接口有变化。

此流程演示了如何检查环境文件中的任何自定义 ExtraConfig hieradata 参数。

流程

  1. 选择一个环境文件,检查它是否有 ExtraConfig 参数:

    $ grep ExtraConfig ~/templates/custom-config.yaml
  2. 如果结果在所选文件中显示 ExtraConfig 参数(如 ControllerExtraConfig),请检查该文件中的完整参数结构。
  3. 如果参数包含 SECTION/parameter 语法后跟一个 的任何 puppet Hierdata,则它可能已被替换为实际 Puppet 类的参数。例如:

    parameter_defaults:
      ExtraConfig:
        neutron::config::dhcp_agent_config:
          'DEFAULT/dnsmasq_local_resolv':
            value: 'true'
  4. 检查 director 的 Puppet 模块,以查看参数现在存在于 Puppet 类中。例如:

    $ grep dnsmasq_local_resolv

    如果是,请更改为新接口。

  5. 以下是演示语法更改的示例:

    • 示例 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. 创建升级环境文件

升级过程使用环境文件来启用升级过程并配置特定的升级参数。

流程

  1. stack 用户的身份登录 undercloud。
  2. templates 目录中 创建一个名为 upgrade-environment.yaml 的环境文件:

    $ touch templates/upgrades-environment.yaml
  3. 编辑该文件并添加以下强制内容:

    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 "

    有关您可以在环境文件中配置的升级参数的更多信息,请参阅升级 参数

  4. 保存 upgrade -environment.yaml 文件。

8.2. 升级参数

您可以使用升级参数修改升级过程的行为。

参数描述

UpgradeInitCommand

在所有 overcloud 节点上运行的命令或脚本片段以初始化升级过程。例如,仓库开关。

UpgradeInitCommonCommand

升级过程所需的常用命令。这通常不应该由 Operator 修改,并在 major-upgrade-composable-steps.yaml 和 major-upgrade-converge.yaml 环境文件中设置和取消设置。

UpgradeLeappCommandOptions

附加到 Leapp 命令的其他命令行选项。

UpgradeLeappDebug

运行 Leapp 时打印调试输出。默认值为 True

UpgradeLeappDevelSkip

在 development/testing 中运行 Leapp 时,通过设置 env 变量跳过 Leapp 检查。例如: LEAPP_DEVEL_SKIP_RHSM=1。

UpgradeLeappEnabled

使用 Leapp 进行操作系统升级。默认值为 False

UpgradeLeappPostRebootDelay

等待机器重启并响应 test 命令的最大(秒)。默认值为 120

UpgradeLeappRebootTimeout

通过 Leapp 进行 OS 升级阶段的超时(秒)。默认值为 3600

UpgradeLeappToInstall

Leapp 升级后要安装的软件包列表。

UpgradeLeappToRemove

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 节点的网络配置

流程

  1. stack 用户的身份登录 undercloud。
  2. 在所有 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 节点弃用了以下服务。从控制器角色中删除它们。

服务原因

OS::TripleO::Services::AodhApi

OS::TripleO::Services::AodhEvaluator

OS::TripleO::Services::AodhListener

OS::TripleO::Services::AodhNotifier

OpenStack 遥测服务在指标和监控的 Service Telemetry Framework(STF)中被弃用。传统的遥测服务只在 RHOSP 16.2 中提供,以帮助促进到 STF 的转换,并将在以后的 RHOSP 版本中删除。

注意

如果使用自动扩展,请不要从 Controller 节点中删除这些服务。

OS::TripleO::Services::PankoApi

OpenStack 遥测服务在指标和监控的 Service Telemetry Framework(STF)中被弃用。传统的遥测服务只在 RHOSP 16.2 中提供,以帮助促进到 STF 的转换,并将在以后的 RHOSP 版本中删除。

注意

如果使用 CloudForms,请不要从 Controller 节点中删除这些服务。

OS::TripleO::Services::CeilometerApi

OS::TripleO::Services::CeilometerCollector

OS::TripleO::Services::CeilometerExpirer

OS::TripleO::Services::MongoDb

这些服务不再被支持。从 Controller 节点中删除这些服务。

OS::TripleO::Services::Congress

不再支持 Congres。

OS::TripleO::Services::GlanceRegistry

由于 OpenStack Platform Image Service(glance)API v2,所以这个服务不再被支持。

OS::TripleO::Services::NeutronCorePluginPlumgrid

OS::TripleO::Services::NeutronCorePluginMidonet

OpenStack Networking(neutron)已弃用的插件。

OS::TripleO::Services::NeutronLbaasv2Agent

OS::TripleO::Services::NeutronLbaasv2Api

OpenStack Networking(neutron)Load Balancing 作为 Octavia 被弃用的服务。

OS::TripleO::Services::NovaConsoleauth

此服务已删除。

OS::TripleO::Services::NovaPlacement

弃用了 OS::TripleO::Services::PlacementApi

OS::TripleO::Services::OpenDaylightApi

OS::TripleO::Services::OpenDaylightOvs

OpenDaylight 不再被支持。

OS::TripleO::Services::RabbitMQ

这个服务已被替换为两个新服务:

OS::TripleO::Services::OsloMessagingRpc

OS::TripleO::Services::OsloMessagingNotify

OS::TripleO::Services::SkydiveAgent

OS::TripleO::Services::SkydiveAnalyzer

Skydive 已不再受支持。

OS::TripleO::Services::Tacker

Tacker 不再被支持。

OS::TripleO::Services::gnocchi_metricd

OS::TripleO::Services::gnocchi_statsd

OS::TripleO::Services::gnocchi_api

Gnocchi 已被弃用,并将在以后的 RHOSP 发行版本中删除。

OS::TripleO::Services::panko_api_cron

Panko 已被弃用,并将在以后的 RHOSP 发行版本中删除。

以下服务是 Controller 节点的新服务。将它们添加到您的 Controller 角色。

服务原因

OS::TripleO::Services::CephGrafana

启用 Ceph Dashboard 服务的任务。

OS::TripleO::Services::CinderBackendDellEMCPowermax

OS::TripleO::Services::CinderBackendDellEMCSc

OS::TripleO::Services::CinderBackendNVMeOF

Block Storage (cinder) 的新后端。

OS::TripleO::Services::ContainerImagePrepare

运行 命令,以自动拉取和准备与 overcloud 中服务相关的容器镜像。

OS::TripleO::Services::DesignateApi

OS::TripleO::Services::DesignateCentral

OS::TripleO::Services::DesignateProducer

OS::TripleO::Services::DesignateWorker

OS::TripleO::Services::DesignateMDNS

OS::TripleO::Services::DesignateSink

DNS 即服务的服务(指定)。

OS::TripleO::Services::IronicInspector

overcloud 的裸机内省服务。

OS::TripleO::Services::IronicNeutronAgent

OpenStack Bare Metal(ironic)的网络代理。

OS::TripleO::Services::NeutronAgentsIBConfig

Mellanox InfiniBand 的 OpenStack Networking(neutron)代理服务。

OS::TripleO::Services::OpenStackClients

用于安装 Red Hat OpenStack Platform 命令行工具的服务。

OS::TripleO::Services::OsloMessagingRpc

OS::TripleO::Services::OsloMessagingNotify

替换 OS::TripleO::Services::RabbitMQ 服务的服务。

OS::TripleO::Services::PlacementApi

放置 API 的服务。

Compute 节点

Compute 节点弃用了以下服务。从您的 Compute 角色中删除它们。

服务原因

OS::TripleO::Services::OpenDaylightOvs

OpenDaylight 不再被支持。

OS::TripleO::Services::SkydiveAgent

Skydive 已不再受支持。

下列服务是 Compute 节点的新服务。将它们添加到您的 Compute 角色。

服务原因

OS::TripleO::Services::NovaAZConfig

在 OpenStack Compute(nova)中配置主机聚合和可用性区域的服务。

所有节点

在所有节点中,以下服务都已弃用。从一个所有角色中移除它们。

服务原因

OS::TripleO::Services::Docker

使用 Podman 替代。

OS::TripleO::Services::Fluentd

OS::TripleO::Services::Rsyslog 常见问题中已弃用。

OS::TripleO::Services::Ntp

OS::TripleO::Services::Timesync 中被弃用。

OS::TripleO::Services::SensuClient

弃用的服务。

OS::TripleO::Services::Ptp

OS::TripleO::Services::Timesync 中被弃用。

以下服务适用于所有节点:将它们添加到所有角色。

服务原因

OS::TripleO::Services::BootParams

设置内核参数、Tuned 配置集和 CPU 隔离的服务。

OS::TripleO::Services::Collectd

用于配置折叠服务。

OS::TripleO::Services::Multipathd

提供一个多路径服务,默认是禁用的

OS::TripleO::Services::Podman

要安装并启用 Podman 的服务。

OS::TripleO::Services::Rear

要安装并启用 Relax-and-Recover(ReaR)备份和恢复工具的服务。

OS::TripleO::Services::Rsyslog

用于配置集中日志收集的服务。

OS::TripleO::Services::Timesync

启用时间同步方法的服务,默认为 Chronyd。

9.2. 在自定义环境文件中更新可组合服务

如果您有任何带有 resource_registry 部分的自定义环境文件,请检查 resource_registry 部分是否有可组合服务模板映射的更改。Red Hat OpenStack Platform 16.2 的可组合服务文件位于 /usr/share/openstack-tripleo-heat-templates/ 中的一个新位置:

Red Hat OpenStack Platform 13Red Hat OpenStack Platform 16.2

docker/services/

部署

部署 目录包含一组子目录来分组可组合服务。例如,keystone 子目录包含 OpenStack Identity(keystone)的可组合服务模板。

要在自定义环境文件中重新映射可组合服务,请检查当前服务映射的模板位置,并编辑到新位置的映射。此流程使用 ceph-mgr.yaml 作为示例。

重要

这个过程只作为重新映射可映射服务的指南。如果您不确定任何映射,请联系红帽 并提出有关正确映射的建议。

流程

  1. 搜索使用可组合服务的自定义环境文件。您通常会将自定义环境文件存储在 /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
  2. 识别 /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
  3. 编辑自定义环境文件中的服务:

    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 部署中。

流程

  1. stack 用户的身份登录 undercloud。
  2. 获取 undercloud 上的 control plane 主机名:

    $ sudo hiera container_image_prepare_node_names
    ["undercloud.ctlplane.localdomain"]
  3. 编辑 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状态

AggregateCoreFilter

已弃用

AggregateRamFilter

已弃用

AggregateDiskFilter

已弃用

ExactCoreFilter

删除

ExactRamFilter

删除

ExactDiskFilter

删除

CoreFilter

删除

RamFilter

删除

DiskFilter

删除

RetryFilter

已弃用

重要

避免使用标记为 已弃用 的过滤器。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)代理。

流程

  1. stack 用户的身份登录 undercloud。
  2. 设置计算命名格式:

    • 如果您使用自定义 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

流程

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

    [stack@director ~]$ source ~/stackrc
  3. 打开环境文件。
  4. 在环境文件中添加以下配置,以指定实例序列号基于主机的序列号:

    parameter_defaults:
      <Role>ExtraConfig:
        nova::compute::libvirt::sysinfo_serial: auto
  5. 将更新保存到环境文件。
  6. 将该文件添加到 overcloud 升级和部署命令中。

9.7. 更新 SSL/TLS 配置

resource_registry 中删除 NodeTLSData 资源,以更新 SSL/TLS 配置。

流程

  1. stack 用户的身份登录 undercloud。
  2. Source stackrc 文件:

    $ source ~/stackrc
  3. 编辑自定义 overcloud SSL/TLS 公共端点文件,该文件通常命名为 ~/templates/enable-tls.yaml
  4. 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 部分。

  5. 保存 SSL/TLS 公共端点文件。

9.8. 更新后配置模板

如果使用 OS::TripleO::NodeExtraConfigPost 资源来注册并运行后配置模板,您必须将 EndpointMap 参数添加到模板中。

流程

  1. 编辑后配置模板。
  2. parameters 部分下,添加 EndpointMap 参数及其子参数:

    parameters:
      servers:
        type: json
      nameserver_ip:
        type: string
      DeployIdentifier:
        type: string
      EndpointMap:
        default: {}
        type: json
  3. 保存模板。

9.9. 保留旧遥测服务时的注意事项

在 Red Hat OpenStack Platform(RHOSP)16.2 中,OpenStack Telemetry 组件以 Service Telemetry Framework(STF)替代,因此升级后不会启用旧的遥测组件。

如果使用自动扩展或 CloudForms 服务,您必须保留旧的遥测服务。

要保留旧的 RHOSP 13 遥测服务,请在运行 openstack overcloud upgrade prepareopenstack 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描述

rhsm_method

选择注册方法。门户satellite禁用

rhsm_org_id

要用于注册的组织。要找到此 ID,请从 undercloud 节点运行 sudo subscription-manager orgs。在提示符下输入您的红帽凭证,并使用生成的 密钥值。如需有关您的机构 ID 的更多信息,请参阅了解 Red Hat Subscription Management Organization ID

rhsm_pool_ids

要使用的订阅池 ID。如果您不想自动附加订阅,请使用此参数。要找到此 ID,请运行 sudo subscription-manager list --available --all --matches="Red Hat OpenStack" from undercloud node,并使用生成的 池 ID 值。

rhsm_activation_key

要用于注册的激活码。

rhsm_autosubscribe

使用这个参数自动将兼容订阅附加到这个系统。将值设为 true 以启用此功能。

rhsm_baseurl

获取内容的基本 URL。默认 URL 是 Red Hat Content Delivery Network。如果使用 Satellite 服务器,请将此值更改为 Satellite 服务器内容存储库的基本 URL。

rhsm_server_hostname

用于注册的订阅管理服务的主机名。默认为 Red Hat Subscription Management 主机名。如果使用 Satellite 服务器,请将此值改为 Satellite 服务器主机名。

rhsm_repos

您要启用的仓库列表。

rhsm_username

注册的用户名。如果可能,使用激活码进行注册。

rhsm_password

注册的密码。如果可能,使用激活码进行注册。

rhsm_release

用于固定软件仓库的 Red Hat Enterprise Linux 版本。对于 Red Hat OpenStack Platform,这被设置为 8.4

rhsm_rhsm_proxy_hostname

HTTP 代理的主机名。例如: proxy.example.com

rhsm_rhsm_proxy_port

HTTP 代理通信的端口。例如:8080

rhsm_rhsm_proxy_user

用于访问 HTTP 代理的用户名。

rhsm_rhsm_proxy_password

用于访问 HTTP 代理的密码。

重要

只有在将 rhsm_method 设置为 portal 时,您只能一起使用 rhsm_activation_keyrhsm_repos。如果将 rhsm_method 设置为 'satellite',则只能使用 rhsm_activation_keyrhsm_repos

10.3. 切换到 rhsm 可组合服务

以前的 rhel-registration 方法运行一个 bash 脚本来处理 overcloud 注册。这个方法的脚本和环境文件位于 /usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/ 的核心 heat 模板集合中。

完成以下步骤,从 rhel-registration 方法切换到 rhsm 可组合服务。

流程

  1. 从将来的部署操作中排除 rhel-registration 环境文件。在大多数情况下,排除以下文件:

    • rhel-registration/environment-rhel-registration.yaml
    • rhel-registration/rhel-registration-resource-registry.yaml
  2. 如果您使用自定义 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
        ...
  3. 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-registrationrhsm / RhsmVars

rhel_reg_method

rhsm_method

rhel_reg_org

rhsm_org_id

rhel_reg_pool_id

rhsm_pool_ids

rhel_reg_activation_key

rhsm_activation_key

rhel_reg_auto_attach

rhsm_autosubscribe

rhel_reg_sat_url

rhsm_satellite_url

rhel_reg_repos

rhsm_repos

rhel_reg_user

rhsm_username

rhel_reg_password

rhsm_password

rhel_reg_release

rhsm_release

rhel_reg_http_proxy_host

rhsm_rhsm_proxy_hostname

rhel_reg_http_proxy_port

rhsm_rhsm_proxy_port

rhel_reg_http_proxy_username

rhsm_rhsm_proxy_user

rhel_reg_http_proxy_password

rhsm_rhsm_proxy_password

10.5. 使用 rhsm 可组合服务注册 overcloud

创建启用并配置 rhsm 可组合服务的环境文件。director 使用此环境文件来注册和订阅您的节点。

流程

  1. 创建名为 templates/rhsm.yml 的环境文件,以存储配置。
  2. 在环境文件中包括您的配置。例如:

    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 以配置您的红帽注册。
  3. 保存环境文件。

10.6. 将 rhsm 可组合服务应用到不同的角色

您可以根据角色应用 rhsm 可组合服务。例如,您可以将不同的配置应用到 Controller 节点、Compute 节点和 Ceph Storage 节点。

流程

  1. 创建名为 templates/rhsm.yml 的环境文件,以存储配置。
  2. 在环境文件中包括您的配置。例如:

    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_registryrhsm 可组合服务与 OS::TripleO::Services::Rhsm 资源相关联,每行都可用。

    ControllerParametersComputeParametersCephStorageParameters 参数分别使用单独的 RhsmVars 参数将订阅详情传递给相应的角色。

    注意

    CephStorageParameters 参数中设置 RhsmVars 参数,以使用特定于 Ceph Storage 的 Red Hat Ceph Storage 订阅和存储库。确保 rhsm_repos 参数包含标准的 Red Hat Enterprise Linux 软件仓库,而不是 Controller 和 Compute 节点所需的扩展更新支持(EUS)仓库。

  3. 保存环境文件。

第 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描述

rhsm_method

选择注册方法。门户satellite禁用

rhsm_org_id

要用于注册的组织。要找到此 ID,请从 undercloud 节点运行 sudo subscription-manager orgs。在提示符下输入您的红帽凭证,并使用生成的 密钥值。如需有关您的机构 ID 的更多信息,请参阅了解 Red Hat Subscription Management Organization ID

rhsm_pool_ids

要使用的订阅池 ID。如果您不想自动附加订阅,请使用此参数。要找到此 ID,请运行 sudo subscription-manager list --available --all --matches="Red Hat OpenStack" from undercloud node,并使用生成的 池 ID 值。

rhsm_activation_key

要用于注册的激活码。

rhsm_autosubscribe

使用这个参数自动将兼容订阅附加到这个系统。将值设为 true 以启用此功能。

rhsm_baseurl

获取内容的基本 URL。默认 URL 是 Red Hat Content Delivery Network。如果使用 Satellite 服务器,请将此值更改为 Satellite 服务器内容存储库的基本 URL。

rhsm_server_hostname

用于注册的订阅管理服务的主机名。默认为 Red Hat Subscription Management 主机名。如果使用 Satellite 服务器,请将此值改为 Satellite 服务器主机名。

rhsm_repos

您要启用的仓库列表。

rhsm_username

注册的用户名。如果可能,使用激活码进行注册。

rhsm_password

注册的密码。如果可能,使用激活码进行注册。

rhsm_release

用于固定软件仓库的 Red Hat Enterprise Linux 版本。对于 Red Hat OpenStack Platform,这被设置为 8.4

rhsm_rhsm_proxy_hostname

HTTP 代理的主机名。例如: proxy.example.com

rhsm_rhsm_proxy_port

HTTP 代理通信的端口。例如:8080

rhsm_rhsm_proxy_user

用于访问 HTTP 代理的用户名。

rhsm_rhsm_proxy_password

用于访问 HTTP 代理的密码。

重要

只有在将 rhsm_method 设置为 portal 时,您只能一起使用 rhsm_activation_keyrhsm_repos。如果将 rhsm_method 设置为 'satellite',则只能使用 rhsm_activation_keyrhsm_repos

11.3. 切换到 rhsm 可组合服务

以前的 rhel-registration 方法运行一个 bash 脚本来处理 overcloud 注册。这个方法的脚本和环境文件位于 /usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/ 的核心 heat 模板集合中。

完成以下步骤,从 rhel-registration 方法切换到 rhsm 可组合服务。

流程

  1. 从将来的部署操作中排除 rhel-registration 环境文件。在大多数情况下,排除以下文件:

    • rhel-registration/environment-rhel-registration.yaml
    • rhel-registration/rhel-registration-resource-registry.yaml
  2. 如果您使用自定义 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
        ...
  3. 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-registrationrhsm / RhsmVars

rhel_reg_method

rhsm_method

rhel_reg_org

rhsm_org_id

rhel_reg_pool_id

rhsm_pool_ids

rhel_reg_activation_key

rhsm_activation_key

rhel_reg_auto_attach

rhsm_autosubscribe

rhel_reg_sat_url

rhsm_satellite_url

rhel_reg_repos

rhsm_repos

rhel_reg_user

rhsm_username

rhel_reg_password

rhsm_password

rhel_reg_release

rhsm_release

rhel_reg_http_proxy_host

rhsm_rhsm_proxy_hostname

rhel_reg_http_proxy_port

rhsm_rhsm_proxy_port

rhel_reg_http_proxy_username

rhsm_rhsm_proxy_user

rhel_reg_http_proxy_password

rhsm_rhsm_proxy_password

11.5. 将 overcloud 注册到 Red Hat Satellite Server

创建可启用并配置 rhsm 可组合服务的环境文件,以将节点注册到 Red Hat Satellite 而不是红帽客户门户网站。

流程

  1. 创建名为 templates/rhsm.yml 的环境文件,以存储配置。
  2. 在环境文件中包括您的配置。例如:

    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_registryrhsm 可组合服务与 OS::TripleO::Services::Rhsm 资源相关联,每行都可用。

    RhsmVars 变量传递参数到 Ansible 以配置您的红帽注册。

  3. 保存环境文件。

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 ContentManaging Content Views

流程

  1. stack 用户的身份登录 undercloud。
  2. 创建名为 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 变量,使其适合您的卫星服务器。

  3. 运行 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 上运行升级框架命令以在此工作流中执行操作。

  1. 升级 undercloud,但保留 ceph-ansible版本 3
  2. 启动 overcloud 升级
  3. 为托管 Ceph Storage 容器化服务的每个节点执行以下任务:

    1. 将 Ceph Storage 容器化服务迁移到 Podman
    2. 升级操作系统
    3. 升级 OpenStack Platform 服务,重新启动 Ceph Storage 版本 3 容器化服务
  4. 完成 overcloud 升级
  5. ceph-ansible 升级到 undercloud 上的版本 4
  6. 升级到 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 上。

流程

  1. stack 用户的身份登录 undercloud。
  2. 运行 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 软件仓库。

流程

  1. stack 用户的身份登录 undercloud。
  2. 编辑包含 overcloud Ceph Storage 配置的环境文件。此文件通常命名为 ceph-config.yaml,您可以在 templates 目录中找到该文件:

    $ vi /home/stack/templates/ceph-config.yaml
  3. CephAnsibleRepo 参数添加到 parameter_defaults 部分:

    parameter_defaults:
      ...
      CephAnsibleRepo: rhceph-4-tools-for-rhel-8-x86_64-rpms
      ...

    CephAnsibleRepo 设置包含 ceph-ansible 的存储库。验证框架使用此参数检查已在 undercloud 上安装了 ceph-ansible

  4. 保存 ceph-config.yaml 文件。

12.4. 在升级前检查 Ceph 集群状态

在进行 overcloud 升级前,您必须验证 Ceph 集群是否按预期工作。

流程

  1. 登录运行 ceph-mon 服务的节点。此节点通常是 Controller 节点或独立 Ceph 监控节点。
  2. 输入以下命令来查看 Ceph 集群的状态:

    $ docker exec ceph-mon-$HOSTNAME ceph -s
  3. 确认集群的运行状况状态为 HEALTH_OK,并且所有 OSD 都为 up

第 13 章 准备使用外部 Ceph 部署升级

如果您要使用外部 Ceph 部署升级,则必须完成本节中所含的步骤。

注意

如果您的部署不使用外部 Ceph Storage 集群,则必须跳过本节中所含的步骤,并继续进行下一部分。

13.1. 安装 ceph-ansible

如果要使用外部 Ceph 部署升级,则必须完成此步骤。

当在 Red Hat OpenStack Platform 中使用 Ceph Storage 时,需要 ceph-ansible 软件包。

流程

  1. 启用 Ceph 工具存储库:

    [stack@director ~]$ sudo subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
  2. 安装 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 软件仓库。

流程

  1. stack 用户的身份登录 undercloud。
  2. 编辑包含 overcloud Ceph Storage 配置的环境文件。此文件通常命名为 ceph-config.yaml,您可以在 templates 目录中找到该文件:

    $ vi /home/stack/templates/ceph-config.yaml
  3. CephAnsibleRepo 参数添加到 parameter_defaults 部分:

    parameter_defaults:
      ...
      CephAnsibleRepo: rhceph-4-tools-for-rhel-8-x86_64-rpms
      ...

    CephAnsibleRepo 设置包含 ceph-ansible 的存储库。验证框架使用此参数检查已在 undercloud 上安装了 ceph-ansible

  4. 保存 ceph-config.yaml 文件。

第 14 章 更新网络配置

您必须完成一些网络配置,以便为 overcloud 升级做准备。

14.1. 更新网络接口模板

Red Hat OpenStack Platform 包含一个脚本,可自动将缺少的参数添加到 NIC 模板文件。

流程

  1. stack 用户的身份登录 undercloud。
  2. source stackrc 文件:

    $ source ~/stackrc
  3. 在 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 以查看添加到脚本的选项列表。
  4. 为脚本添加可执行权限:

    $ chmod +x update-nic-templates.sh
  5. 可选:如果您为 RHOSP 环境使用 spine-leaf network topology,请检查 roles_data.yaml 文件,并确保它为部署的 NIC 模板使用正确的角色名称。该脚本使用 roles_data.yaml 文件中的 deprecated_nic_config_name 参数的值。
  6. 运行脚本:

    $ ./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 prepareopenstack 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
  • 要在从 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 prepareopenstack overcloud upgrade converge 命令。

16.2. 要在部署中包括的新环境文件

除了常规的 overcloud 环境文件外,还必须包括新的环境文件以方便升级到 Red Hat OpenStack Platform(RHOSP)16.2。

File备注

/home/stack/templates/upgrades-environment.yaml

此文件包含特定于升级的参数。只有在升级的持续时间时才需要这个文件。运行 openstack overcloud upgrade converge 后丢弃此文件。

/home/stack/templates/rhsm.yaml

此文件包含用于 overcloud 的注册和订阅信息。此文件将您的系统注册到红帽客户门户或红帽卫星服务器。

/home/stack/containers-prepare-parameter.yaml

包含源和准备步骤的文件。这与您用于 undercloud 升级的文件相同。

/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml

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 的所有准备,包括:

  • Leapp 环境文件
  • 所有 overcloud 节点现在都使用可预测的 NIC 名称。

Y/N

将您的注册详情更新为 Red Hat OpenStack Platform 16.2 存储库,并转换环境文件以使用基于 Ansible 的方法。

Y/N

更新了网络配置模板。

Y/N

使用 Red Hat OpenStack Platform 16.2 的新环境文件更新环境文件列表。

Y/N

可选: 如果您的部署包含专用 Object Storage(swift)节点:

复制的 roles_data.yaml 文件,删除 deprecated_server_resource_name: 'SwiftStorage',并将该文件传递给 openstack overcloud upgrade prepareopenstack overcloud upgrade converge 命令。

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_preparesystem_upgrade_runsystem_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 部署升级,您可以跳过使用 cephceph_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)的计算节点.

工作流

使用以下工作流图来标识特定节点的正确更新路径:

Overcloud node upgrade workflow

第 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 运行升级准备命令:

    $ 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 选项传递名称。
  3. 等待升级准备完成。
  4. 下载容器镜像:

    $ 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 节点升级工作流

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 在 undercloud 节点上,识别 bootstrap Controller 节点:

    $ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
    • <stack_name > 替换为堆栈的名称。
  3. 升级 bootstrap Controller 节点:

    1. 在 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 可选参数,并将 &lt ;stack& gt; 替换为 overcloud 堆栈的名称。

        在 Leapp 升级过程中,bootstrap Controller 节点会被重启。

    2. 将数据库的最新版本从现有节点复制到 bootstrap 节点:

      $ openstack overcloud external-upgrade run [--stack <stack>] --tags system_upgrade_transfer_data
      重要

      此命令会导致 control plane 上的中断。在 RHOSP 升级完成并且 control plane 再次激活前,您无法对 overcloud 执行任何标准操作。

    3. 在后续步骤中,在 Compute 节点上启动临时 16.2 容器,以帮助加快工作负载迁移。

      $ openstack overcloud upgrade run --stack <stack> --playbook upgrade_steps_playbook.yaml --tags nova_hybrid_state --limit all
    4. 在没有标签的情况下升级 overcloud:

      $ openstack overcloud upgrade run --stack <stack> --limit <bootstrap_controller_node>
    5. 升级后,验证新 Pacemaker 集群是否已启动,并且 control plane 服务(如 galerarabbithaproxyredis )正在运行:

      $ sudo pcs status
  4. 升级下一个 Controller 节点:

    1. 验证旧集群不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 在 Controller 节点上执行操作系统的 Leapp 升级:

      $ openstack overcloud upgrade run --stack <stack> --tags system_upgrade --limit <controller_node>
      • <controller_node > 替换为要升级的 Controller 节点的主机名,如 overcloud-controller-1

        Controller 节点作为 Leapp 升级的一部分重启。

    3. 升级 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

在适用的情况下,用自己的节点名称替换这些值。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 通过在 undercloud 节点上运行以下命令来识别 bootstrap Controller 节点:

    $ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
    • 可选:将 <stack_name > 替换为堆栈的名称。如果未指定,则默认值为 overcloud
  3. 升级 bootstrap Controller 节点:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-0

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。

        重要

        下一个命令会导致 control plane 中断。在接下来的几个步骤中,您无法对 overcloud 执行任何标准操作。

    3. 使用 system_upgrade_transfer_data 标签运行外部升级命令:

      $ openstack overcloud external-upgrade run [--stack <stack_name>] --tags system_upgrade_transfer_data

      此命令将现有节点中数据库的最新版本复制到 bootstrap 节点。

    4. 使用 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 节点时协助工作负载迁移。

    5. 在没有标签的情况下运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0

      此命令执行 Red Hat OpenStack Platform 升级。

      重要

      当此命令完成后,control plane 变为活跃的。您可以对 overcloud 执行标准操作。

    6. 在升级后,验证新 Pacemaker 集群是否启动,并且 control plane 服务(如 galera、rabbit、haproxy 和 redis)是否正在运行:

      $ sudo pcs status
  4. 升级下一个 Controller 节点:

    1. 验证旧集群不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 使用 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 服务。

    3. 在下一个 Controller 节点上使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-1

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    4. 在没有标签的情况下运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1

      此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,将之前升级的 bootstrap 节点包括在 --limit 选项中。

  5. 升级最终的 Controller 节点:

    1. 验证旧集群不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 使用 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 服务。

    3. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-2

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    4. 在没有标签的情况下运行升级命令:

      $ 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 选择 Ceph Storage 节点并升级操作系统:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-0

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 升级会在后续步骤中进行。

  3. 选择下一个 Ceph Storage 节点并升级操作系统:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-1

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 升级会在后续步骤中进行。

  4. 选择最终的 Ceph Storage 节点并升级操作系统:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-2

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机
  3. 使用 system_upgrade 标签运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0

    这个命令执行以下操作:

    • 对操作系统执行 Leapp 升级。
    • 作为 Leapp 升级的一部分执行重启。
  4. 在没有标签的情况下运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0

    此命令执行 Red Hat OpenStack Platform 升级。

  5. 要并行升级多个 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 编辑 containers-prepare-parameter.yaml 文件并删除以下参数及其值:

    • ceph3_namespace
    • ceph3_tag
    • ceph3_image
    • name_prefix_stein
    • name_suffix_stein
    • namespace_stein
    • tag_stein
  3. 要在 overcloud 中重新启用隔离,请在 fence .yaml 环境文件中将 EnableFencing 参数设置为 true
  4. 运行升级最终化命令:

    $ 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 选项传递名称。
  5. 等待堆栈同步完成。
重要

对于进一步的部署操作,您不需要 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 运行升级准备命令:

    $ 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 选项传递名称。
  3. 等待升级准备完成。
  4. 下载容器镜像:

    $ 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

在适用的情况下,用自己的节点名称替换这些值。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 通过在 undercloud 节点上运行以下命令来识别 bootstrap Controller 节点:

    $ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
    • 可选:将 <stack_name > 替换为堆栈的名称。如果未指定,则默认值为 overcloud
  3. 升级 bootstrap Controller 节点:

    1. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-0

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。

        重要

        下一个命令会导致 control plane 中断。在接下来的几个步骤中,您无法对 overcloud 执行任何标准操作。

    2. 使用 system_upgrade_transfer_data 标签运行外部升级命令:

      $ openstack overcloud external-upgrade run [--stack <stack_name>] --tags system_upgrade_transfer_data

      此命令将现有节点中数据库的最新版本复制到 bootstrap 节点。

    3. 使用 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 节点时协助工作负载迁移。

    4. 在没有标签的情况下运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0

      此命令执行 Red Hat OpenStack Platform 升级。

      重要

      当此命令完成后,control plane 变为活跃的。您可以对 overcloud 执行标准操作。

    5. 在升级后,验证新 Pacemaker 集群是否启动,并且 control plane 服务(如 galera、rabbit、haproxy 和 redis)是否正在运行:

      $ sudo pcs status
  4. 升级下一个 Controller 节点:

    1. 验证旧集群不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 在下一个 Controller 节点上使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-1

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1

      此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,将之前升级的 bootstrap 节点包括在 --limit 选项中。

  5. 升级最终的 Controller 节点:

    1. 验证旧集群不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-2

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机
  3. 使用 system_upgrade 标签运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0

    这个命令执行以下操作:

    • 对操作系统执行 Leapp 升级。
    • 作为 Leapp 升级的一部分执行重启。
  4. 在没有标签的情况下运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0

    此命令执行 Red Hat OpenStack Platform 升级。

  5. 要并行升级多个 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 编辑 containers-prepare-parameter.yaml 文件并删除以下参数及其值:

    • ceph3_namespace
    • ceph3_tag
    • ceph3_image
    • name_prefix_stein
    • name_suffix_stein
    • namespace_stein
    • tag_stein
  3. 要在 overcloud 中重新启用隔离,请在 fence .yaml 环境文件中将 EnableFencing 参数设置为 true
  4. 运行升级最终化命令:

    $ 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 选项传递名称。
  5. 等待堆栈同步完成。
重要

对于进一步的部署操作,您不需要 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 运行升级准备命令:

    $ 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 选项传递名称。
  3. 等待升级准备完成。
  4. 下载容器镜像:

    $ 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-0overcloud-database-0overcloud-networker-0overcloud-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

流程

  1. stack 用户身份登录 undercloud 主机。
  2. Source stackrc 文件:

    $ source ~/stackrc
  3. 在 undercloud 节点上,识别 bootstrap Controller 节点:

    $ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
    • 可选:将 <stack_name > 替换为堆栈的名称。如果未指定,则默认值为 overcloud
  4. 升级 overcloud-controller-0overcloud-database-0overcloud-networker-0overcloud-ceph-0 control plane 节点:

    1. 使用 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 升级的简明措施。

    2. 在每个 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 已完成升级,然后再进行剩余升级。

    3. 将数据库的最新版本从现有节点复制到 bootstrap 节点:

      $ openstack overcloud external-upgrade run --stack <stack_name> --tags system_upgrade_transfer_data
      重要

      此命令会导致 control plane 上的中断。在接下来的几个步骤中,您无法对 overcloud 执行任何标准操作。

    4. 使用 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 节点时协助工作负载迁移。

    5. 在没有标签的情况下运行升级命令:

      $ 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 执行标准操作。

    6. 可选:在 bootstrap Controller 节点上,验证升级后是否启动新的 Pacemaker 集群,并且 control plane 服务(如 galera、rabbit、haproxy 和 redis)正在运行:

      $ sudo pcs status
  5. 升级 overcloud-controller-1overcloud-database-1overcloud-networker-1overcloud-ceph-1 control plane 节点:

    1. 登录 overcloud-controller-1 节点,并验证旧集群不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 使用 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 升级的简明措施。

    3. 使用 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 升级的一部分执行重启。
    4. 在没有标签的情况下运行升级命令:

      $ 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 选项中。

  6. 升级 overcloud-controller-2overcloud-database-2overcloud-networker-2overcloud-ceph-2 control plane 节点:

    1. 登录 overcloud-controller-2 节点,并验证旧集群不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 使用 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 升级的简明措施。

    3. 使用 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 升级的一部分执行重启。
    4. 在没有标签的情况下运行升级命令:

      $ 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 替换为堆栈的名称。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. Source stackrc 文件:

    $ source ~/stackrc
  3. 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机
  4. 使用 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 升级的一部分执行重启。
  5. 在没有标签的情况下运行升级命令:

    $ 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 升级。

  6. 可选: 要升级所选 Compute 节点,请使用 --limit 选项以及您要升级的节点列表。下例将 overcloud-compute-0overcloud-compute-1overcloud-compute-2 节点并行升级。

    1. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
    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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 编辑 containers-prepare-parameter.yaml 文件并删除以下参数及其值:

    • ceph3_namespace
    • ceph3_tag
    • ceph3_image
    • name_prefix_stein
    • name_suffix_stein
    • namespace_stein
    • tag_stein
  3. 要在 overcloud 中重新启用隔离,请在 fence .yaml 环境文件中将 EnableFencing 参数设置为 true
  4. 运行升级最终化命令:

    $ 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 选项传递名称。
  5. 等待堆栈同步完成。
重要

对于进一步的部署操作,您不需要 upgrade-environment.yaml 文件。

20.5. 一次升级整个 overcloud

此升级过程要求您首先关闭 overcloud 中运行的所有工作负载。然后,您可以升级所有 overcloud 系统,并在之后重启工作负载。此过程由 undercloud 驱动。

您还可以升级包括 Red Hat Ceph Storage 的 Compute 节点作为此流程的一部分,或者在升级所有其他节点后单独升级它们。

先决条件

  • 在 upgrade -environment.yaml 文件中,在 parameter_defaults 中包含以下参数:

    AllInOneUpgrade: true

流程

  1. 关闭工作负载。
  2. 如果您部署了 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 节点的主机名。

  3. 停止节点上的所有 RHOSP 服务:

    $ openstack overcloud external-upgrade run --stack overcloud --tags system_upgrade_stop_services
  4. 在所有节点上运行系统升级。如果您部署了 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
  5. 在没有标签的情况下运行升级:

    $ openstack overcloud upgrade run --stack overcloud --limit controller-0,controller-1,controller-2,ceph-0,ceph-1,ceph-2,networker-0,networker-1

后续步骤

第 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 运行升级准备命令:

    $ 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 选项传递名称。
  3. 等待升级准备完成。
  4. 下载容器镜像:

    $ 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 节点开始升级每个节点。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 通过在 undercloud 节点上运行以下命令来识别 bootstrap 节点:

    $ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
    • 可选:将 <stack_name > 替换为堆栈的名称。如果未指定,则默认值为 overcloud
  3. 升级 bootstrap 节点:

    1. 如果节点包含 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-0

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 使用 system_upgrade_transfer_data 标签运行外部升级命令:

      $ openstack overcloud external-upgrade run [--stack <stack_name>] --tags system_upgrade_transfer_data

      此命令将现有节点中数据库的最新版本复制到 bootstrap 节点。

    4. 使用 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 节点时协助工作负载迁移。

    5. 在没有标签的情况下运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0

      此命令执行 Red Hat OpenStack Platform 升级。

  4. 升级每个基于 Pacemaker 的节点:

    1. 如果节点包含 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 服务。

    2. 在下一个节点上,使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-database-0

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-database-0

      此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,在 --limit 选项中包含之前升级的节点。

  5. 在每个基于 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 使用 system_upgrade 标签运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-networker-0

    这个命令执行以下操作:

    • 对操作系统执行 Leapp 升级。
    • 作为 Leapp 升级的一部分执行重启。
  3. 在没有标签的情况下运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-networker-0

    此命令执行 Red Hat OpenStack Platform 升级。

  4. 在每个节点上重复升级过程,直到您已升级了所有基于 Controller 的节点。

21.4. 升级 Ceph MON 节点的操作系统

为每个 Ceph MON 节点升级操作系统。建议单独升级每个 Ceph MON 节点,以便在节点间维护仲裁。

注意

如果您不使用默认堆栈名称(overcloud),请将堆栈名称设置为 --stack STACK NAME 选项,将 STACK NAME 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 选择 Ceph MON 节点并升级操作系统:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephmon-0

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 升级会在后续步骤中进行。

  3. 选择下一个 Ceph MON 节点并升级操作系统:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephmon-1

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 升级会在后续步骤中进行。

  4. 选择最终的 Ceph MON 节点并升级操作系统:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephmon-2

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 选择 Ceph Storage 节点并升级操作系统:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-0

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 升级会在后续步骤中进行。

  3. 选择下一个 Ceph Storage 节点并升级操作系统:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-1

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 升级会在后续步骤中进行。

  4. 选择最终的 Ceph Storage 节点并升级操作系统:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-cephstorage-2

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    3. 在没有标签的情况下运行升级命令:

      $ 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机
  3. 使用 system_upgrade 标签运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-compute-0

    这个命令执行以下操作:

    • 对操作系统执行 Leapp 升级。
    • 作为 Leapp 升级的一部分执行重启。
  4. 在没有标签的情况下运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-compute-0

    此命令执行 Red Hat OpenStack Platform 升级。

  5. 要并行升级多个 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 编辑 containers-prepare-parameter.yaml 文件并删除以下参数及其值:

    • ceph3_namespace
    • ceph3_tag
    • ceph3_image
    • name_prefix_stein
    • name_suffix_stein
    • namespace_stein
    • tag_stein
  3. 要在 overcloud 中重新启用隔离,请在 fence .yaml 环境文件中将 EnableFencing 参数设置为 true
  4. 运行升级最终化命令:

    $ 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 选项传递名称。
  5. 等待堆栈同步完成。
重要

对于进一步的部署操作,您不需要 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 运行升级准备命令:

    $ 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 选项传递名称。
  3. 等待升级准备完成。
  4. 下载容器镜像:

    $ 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

在适用的情况下,用自己的节点名称替换这些值。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 通过在 undercloud 节点上运行以下命令来识别 bootstrap Controller 节点:

    $ tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
    • 可选:将 <stack_name > 替换为堆栈的名称。如果未指定,则默认值为 overcloud
  3. 升级 bootstrap Controller 节点:

    1. 使用 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 服务。

    2. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-0

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。

        重要

        下一个命令会导致 control plane 中断。在接下来的几个步骤中,您无法对 overcloud 执行任何标准操作。

    3. 使用 system_upgrade_transfer_data 标签运行外部升级命令:

      $ openstack overcloud external-upgrade run [--stack <stack_name>] --tags system_upgrade_transfer_data

      此命令将现有节点中数据库的最新版本复制到 bootstrap 节点。

    4. 使用 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 节点时协助工作负载迁移。

    5. 在没有标签的情况下运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0

      此命令执行 Red Hat OpenStack Platform 升级。

      重要

      当此命令完成后,control plane 变为活跃的。您可以对 overcloud 执行标准操作。

    6. 在升级后,验证新 Pacemaker 集群是否启动,并且 control plane 服务(如 galera、rabbit、haproxy 和 redis)是否正在运行:

      $ sudo pcs status
  4. 升级下一个 Controller 节点:

    1. 验证旧集群不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 使用 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 服务。

    3. 在下一个 Controller 节点上使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-1

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    4. 在没有标签的情况下运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1

      此命令执行 Red Hat OpenStack Platform 升级。除了此节点外,将之前升级的 bootstrap 节点包括在 --limit 选项中。

  5. 升级最终的 Controller 节点:

    1. 验证旧集群不再运行:

      $ sudo pcs status

      当集群没有运行时,会显示类似如下的错误:

      Error: cluster is not currently running on this node
    2. 使用 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 服务。

    3. 使用 system_upgrade 标签运行升级命令:

      $ openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-2

      这个命令执行以下操作:

      • 对操作系统执行 Leapp 升级。
      • 作为 Leapp 升级的一部分执行重启。
    4. 在没有标签的情况下运行升级命令:

      $ 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 迁移实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机
  3. 使用 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 服务。

  4. 使用 system_upgrade 标签运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-computehci-0

    这个命令执行以下操作:

    • 对操作系统执行 Leapp 升级。
    • 作为 Leapp 升级的一部分执行重启。
  5. 在没有标签的情况下运行升级命令:

    $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-computehci-0

    此命令执行 Red Hat OpenStack Platform 升级。

  6. 要并行升级多个 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 编辑 containers-prepare-parameter.yaml 文件并删除以下参数及其值:

    • ceph3_namespace
    • ceph3_tag
    • ceph3_image
    • name_prefix_stein
    • name_suffix_stein
    • namespace_stein
    • tag_stein
  3. 要在 overcloud 中重新启用隔离,请在 fence .yaml 环境文件中将 EnableFencing 参数设置为 true
  4. 运行升级最终化命令:

    $ 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 选项传递名称。
  5. 等待堆栈同步完成。
重要

对于进一步的部署操作,您不需要 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 软件包。

流程

  1. 启用 Ceph 工具存储库:

    [stack@director ~]$ sudo subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
  2. 安装 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 替换为您的堆栈的名称。

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
  2. 使用 ceph 标签运行 Ceph Storage 外部升级过程:

    $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph
  3. 等待 Ceph Storage 升级完成。

第 24 章 OSD 从 FileStore 迁移到 BlueStore

完成并验证升级过程后,您必须将 FileStore OSD 迁移到 BlueStore。您必须一次完成一个节点。以下流程使用 ceph-ansible 完成迁移。只有由 director 部署 Ceph 集群时才应用此步骤。

24.1. 检查集群是否在运行 FileStore,因此需要迁移

流程

  1. 在具有 Ceph MON 容器的节点上,以 heat-admin 用户身份登录,如 Controller 节点或单机 Ceph MON 节点。例如,在标准 overcloud 部署中,overcloud-controller-1 使用 Ceph MON 容器。
  2. 查询 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 ~]#
  3. 如果有任何行返回 "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"

流程

  1. 确保 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

  2. stack 用户的身份登录 undercloud。
  3. 使用 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
  4. 登录具有 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,则其迁移会成功。

  5. 可选: 要查看有关特定 OSD 的额外详情,请输入以下命令:

    [root@overcloud-controller-1 ~]# podman exec -it ceph-mon-overcloud-controller-1 sh -c "ceph osd metadata <ID>"

    将 <ID> 替换为您要查询的 OSD 的 ID。

  6. 在下一个节点上启动迁移过程前,您必须等待集群同步。

    [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.
  7. 在下一个节点上启动迁移过程前,您必须等待集群重新平衡过程完成。要跟踪状态,请运行以下命令:

    [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<NODE_NAME> ceph -w

    将 <NODE_NAME> 替换为迁移的节点的名称。

  8. 为存储集群中的每个节点重复迁移过程。

有关从 FileStore 迁移到 BlueStore 的更多信息,请参阅 Red Hat Ceph Storage Administration Guide 中的 BlueStore

24.3. 验证您的 FileStore 到 BlueStore 的迁移

您可以检查 OSD 的状态,以确保成功完成迁移。

流程

  1. heat-admin 用户身份登录托管于其中一个 Controller 节点的 ceph-mon 容器。
  2. 查询 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 中的不必要的软件包和目录。

流程

  1. 删除不必要的软件包

    $ sudo dnf -y remove --exclude=python-pycadf-common python2*
  2. /httpboot/tftpboot 目录中删除包含 Red Hat OpenStack 13 中使用的旧镜像的内容:

    $ sudo rm -rf /httpboot /tftpboot

25.2. 删除冗余遥测服务的用户

遥测端点默认为禁用。您可以使用此流程删除升级后保留的任何遥测端点。

先决条件

  • 升级后,您仍然有遥测端点。您可以使用流程来识别剩余的遥测端点。

流程

  1. 登录 undercloud 并提供 overcloud 身份验证文件:

    $ source ~/overcloudrc
  2. 识别升级后保留的遥测端点:

    $ openstack endpoint list | grep -i -e aodh -e gnocchi -e panko
  3. 删除缺少端点的用户:

    $ openstack user delete aodh gnocchi panko

验证

  • 验证端点用户是否不存在:

    $ openstack user list

25.3. 验证升级后的功能

运行 升级后 验证组检查升级后的功能。

流程

  1. source stackrc 文件:

    $ source ~/stackrc
  2. 如果没有清单文件,您必须生成静态清单文件:

    $ 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> 替换为堆栈的名称。

  3. 使用 --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> 替换为堆栈的名称。

  4. 查看验证报告的结果。要查看特定验证的详细输出,请根据报告中具体验证的 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 升级到最新版本。

流程

  1. stack 用户的身份登录 undercloud。
  2. source stackrc 文件:

    $ source ~/stackrc
  3. 安装包含 overcloud QCOW2 归档的软件包:

    $ sudo dnf install rhosp-director-images rhosp-director-images-ipa-x86_64
  4. stack 用户的主目录(/home/stack/images)的 images 中删除任何存在的镜像。

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

    $ 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 ~
  6. 将最新的镜像导入到 director:

    $ openstack overcloud image upload --update-existing --image-path /home/stack/images/
  7. 配置节点以使用新镜像:

    $ 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 参数迁移到 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet 参数。

流程

  1. stack 用户的身份登录 undercloud。
  2. 如果您的 Compute 节点支持并发多线程(SMT),但创建带有 hw:cpu_thread_policy=isolated 策略的实例,则必须执行以下选项之一:

    • 取消设置 hw:cpu_thread_policy 线程策略并重新定义实例大小:

      1. 查找 overcloud 身份验证文件:

        $ source ~/overcloudrc
      2. 取消设置类别的 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 的平台。
      3. 将实例转换为使用新的线程策略。

        (overcloud) $ openstack server resize --flavor <flavor> <server>
        (overcloud) $ openstack server resize confirm <server>

        使用 hw:cpu_thread_policy=isolated 策略为所有固定实例重复此步骤。

    • 从 Compute 节点迁移实例,并在 Compute 节点上禁用 SMT:

      1. 查找 overcloud 身份验证文件:

        $ source ~/overcloudrc
      2. 禁用 Compute 节点接受新虚拟机:

        (overcloud) $ openstack compute service list
        (overcloud) $ openstack compute service set <hostname> nova-compute --disable
      3. 从 Compute 节点迁移所有实例。有关实例迁移的更多信息,请参阅在 Compute 节点间迁移虚拟机实例
      4. 重新引导 Compute 节点,并在 Compute 节点的 BIOS 中禁用 SMT。
      5. 引导 Compute 节点。
      6. 重新启用 Compute 节点:

        (overcloud) $ openstack compute service set <hostname> nova-compute --enable
  3. Source stackrc 文件:

    $ source ~/stackrc
  4. 编辑包含 NovaVcpuPinSet 参数的环境文件。
  5. 将 CPU 固定配置从 NovaVcpuPinSet 参数迁移到 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet

    • NovaVcpuPinSet 的值迁移到之前用于固定实例的主机的 NovaComputeCpuDedicatedSet
    • 对于之前用于未固定实例的主机,将 NovaVcpuPinSet 的值迁移到 NovaComputeCpuSharedSet
    • 如果没有为 NovaVcpuPinSet 设置值,则所有 Compute 节点内核都应分配给 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet,具体取决于您要在节点上托管的实例类型。

    例如,以前的环境文件可能包含以下固定配置:

    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: ""
      ...
    重要

    确保 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet 的配置与 NovaVcpuPinSet 中定义的配置匹配。要更改此配置,或在更新配置前配置 NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet,请确保具有固定配置的 Compute 节点不会运行任何实例。

  6. 保存该文件。
  7. 运行部署命令,以使用新的 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 升级到最新版本。

流程

  1. 列出您的云中具有 _member_ 角色的所有用户:

    openstack role assignment list --names --role _member_ --sort-column project
  2. 对于每个用户,删除 _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 命令。

流程

  1. 更正文件中的错误:

    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
  2. 使用更正的文件运行升级准备命令:

    $ openstack overcloud upgrade prepare \
        --stack STACK NAME \
        --templates \
        -e ENVIRONMENT FILE
        …​
        -e /home/stack/templates/upgrades-environment.yaml \
        …​

    等待 overcloud 栈更新完成。

  3. 继续失败的升级操作步骤。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.