Metal to Tenant: Ironic 在 Overcloud 中

https://blueprints.launchpad.net/tripleo/+spec/ironic-integration

此蓝图增加了对通过将 Ironic 集成到 overcloud 中,向租户提供裸机服务器的支持。

问题描述

目前,对在 overcloud 中向租户提供裸机服务器的需求日益增长,作为虚拟机实例的补充或替代方案。例如,Sahara:用户希望通过移除 hypervisor 抽象层来消除“嘈杂邻居”效应,从而获得更好的性能。为此,OpenStack 裸机服务 (Ironic) 提供了一个 API 和一个 Nova 驱动程序,以便在相同的 Nova 和 Neutron API 之后提供裸机实例。然而,目前 TripleO 不支持安装和配置 Ironic 和 Nova 以向租户提供裸机实例。

提议的变更

可组合服务

在裸机部署的情况下,nova-compute 服务只是围绕 Ironic API 的一个薄抽象层。在这种情况下,实际的计算实例是裸机节点。因此,仅支持裸机节点的 TripleO 部署不需要 overcloud 中的专用计算节点。overcloud nova-compute 服务将因此放置在控制器节点上。

将创建新的 TripleO 可组合服务,并可以选择性地部署到控制器节点上

  • OS::TripleO::Services::IronicApi 将部署裸机 API。

  • OS::TripleO::Services::IronicNovaCompute 将部署使用 Ironic 作为后端的 nova 计算服务。它还将配置 nova 计算以使用 ClusteredComputeManager 由 Ironic 提供,以解决无法配置多个 nova 计算实例与 Ironic 配合使用的问题。

  • OS::TripleO::Services::IronicConductor 将部署一个 TFTP 服务器、一个 HTTP 服务器(用于可选的 iPXE 环境)和一个 ironic-conductor 实例。在 HA 场景中,ironic-conductor 实例将不由 pacemaker 管理,因为 Ironic 具有自己的 Active/Active HA 模型,该模型使用哈希环在所有活动 conductor 上分发负载。

    关于每个 conductor 可以处理多少个裸机节点,没有公开数据,但 Ironic 团队预计每个 conductor 的数量级为数百个节点。

由于此功能并非所有部署的必需功能,因此将通过单独的环境文件选择加入。

混合部署

对于同时具有虚拟和裸机实例的混合部署,我们将使用 Nova 主机聚合:一个用于所有裸机主机,另一个用于所有虚拟计算节点。这将防止虚拟实例部署到裸机节点上。请注意,每台裸机机器都表示为一个单独的 Nova 计算主机。即使对于纯裸机部署,这些主机聚合也将始终创建,因为用户可能希望稍后添加虚拟计算节点。

网络

截至 Mitaka,Ironic 仅支持所有租户和配置的扁平网络。推荐的部署布局将由两个网络组成

  • provisioning / tenant 网络。它必须能够访问 overcloud Neutron 服务以进行 DHCP,以及访问 overcloud baremetal-conductors 以进行配置。

    注意

    虽然从技术上讲,此网络可以与 undercloud 配置网络相同,但由于 Neutron (以及未来由 ironic-inspector 提供) 提供的各种 DHCP 服务器之间可能存在冲突,因此不建议这样做。

  • management 网络。它将包含裸机节点的 BMC,并且只需要访问 baremetal-conductors。不会向此网络提供任何租户访问权限。

    注意

    如果租户是可信的(本规范中假定如此),并且 BMC 访问受到合理限制,则无需拆分此网络。

限制

为了限制本规范的范围,以下明确有用的功能目前被明确排除在外

  • provision <-> tenant 网络分离(尚未由 ironic 实现)

  • 带内检查(需要 ironic-inspector,尚未准备好 HA)

  • 不受信任的租户(需要配置安全启动并检查固件,这取决于供应商)

  • 节点自动发现(取决于 ironic-inspector)

替代方案

或者,我们可以将配置裸机到租户环境留给操作员。

我们也可以默认启用它,但很可能大多数部署都不需要它。

安全影响

大多数安全影响需要在 Ironic 内部处理。例如,擦除硬盘、检查固件等。需要配置 Ironic 才能通过在节点生命周期期间启用自动清理来运行这些作业。值得一提的是,我们将假定这些裸机机器的租户是可信的。

其他最终用户影响

在 overcloud 中部署 Ironic 将是可选的。

性能影响

如果启用,TripleO 将将其他服务部署到 overcloud

  • ironic-conductor

  • 一个 TFTP 服务器

  • 一个 HTTP 服务器

这些都不应该有很高的性能要求。

其他部署者影响

无。

开发人员影响

无。

实现

负责人

主要负责人

ifarkas

其他贡献者

dtantsur, lucasagomes, mgould, mkovacik

工作项

当包含环境文件时,请确保

  • ironic 部署在 baremetal-conductor 节点上

  • nova 计算部署并正确配置,包括

    • 将 Ironic 配置为 virt 驱动程序

    • 配置 ClusteredComputeManager

    • 将 ram_allocation_ratio 设置为 1.0

  • 创建主机聚合

  • 更新文档

依赖项

无。

测试

这可以在 CI 中使用嵌套虚拟化进行测试,并将添加测试到 tripleo-ci 作业中。

文档影响

  • 将提供快速入门文档和示例环境文件。

  • 记录如何在 overcloud ironic 中注册新节点(包括主机聚合)

参考资料