10.3. 将 Compute 节点升级到多 RHEL 环境
您可以将部分 Compute 节点升级到 RHEL 9.2,而其余的 Compute 节点保留在 RHEL 8.4 上。这个升级过程涉及以下基本步骤:
-
选择您要升级到 RHEL 9.2 的节点,以及您希望在 RHEL 8.4 上保留哪些节点。为您要为每个批处理节点创建的每个角色选择一个角色名称,如
ComputeRHEL-9.2
和ComputeRHEL-8.4
。 创建存储要升级到 RHEL 9.2 的节点的角色,或存储您要保留在 RHEL 8.4 上的节点。这些角色可以保持为空,直到您准备好将 Compute 节点移到新角色为止。您可以根据需要创建任意数量的角色,并在决定时划分节点。例如:
-
如果您的环境使用名为
ComputeSRIOV
的角色,您需要运行 Canary 测试来升级到 RHEL 9.2,您可以创建一个新的ComputeSRIOVRHEL9
角色,并将 Canary 节点移到新角色。 -
如果您的环境使用名为
ComputeOffload
的角色,而您想要将该角色中的大多数节点升级到 RHEL 9.2,但在 RHEL 8.4 上保留几个节点,您可以创建一个新的ComputeOffloadRHEL8
角色来存储 RHEL 8.4 节点。然后,您可以选择原始ComputeOffload
角色中的节点升级到 RHEL 9.2。
-
如果您的环境使用名为
- 将节点从每个 Compute 角色移到新角色。
将特定 Compute 节点上的操作系统升级到 RHEL 9.2。您可以从相同的角色或多个角色升级批处理中的节点。
注意在 Multi-RHEL 环境中,部署应该继续使用 pc-i440fx 机器类型。不要将默认值更新为 Q35。迁移到 Q35 机器类型是在所有 Compute 节点升级到 RHEL 9.2 后要遵循的独立、升级后的步骤。有关迁移 Q35 机器类型的更多信息,请参阅 升级到 RHOSP 17 后为主机更新默认机器类型。
使用以下步骤将 Compute 节点升级到 Multi-RHEL 环境:
10.3.1. 为 Multi-RHEL Compute 节点创建角色
创建新角色以存储您要升级到 RHEL 9.2 或保留在 RHEL 8.4 上的节点,并将节点移到新角色中。
流程
为您的环境创建相关角色。在
role_data.yaml
文件中,复制源 Compute 角色以用于新角色。对所需的每个额外角色重复此步骤。角色可以保持空,直到您准备好将 Compute 节点移到新角色。
如果要创建 RHEL 8 角色:
name: <ComputeRHEL8> description: | Basic Compute Node role CountDefault: 1 rhsm_enforce: False ... ServicesDefault: ... - OS::TripleO::Services::NovaLibvirtLegacy
注意包含 RHEL 8.4 上剩余的节点的角色必须包含
NovaLibvirtLegacy
服务。-
将
<ComputeRHEL8
> 替换为 RHEL 8.4 角色的名称。 如果要创建 RHEL 9 角色:
name: <ComputeRHEL9> description: | Basic Compute Node role CountDefault: 1 ... ServicesDefault: ... - OS::TripleO::Services::NovaLibvirt
注意包含升级到 RHEL 9.2 的节点的角色必须包含
NovaLibvirt
服务。将OS::TripleO::Services::NovaLibvirtLegacy
替换为OS::TripleO::Services::NovaLibvirt
。- 将 <ComputeRHEL9> 替换为 RHEL 9.2 角色的名称。
将
overcloud_upgrade_prepare.sh
文件复制到copy_role_Compute_param.sh
文件中:$ cp overcloud_upgrade_prepare.sh copy_role_Compute_param.sh
编辑
copy_role_Compute_param.sh
文件,使其包含copy_role_params.py
脚本。此脚本会生成环境文件,其中包含新角色的额外参数和资源。例如:/usr/share/openstack-tripleo-heat-templates/tools/copy_role_params.py --rolename-src <Compute_source_role> --rolename-dst <Compute_destination_role> \ -o <Compute_new_role_params.yaml> \ -e /home/stack/templates/internal.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ -e /home/stack/templates/network/network-environment.yaml \ -e /home/stack/templates/inject-trust-anchor.yaml \ -e /home/stack/templates/hostnames.yml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /home/stack/templates/nodes_data.yaml \ -e /home/stack/templates/debug.yaml \ -e /home/stack/templates/firstboot.yaml \ -e /home/stack/overcloud-params.yaml \ -e /home/stack/overcloud-deploy/overcloud/overcloud-network-environment.yaml \ -e /home/stack/overcloud_adopt/baremetal-deployment.yaml \ -e /home/stack/overcloud_adopt/generated-networks-deployed.yaml \ -e /home/stack/overcloud_adopt/generated-vip-deployed.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/nova-hw-machine-type-upgrade.yaml \ -e ~/containers-prepare-parameter.yaml
-
将
<Compute_source_role
> 替换为您要复制的源 Compute 角色的名称。 -
将
<Compute_destination_role
> 替换为新角色的名称。 -
使用 -o 选项定义包含新角色 source Compute 角色的所有非默认值的输出文件的名称。将
<Compute_new_role_params.yaml
> 替换为您的输出文件的名称。
-
将
运行
copy_role_Compute_param.sh
脚本:$ sh /home/stack/copy_role_Compute_param.sh
将 Compute 节点从源角色移到新角色中:
python3 /usr/share/openstack-tripleo-heat-templates/tools/baremetal_transition.py --baremetal-deployment /home/stack/tripleo-<stack>-baremetal-deployment.yaml --src-role <Compute_source_role> --dst-role <Compute_destination_role> <Compute-0> <Compute-1> <Compute-2>
注意此工具包括您在 undercloud 升级过程中导出的原始
/home/stack/tripleo-<stack>-baremetal-deployment.yaml
文件。该工具在/home/stack/tripleo-<stack>-baremetal-deployment.yaml
文件中复制并重命名源角色定义。然后,它会更改hostname_format
,以防止与新创建的目标角色冲突。然后,该工具将节点从源角色移到目的地角色,并更改count
值。-
将
<stack>
替换为您的堆栈的名称。 -
将 <
Compute_source_role
> 替换为包含您要移至新角色的节点的源 Compute 角色的名称。 -
将
<Compute_destination_role
> 替换为新角色的名称。 -
将
<Compute-0
> &
lt;Compute
-1> <Compute-2> 替换为您要移动到新角色的节点的名称。
-
将
重新置备节点,以使用新角色位置更新堆栈中的环境文件:
$ openstack overcloud node provision --stack <stack> --output /home/stack/overcloud_adopt/baremetal-deployment.yaml /home/stack/tripleo-<stack>-baremetal-deployment.yaml
注意输出
baremetal-deployment.yaml
文件是在 overcloud 采用过程中overcloud_upgrade_prepare.sh
文件中使用的相同文件。在
COMPUTE_ROLES
参数中包含 RHEL 8.4 上剩余的任何 Compute 角色,并运行以下脚本。例如,如果您有一个名为ComputeRHEL8
的角色,其中包含在 RHEL 8.4 中剩余的节点,COMPUTE_ROLES = --role ComputeRHEL8
。python3 /usr/share/openstack-tripleo-heat-templates/tools/multi-rhel-container-image-prepare.py \ ${COMPUTE_ROLES} \ --enable-multi-rhel \ --excludes collectd --excludes nova-libvirt \ --minor-override "{${EL8_TAGS}${EL8_NAMESPACE}${CEPH_TAGS}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" --major-override "{${EL9_TAGS}${NAMESPACE}${CEPH_TAGS}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" \ --output-env-file /home/stack/containers-prepare-parameter.yaml
- 重复此步骤以创建额外的角色,并将额外的 Compute 节点移到这些新角色中。
10.3.2. 升级 Compute 节点操作系统
将所选 Compute 节点上的操作系统升级到 RHEL 9.2。您可以同时从不同角色升级多个节点。
先决条件
确保您已为您的环境创建了必要的角色。有关为多 RHEL 环境创建角色的更多信息,请参阅为多 RHEL Compute 节点创建角色。
流程
在
skip_rhel_release.yaml
文件中,将SkipRhelEnforcement
参数设置为false
:parameter_defaults: SkipRhelEnforcement: false
运行
openstack overcloud upgrade prepare
命令,以设置新角色所需的参数和资源。$ openstack overcloud upgrade prepare --yes \ ... -e /home/stack/system_upgrade.yaml \ -e /home/stack/skip_rhel_release.yaml \ -e /home/stack/<Compute_new_role_params.yaml> \ ...
-
使用特定于升级的参数(-e)包括
system_upgrade.yaml
文件。 -
包含
skip_rhel_release.yaml
文件,其中包含 release 参数。 -
包含包含新角色所需参数(-e)的环境文件。将
<Compute_new_role_params.yaml
> 替换为您为新角色创建的环境文件的名称。 - 如果您要同时从多个角色升级节点,请包含您创建的每个新角色的环境文件。
-
使用特定于升级的参数(-e)包括
- 可选:迁移您的实例。有关迁移策略的更多信息,请参阅在 Compute 节点间迁移虚拟机和准备迁移。
升级特定 Compute 节点上的操作系统。使用您要升级的节点列表使用
--limit
选项。以下示例将computerhel9-0
,computerhel9-1
,computerhel9-2
, 和computesriov-42
节点从ComputeRHEL9
和ComputeSRIOV
介绍升级。$ openstack overcloud upgrade run --yes --tags system_upgrade --stack <stack> --limit computerhel9-0,computerhel9-1,computerhel9-2,computesriov-42
- 将 <stack> 替换为您的堆栈的名称。
将 Compute 节点上的容器升级到 RHEL 9.2。使用您要升级的节点列表使用
--limit
选项。以下示例将computerhel9-0
,computerhel9-1
,computerhel9-2
, 和computesriov-42
节点从ComputeRHEL9
和ComputeSRIOV
介绍升级。$ openstack overcloud upgrade run --yes --stack <stack> --limit computerhel9-0,computerhel9-1,computerhel9-2,computesriov-42