Mogan
目录
OpenStack 裸金属计算
没有曲折,Mogan,用于裸金属计算即服务
为什么选择 Mogan?
OpenStack Nova 支持虚拟机 (VM)、裸金属和容器的配置。没错,但是 Nova 的设计最初是作为虚拟机调度器,并具有特定于此用例的功能。Nova 增强功能旨在统一请求任何计算实例,无论是 VM、容器还是裸金属,虽然很棒,但不幸的是,在最好的情况下也比较复杂,需要用户执行额外的步骤。此外,它尚未支持裸金属配置的更多高级需求,例如存储和网络配置。
- 由于认为计算 *服务* 等于计算 *节点*,所有 Ironic 节点都与 Nova 中的单个主机聚合相关联。
- Nova 中没有针对裸金属的亲和性/反亲和性支持,因为它基于 *主机*。
- 没有针对裸金属的特定 API,例如 RAID 配置、部署时的高级分区、固件管理等。
什么是 Mogan?
Mogan 是一个 OpenStack 项目,它将裸金属作为第一类资源提供给用户,支持各种裸金属配置驱动程序,包括 Ironic。
下图描述了 Mogan 如何与其他 OpenStack 服务交互以管理裸金属服务器。
架构
服务
- mogan-api:提供 OpenStack 原生 REST API,通过 RPC 将 API 请求发送到 mogan-engine。
- mogan-engine:通过 REST API 与其他 OpenStack 服务(如 cinder、neutron、glance 等)交互。它转换和调度用户请求到驱动程序以配置裸金属服务器。
- mogan-scheduler:调度服务,用于根据用户的请求选择节点,它将与 Placement 服务集成。
驱动程序
Mogan 具有用于裸金属配置驱动程序的抽象层。这使您可以选择在 Mogan 部署中使用哪个超visor。Ironic 是默认驱动程序和我们支持的主要驱动程序,但可以添加更多配置工具支持,例如 maas、cloudboot 等。
调度器
Placement 服务旨在实现更有效的资源核算和云中各种实体的更好调度。Mogan 已经将资源跟踪迁移到 Placement 服务,这使得每个 ironic 节点成为一个“资源提供者”,它具有一个引用 flavor 的自定义资源类,简而言之,这意味着该 flavor 需要该资源类中的一件事。Nova 也计划以这种方式调度 ironic 资源,但由于 flavor 包含许多与虚拟机相关的填充物,因此该过程进展缓慢。
资源跟踪模型如下
resource classes: CUSTOM_GOLD CUSTOM_SILVER
/ \ |
resource providers: baremetal_node1 baremetal_node2 baremetal_node2
| | |
inventories: {'CUSTOM_GOLD': 1} {'CUSTOM_GOLD': 1} {'CUSTOM_SILVER': 1}
但是,父级->子级关系更适合于处理节点上的 NIC/DISK 资源。当 Placement Nested Resource Providers 上线时,我们将考虑更改跟踪模型。
操作员可以定义如下 flavor
- baremetal-gold
resources:
baremeal_gold: 1
resource_traits:
baremetal_gold: FPGA
resource_aggregates:
dev_team: true
description:
Intel(R) Xeon(R) E5620 2.40GHz 16 cores, 8GB RAM, 4*TB SSD, 4*10Gbps Ethernet
- baremetal-RSD-gold
resources:
valence-gold-flavor: 1
resource_traits:
valence-gold-flavor: PodM1
description:
Intel(R) Xeon(R) E5620 2.40GHz 16 cores, 8GB RAM 4*TB SSD, 4*10Gbps Ethernet
下图描述了 Mogan 如何与 Placement 服务交互。
节点聚合
节点聚合允许将裸金属节点划分为逻辑组,用于服务器分发,这与 Nova 主机聚合非常相似,但我们基于裸金属节点。
下图描述了我们如何将 flavor 与聚合匹配并与 Placement 服务交互。
服务器组
Mogan 服务器组,确保服务器位于相同的或不同的 *亲和性区域*,这与 nova 的服务器组非常相似,但 nova 仅支持基于 *主机* 的亲和性或反亲和性。我们计划在 Mogan 中添加一个特殊的聚合元数据键 *affinity zone*。您可以将其定义为故障域(例如,按电源电路、机架、房间等),或者您希望在这些组中实现亲和性和反亲和性的任何内容。更多详细信息可以在 Pike 之后的 Mogan 文档中找到。
工作流程
RSD 集成(待定)
机架级设计 (RSD) 实现代表了下一代软件定义基础设施,可以跨计算、网络和存储资源进行动态配置。RSA 解决方案的基本前提是客户能够根据预期的工作负载性能和容量需求,在池化资源上“正确调整”其端到端基础设施规模。
VALENCE[1] 是一个用于池化和可组合资源的控制器,该控制器遵循 DMTF[2] Redfish[3] 标准,并具有硬件管理请求。这包括配置和管理 RSD 组件和底层功能。
Mogan 使命宣言
1. 实现专注于裸金属计算资源管理的各项服务。
2. 促进 OpenStack 中裸金属开发的速度。
用例
1. 云提供商希望分别提供 vm 和裸金属服务,并具有不同的功能,而不是只提供一个包含 vm 和裸金属的服务。
2. 企业用户希望利用他们已经部署的配置工具(而不是 Ironic)通过向 Mogan 添加驱动程序来提供裸金属云。
3. 企业用户希望以统一的方式管理 RSD(机架级设计)和通用硬件。
4. 企业用户希望拥有更多裸金属特定功能,例如硬盘、Nics Bond、固件等管理。
项目
mogan
| 源代码 | https://github.com/openstack/mogan |
| Bug 追踪器 | https://bugs.launchpad.net/mogan |
| 功能跟踪 | https://blueprints.launchpad.net/mogan |
| 每周会议 | https://wiki.openstack.org/wiki/Meetings/Mogan |
python-moganclient
| 源代码 | https://github.com/openstack/python-moganclient |
| Bug 追踪器 | https://bugs.launchpad.net/python-moganclient |
| 功能跟踪 | https://blueprints.launchpad.net/python-moganclient |
mogan-ui
| 源代码 | https://github.com/openstack/mogan-ui |
| Bug 追踪器 | https://bugs.launchpad.net/mogan-ui |
| 功能跟踪 | https://blueprints.launchpad.net/mogan-ui |
IRC
项目讨论也发生在 irc.freenode.net 上的 #openstack-mogan 中。这是一个开始 Mogan 之旅的好地方。
开发者
开发人员指南可以在这里找到:https://wiki.openstack.org/wiki/Ironic/Developer_guidelines 请注意,对于任何非平凡的更改(不是特定错误的修复),您必须通过 specs 审查流程
有关更多信息,请参阅我们的 dev-quickstart 文档 Mogan devref
常见问题解答
1) Mogan 和 Nova 之间的关系是什么?
与 Nova 相比,Mogan 专用于裸金属,它更轻量级,并且具有 VM 用户不需要的更多裸金属特定功能。Nova 提供了一种统一的方式来管理所有计算资源。
2) Mogan 与 Nova 竞争吗?
我们不打算与 Nova 竞争。Nova 专注于 VM 管理,并提供许多高级功能,例如实时迁移、可用区、主机聚合等。ironic 驱动程序允许通过 Nova 的 API(统一用于 VM、裸金属和容器,但实际上是针对 VM 定制)管理裸金属。Nova 中的裸金属实例似乎是一个假装的 VM,它占用计算节点的所有资源,而 Mogan 专门为裸金属设计,它将裸金属作为第一类资源提供给用户,支持各种裸金属配置驱动程序,包括 Ironic。
3) Mogan 和 Ironic 的关系是什么?
Ironic 集成到 Mogan 中作为驱动程序,它将用于部署(配置的一部分)裸金属节点。Mogan 还利用 Ironic API 来管理节点的生命周期。
4) Mogan 和 Valence 的关系是什么?
Valence 是用于池化和可组合资源的 RSD 控制器,它为池化资源提供 compose API,并为控制组合节点提供 Redfish 端点。Mogan 将通过 Valence 与 RSD 联系,以组合资源,然后将组合的节点注册到 ironic 并配置节点,就像通用节点一样。
参考文献
[1] https://wiki.openstack.org/wiki/Valence
[2] https://www.dmtf.org/standards/redfish


