故事¶
作为运维人员,我希望构建一个同时具有虚拟机和裸机实例的小型云,或者将裸机配置添加到我现有的中小型单站点 OpenStack 云中。预计裸机数量少于 100 台,配置和取消配置的速率预计较低。我的云的所有用户都受我信任,不会对彼此或云基础设施本身进行恶意行为。
作为用户,我希望偶尔通过 Compute API 选择合适的 Compute flavor 来配置裸机实例。我希望能够从 Image 服务提供的镜像或 Volume 服务提供的卷启动它们。
作为运维人员,我希望构建一个同时具有虚拟机和裸机实例的小型云,或者将裸机配置添加到我现有的中小型单站点 OpenStack 云中。预计裸机数量少于 100 台,配置和取消配置的速率预计较低。我的云的所有用户都受我信任,不会对彼此或云基础设施本身进行恶意行为。
作为用户,我希望偶尔通过 Compute API 选择合适的 Compute flavor 来配置裸机实例。我希望能够从 Image 服务提供的镜像或 Volume 服务提供的卷启动它们。
此架构假定 一个 OpenStack 安装,其中以下组件参与裸机配置
Compute 服务管理裸机实例。
Networking 服务为裸机实例提供 DHCP。
Image 服务为裸机实例提供镜像。
以下服务可以由 Bare Metal 服务选择性地使用
Volume 服务提供卷,用于从卷启动裸机实例。
Bare Metal Introspection 服务简化了新裸机机器的注册,通过机内自省来实现。
本指南中的 OpenStack 安装至少具有以下三种类型的节点
一个控制器节点托管控制平面服务。
一个计算节点运行虚拟机,并托管 Compute 和 Networking 组件的子集。
一个块存储节点为虚拟机和裸机节点提供持久存储空间。
计算和块存储节点配置方式如 Compute 服务 和 Volume 服务 的安装指南中所述。控制器节点托管 Bare Metal 服务的组件。
网络架构将高度依赖于确切的运营需求。本指南期望以下现有网络:控制平面、存储和公网。此外,还需要两个专门用于裸机配置的网络:裸机网络和管理网络。
控制平面网络是 OpenStack 控制平面服务提供其公共 API 的网络。
Bare Metal API 将通过此网络提供给运维人员和 Compute 服务。
通过此网络提供图形化控制台用户界面,由 ironic-novncproxy NoVNC 代理服务提供。
公网在典型的 OpenStack 部署中用于为实例创建外部访问的浮动 IP。对于裸机部署,其作用相同。
注意
由于,如以下说明,裸机节点将被放置在扁平的提供商网络上,因此也可以组织对它们的直接访问,而无需使用浮动 IP 并完全绕过 Networking 服务。
裸机网络是 Bare Metal 服务管理的裸机节点的专用网络。
此架构使用 扁平裸机网络,其中租户流量和与 Bare Metal 服务操作相关的技术流量都通过此网络流动。具体来说,此网络将充当配置、清理和救援网络。它还将通过 Bare Metal Introspection 服务用于自省。有关 Bare Metal 服务使用的网络的深入说明,请参阅 通用网络注意事项。
DHCP 和启动参数将由 Networking 服务的 DHCP 代理在此网络上提供。
为了从卷启动,此网络必须具有到存储网络的路由。
管理网络是裸机节点的 BMC 所在的独立网络。
ironic-conductor 进程需要访问此网络。裸机节点的租户不得访问它。
注意
直接部署接口 和某些 Ironic 的驱动程序、硬件类型和硬件接口 需要管理网络才能访问对象存储服务后端。
ironic-novncproxy NoVNC 代理服务需要访问此网络才能连接到主机 BMC 图形化控制台。
控制器托管 OpenStack 控制平面服务,如 控制平面设计指南 中所述。虽然此架构允许在非 HA 配置中使用控制器,但建议至少使用三个来实现 HA。有关更多详细信息,请参阅 HA 和可扩展性。
Bare Metal 服务的以下组件安装在控制器上(请参阅 Bare Metal 服务的组件)
Bare Metal API 服务,作为 WSGI 应用程序或 ironic-api 进程。通常,负载均衡器(例如 HAProxy)在控制器上的 API 实例之间分配负载。
API 必须在控制平面网络上提供。此外,它必须通过 ramdisk 回调 API 暴露到裸机网络。
ironic-conductor 进程。这些进程以活动/活动 HA 模式工作,如 HA 和可扩展性 中所述,因此它们可以安装在所有控制器上。每个进程将处理一部分裸机节点。
ironic-conductor 进程必须访问以下网络
控制平面,用于与其他服务交互
管理,用于联系节点的 BMC
裸机,用于联系部署、清理或救援 ramdisk
ironic-novncproxy NoVNC 代理作为 Web 服务器进程直接运行,仅为相邻的 ironic-controller 提供裸机节点的控制台。这意味着每个 ironic-conductor 进程都需要运行一个 ironic-novncproxy。
NoVNC 代理必须在控制平面网络上提供。此外,它需要建立到 ironic-conductor 发起的控制台容器的 VNC 连接。
用于启动节点的 TFTP 和 HTTP 服务。每个 ironic-conductor 进程必须具有匹配的 TFTP 和 HTTP 服务。它们应仅暴露到裸机网络,并且不得位于负载均衡器后面。
来自 Compute 服务的 nova-compute 进程。这些进程在处理裸机节点时以活动/活动 HA 模式工作,因此它们可以安装在所有控制器上。每个进程将处理一部分裸机节点。
注意
ironic-conductor 和 nova-compute 进程之间没有 1-1 映射,因为它们仅通过 Bare Metal API 服务进行通信。
应将 networking-baremetal ML2 插件加载到 Networking 服务中,以帮助绑定裸机端口。
应启动 ironic-neutron-agent 服务。
如果使用 Bare Metal 自省,则其 ironic-inspector 进程必须安装在所有控制器上。每个这样的进程既充当 Bare Metal Introspection API 又充当调度器服务。应使用负载均衡器在控制器之间分配 API 负载。
API 必须在控制平面网络上提供。此外,它必须通过 ramdisk 回调 API 暴露到裸机网络。
每个裸机节点必须能够从网络、虚拟介质或其他受 Bare Metal 服务支持的启动技术启动,如 启动接口 中所述。每个节点必须在裸机网络上有一个 NIC,并且此 NIC(并且仅此 NIC)必须配置为能够从网络启动。这通常在BIOS 设置或类似的固件配置实用程序中完成。无需更改启动顺序,因为它由 Bare Metal 服务管理。如果存在其他 NIC,则 OpenStack 不会管理它们。
NIC 位于裸机网络上应具有对其的未标记连接,因为 PXE 固件通常不支持 VLAN - 请参阅 网络 以获取详细信息。
如果您的硬件和其裸机 驱动程序 支持从远程卷启动,请查看驱动程序文档以了解如何启用它。它可能包括将管理和/或裸机网络路由到存储网络。
在标准 PXE 启动 的情况下,从远程卷启动是通过 iPXE 完成的。在这种情况下,Volume 存储后端必须支持 iSCSI 协议,并且裸机网络必须具有到存储网络的路由。有关更多详细信息,请参阅 从卷启动。
除非另有说明,此文档根据 知识共享署名 3.0 许可 授权。请参阅所有 OpenStack 法律文档。