多CPU架构支持¶
- 日期:
2016-06-14 12:00
- 标签:
openstack, ansible, power
本规范的目的是使 OpenStack-Ansible 能够在要部署的节点上跨多个 CPU 架构部署 OpenStack。
https://blueprints.launchpad.net/openstack-ansible/+spec/multi-arch-support
本规范的目的是为 OpenStack-Ansible 添加对多个 CPU 架构的支持。随着 OpenStack 服务在其他架构(如 PPC64LE)上运行,OpenStack-Ansible 需要扩展以支持存在混合 CPU 架构的环境。
问题描述¶
OpenStack-Ansible 最初构建时是为了支持部署到单个架构,主要是 x86。随着 OpenStack 和 OpenStack-Ansible 对其他平台(如 POWER)的支持扩展,需要支持运行不同 CPU 架构组合的部署。
对于每次部署,OpenStack-Ansible 都会创建并构建一个“repo”,其中包含 OpenStack 部署所需的工件。该 repo 包含 pip wheels、virtualenvs 和要部署的不同服务的源代码树等组件。对于每次部署,都会指定一个“master” repo,其中构建工件,然后同步到其余的 slaves。
这在多架构部署中会造成问题,对于 repo master 的 CPU 架构与其它节点的架构不同的节点而言。例如,在 x86 repo master 上构建工件用于控制平面的情况下,在 POWER 计算节点上部署 KVM 将会失败。
提议的变更¶
更新 OpenStack-Ansible 和必要的 roles,以支持使用多个 CPU 架构进行构建和部署。这包括对
查看所有主机的 Ansible facts,并确定要构建工件的 CPU 架构集。
添加支持为每个 CPU 架构分配构建 master。
支持在每个构建 master 上构建 CPU 架构特定的工件副本,这些副本将同步到所有 slaves,而不管架构如何。
支持使用相应的 CPU 架构标记所有架构特定的构建工件。
确保安装期间使用的预构建二进制文件(apt 包等)存在或在支持的 CPU 架构(x86、ppc64el)上可用,或者添加文档以说明在不可用情况下的限制。
备选方案¶
交叉编译工件 - 这将消除在不同架构上构建的 repo 之间构建、标记和同步的需要,但迄今为止,尚未找到可靠的方法来为 wheels/venvs 执行此操作。这还会增加架构特定的交叉编译问题的风险,因为添加了对其他架构的支持。
仅支持单架构 OpenStack-Ansible 部署。这会损害部署者,限制了将其它架构的服务器集成到新的和现有的 OpenStack-Ansible 部署中的潜力
Playbook/Role 影响¶
repo playbooks 将受到影响,以处理跨多个架构的构建和同步。每个 role 也会受到轻微影响,以支持构建和标记带有所需架构信息的工件。
升级影响¶
N/A
安全影响¶
N/A
性能影响¶
repo 构建和同步操作将花费更长的时间,具体取决于正在部署的 CPU 架构数量。
repo 构建将花费更长的时间,因为必须串行构建每个 repo 的工件,以避免在同步非架构特定包期间发生冲突。
同步将花费更长的时间,并且由于构建的工件数量增加,因此需要更多的带宽进行传输。
最终用户影响¶
预计不会对最终用户产生影响。
部署者影响¶
部署者现在能够创建包含具有多个 CPU 架构的服务器的部署。
预计不会有其它部署者影响,因为检测多个架构、部署每个架构所需的 repo master 数量以及构建每个架构的工件都应动态发生。
开发人员影响¶
开发人员的影响很小。开发人员现在能够为多个 CPU 架构开发和测试部署。它还能够开发特定于其它 CPU 架构的 roles,例如 ARM。
依赖项¶
N/A
实现¶
负责人¶
工作项¶
添加一个 repo 发现任务,以确定所有主机上使用的 CPU 架构,并分配和存储有关每个架构的 master 的 facts。
修改 repo-server playbook 以支持部署每个 CPU 架构的构建 master。
修改 repo-build playbook 以支持串行构建每个 CPU 架构的 repos。
更新构建任务以支持使用相应的 CPU 架构标记每个工件。
更新 repo 同步以支持将来自每个构建 master 的工件同步到所有其它 slaves,而不管 CPU 架构如何。
跨任务更新以使用新的标记工件名称。
确保在所有包镜像/位置上提供 ppc64el 的二进制包,除了 i386/amd64 之外,或者添加文档以说明在哪些位置没有提供包。
测试¶
将添加一个新的测试作业,该作业部署一个两节点配置,其中一个节点属于上游/默认架构(x86),另一个节点属于要支持的其它 CPU 架构(ppc64el、arm64 等)。
文档影响¶
将向用户指南添加有关如何配置多架构支持的文档。