[ English | Indonesia | русский ]
多架构部署¶
OpenStack-Ansible 支持部署,其中控制平面或计算节点可能包含多种不同的 CPU 架构。
计算节点的混合 CPU 架构¶
OpenStack-Ansible 支持在同一环境中部署具有多种架构的计算节点。
完全由 x86_64 或 aarch64 节点组成的部署无需任何特殊考虑,将按照正常的 OpenStack-Ansible 文档进行操作。
具有混合架构的部署,或将新架构添加到现有的单架构部署,需要部署者和最终用户采取一些额外的步骤,以确保行为符合预期。
示例 - 将 aarch64 节点添加到 x86_64 部署¶
将操作系统安装到所有新的计算节点上。
将新的计算节点添加到
openstack_user_config.yml。确保每个计算架构的主机都存在于
openstack_user_config.yml中的repo-infra_hosts中。此主机将为它自己的架构构建 python wheel,这将加快许多主机的部署速度。 如果您没有为每个架构创建一个仓库服务器,请确保采取措施不要使 opendev.org git 服务器过载,例如使用所有 OpenStack 服务仓库的本地镜像。
运行 OpenStack-Ansible playbook 以部署所需的服务。
将 HW_ARCH_XXXX 特性添加到 OpenStack 中的每个计算主机。
虽然 OpenStack 中大多数 CPU 硬件特性(例如指令集扩展)都会自动检测和处理,但 CPU 架构除外。 有必要手动将架构特性添加到与每个计算主机对应的资源提供程序。 所需的特性是
HW_ARCH_X86_64 用于 x86_64 Intel 和 AMD CPU
HW_ARCH_AARCH64 用于 aarch64 架构 CPU
(参见:https://docs.openstack.org/os-traits/2025.2/reference/traits.html)
openstack resource provider list openstack resource provider trait list <uuid-of-compute-host> openstack resource provider trait set --trait <existing-trait-1> --trait <existing-trait-2> ... --trait HW_ARCH_xxxxx <uuid-of-compute-host>
注意
特性设置命令将用提供的集合替换所有现有特性,因此您必须指定所有现有特性以及新特性。
配置 Nova 调度器以检查架构。
所有 Nova API 实例中的 /etc/nova/nova.conf 中的两个附加设置
[scheduler] image_metadata_prefilter = true [filter_scheduler] image_properties_default_architecture = x86_64
image_metadata_prefilter设置强制 Nova 调度器将 Glance 镜像上的hw_architecture属性与计算主机资源提供程序上的相应 HW_ARCH_XXX 特性匹配。 这确保了显式标记了目标架构的镜像被调度到具有匹配架构的主机。image_properties_default_architecture设置将在现有的x86_64架构云中应用,在之前所有 Glance 镜像上都没有设置hw_architecture。 这避免了需要追溯性地将该属性应用于所有现有镜像,这可能很困难,因为用户可能有自己的工具来创建和上传镜像,而无需应用所需的属性。警告
未记录的行为警告!
请注意,镜像元数据预过滤器和 ImagePropertiesFilter 是 Nova 调度器用于确定候选计算主机的过程中的不同且无关的步骤。 本节说明如何将它们一起使用。
image_metadata_prefilter仅查看计算主机上的 HW_ARCH_XXX 特性,并找到匹配所需架构的硬件。 这仅发生在镜像上存在hw_architecture属性时,并且仅当手动将所需的特性添加到计算主机时才会发生。image_properties_default_architecture由 ImagePropertiesFilter 使用,它检查每个计算主机上 QEMU 支持的所有架构;这包括对非本机架构的软件模拟。如果完整的 QEMU 套件安装在计算主机上,则该主机将提供运行所有受可用
qemu-system-*二进制文件支持的架构。 在这种情况下,没有hw_architecture属性的镜像可能会被调度到非本机架构主机并进行模拟。禁用 QEMU 模拟。
注意
此步骤尤其适用于现有的
x86_64环境,当添加新的aarch64计算节点时,并且不能假定hw_architecure属性已应用于所有 Glance 镜像,因为操作员可能无法控制所有镜像上传。为了避免对非本机架构进行不必要的 QEMU 模拟,有必要确保所有计算主机上仅存在本机
qemu-system-*二进制文件。 对于现有的部署,最简单的方法是使用系统包管理器来确保删除不需要的二进制文件。包括 2023.1 及更高版本的 OpenStack-Ansible 版本将仅安装本机架构 qemu-system-*` 二进制文件,因此在新版本上不应需要此步骤。
将镜像上传到 Glance。
理想情况下,应为所有上传的镜像设置
hw_architecture属性。 对于与image_properties_default_architecture不匹配的所有架构,设置此属性是强制性的建议为任何需要 UEFI 启动的镜像设置属性
hw_firmware_type='uefi',即使这对于aarch64架构也是隐式的。 这是为了避免在删除实例时 libvirt 中出现 NVRAM 文件问题。
Nova 的架构模拟¶
Nova 具有允许在具有不同本机 CPU 架构的主机上模拟一种 CPU 架构的能力,请参阅 https://docs.openstack.org/nova/2025.2/admin/hw-emulation-architecture.html 以获取更多详细信息。
本 OpenStack-Ansible 文档当前假定部署者希望在具有本机 CPU 架构的主机上运行镜像,并且不提供涉及模拟的示例配置。