1.3. 虚拟机、镜像和模板
第 1.3.1 节 “OpenStack Compute (nova)”
第 1.3.2 节 “OpenStack Bare Metal Provisioning (ironic)”
第 1.3.3 节 “OpenStack Image (glance)”
第 1.3.4 节 “OpenStack Orchestration (heat)”
第 1.3.5 节 “OpenStack 数据处理(sahara)”
1.3.1. OpenStack Compute (nova)
OpenStack Compute 通过按需提供虚拟机,充当 OpenStack 云的核心。计算通过定义与底层虚拟化机制交互的驱动程序并将虚拟机调度到一组节点上运行,并通过向其他 OpenStack 组件提供功能。
计算支持使用 KVM 作为 hypervisor 的 libvirt 驱动程序 libvirtd。hypervisor 创建虚拟机并启用从节点实时迁移到节点。要置备裸机,您还可以使用 第 1.3.2 节 “OpenStack Bare Metal Provisioning (ironic)”。
计算与身份服务交互,以验证实例和数据库访问,以及访问镜像服务,以及启动实例的仪表板服务,以及提供用户和管理界面的控制面板服务。
您可以根据项目和用户限制对镜像的访问,并指定项目和用户配额,如单个用户可创建的实例数量。
部署 Red Hat OpenStack Platform 云时,您可以根据不同的类别划分云:
- 区域
Identity 服务中的每个服务目录都由服务区域标识,后者通常代表地理位置和服务端点。在具有多个计算节点的云中,区域可以分散分散的服务。
您还可以使用区域在计算安装之间共享基础架构,同时维护高度的容错能力。
- 单元(技术预览)
计算主机可以划分为名为 cells 的组,以处理大型部署或地理分散的安装。单元在树中配置,称为 API 单元(称为 API 单元)运行 nova-api 服务,但没有 nova-compute 服务。
树中的每个子单元运行所有其他典型的 novaoverlayfs 服务,但不运行 nova-api 服务。每个单元都有单独的消息队列和数据库服务,并运行 nova-cells 服务来管理 API 单元和子单元之间的通信。
单元的优点包括:
- 您可以使用单个 API 服务器来控制对多个计算安装的访问。
- 在单元格级别上提供了额外的调度级别,与主机调度不同,您可以在运行虚拟机时提供更大的灵活性和控制。
这个功能在此发行版本中 作为技术预览提供,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
- 主机聚合和可用区
单个计算部署可以分区为逻辑组。您可以创建共享通用资源(如存储和网络)的多个主机组,或者创建共享特殊属性(如可信计算硬件)的组。
对于管理员,组以 Host Aggregate 的形式显示,并分配有分配的计算节点和相关元数据。Host Aggregate 元数据通常用于提供 openstack-nova-scheduler 操作的信息,如将特定的类别或镜像限制到主机的子集。
对于用户,组作为可用性区域显示。用户无法查看组元数据或查看区域中主机列表。
聚合或区的好处包括:
- 负载平衡和实例分发。
- 区域之间的物理隔离和冗余,通过单独的电源或网络设备实现。
- 为具有通用属性的服务器组进行标记。
- 分隔不同类型的硬件.
组件 | 描述 |
---|---|
openstack-nova-api | 处理请求并提供对计算服务的访问,如引导实例。 |
openstack-nova-cert | 提供证书管理器。 |
openstack-nova-compute | 在每个节点上运行,以创建和终止虚拟实例。计算服务与虚拟机监控程序交互以启动新实例,并确保实例状态在计算数据库中维护。 |
openstack-nova-conductor | 为计算节点提供数据库访问支持,以降低安全风险。 |
openstack-nova-consoleauth | 处理控制台身份验证。 |
openstack-nova-network | 可以充当 OpenStack 网络的替代网络服务,并处理基本网络流量以进行私有和公共访问。有关 OpenStack 网络和计算网络的比较,请参阅 第 2 章 Network In-Depth。 |
openstack-nova-novncproxy | 为浏览器提供 VNC 代理,以启用 VNC 控制台来访问虚拟机。 |
openstack-nova-scheduler | 根据配置的权重和过滤器,将新虚拟机的请求分配给正确的节点。 |
nova | 用于访问计算 API 的命令行客户端。 |
下图显示了计算服务和其他 OpenStack 组件之间的关系。
1.3.2. OpenStack Bare Metal Provisioning (ironic)
OpenStack 裸机置备使用户能够为具有特定硬件驱动程序的各种硬件供应商调配物理或裸机。裸机调配与计算服务集成,以调配虚拟机的方式调配裸机,并为 裸机到可信租户 用例提供解决方案。
OpenStack 裸机置备优势包括:
- Hadoop 集群可以部署在裸机上。
- 可以部署超大规模和高性能计算(HPC)集群。
- 对于对虚拟机敏感的应用程序,可以使用数据库托管。
裸机恢复调配使用计算服务进行调度和配额管理,并使用 Identity 服务进行身份验证。实例镜像必须配置为支持裸机置备,而不是 KVM。
下图显示了在置备物理服务器时 Ironic 和其他 OpenStack 服务如何交互:
组件 | 描述 |
---|---|
openstack-ironic-api | 处理请求并提供对裸机节点上计算资源的访问。 |
openstack-ironic-conductor | 直接与硬件和 ironic 数据库交互,并处理请求的和定期操作。您可以创建多个编排器来与不同的硬件驱动程序交互。 |
ironic | 用于访问裸机置备 API 的命令行客户端。 |
下图中演示了 Ironic API:
1.3.3. OpenStack Image (glance)
OpenStack 镜像充当虚拟磁盘镜像的注册表。用户可以添加新镜像,也可以为现有服务器生成快照以进行即时存储。您可以使用快照进行备份,或用作新服务器的模板。
注册的镜像可以存储在对象存储服务或其他位置中,如简单文件系统或外部 Web 服务器。
支持以下镜像磁盘格式:
- aki/ami/ari (Amazon 内核、ramdisk 或机器镜像)
- ISO (光盘的存档格式,如 CD)
- qcow2 (Qemu/KVM, support Copy on Write)
- 原始(未结构化格式)
- VHD (Hyper-V,常用于来自 VMware、Xen、Microsoft 和 VirtualBox 等供应商的虚拟机监控)
- vdi (Qemu/VirtualBox)
- VMDK (VMware)
容器格式也可以由镜像服务注册。容器格式决定了要存储在镜像中的虚拟机元数据的类型和详细级别。
支持以下容器格式:
- 裸机(无元数据)
- OVA (OVA tar 存档)
- OVF (OVF 格式)
- aki/ami/ari (Amazon 内核、ramdisk 或机器镜像)
组件 | 描述 |
---|---|
openstack-glance-api | 与存储后端交互,以处理镜像检索和存储的请求。API 使用 openstack-glance-registry 来检索镜像信息。您不能直接访问 registry 服务。 |
openstack-glance-registry | 管理每个镜像的所有元数据。 |
Glance | 用于访问镜像 API 的命令行客户端。 |
下图显示了镜像服务用来注册和检索镜像数据库的主要接口。
1.3.4. OpenStack Orchestration (heat)
OpenStack 编排提供模板来创建和管理云资源,如存储、网络、实例或应用。模板用于创建堆栈,这些堆栈是资源的集合。
例如,您可以为实例、浮动 IP、卷、安全组或用户创建模板。编排通过单一模块化模板提供对所有 OpenStack 核心服务的访问,以及自动扩展和基本高可用性等功能。
OpenStack 编排优势包括:
- 单个模板提供对所有底层服务 API 的访问。
- 模板是模块化的,并以资源为导向。
- 模板可以递归定义和可重复使用,如嵌套堆栈。然后,可以采用模块化方式定义和重新利用云基础架构。
- 资源实施是可插拔的,允许自定义资源。
- 资源可以自动扩展,因此根据使用情况添加或删除集群。
- 基本高可用性功能可用。
组件 | 描述 |
---|---|
openstack-heat-api | OpenStack 原生 REST API,通过将请求发送到 openstack-heat-engine 服务通过 RPC 来处理 API 请求。 |
openstack-heat-api-cfn | 可选的 AWS-Query API 与 AWS CloudFormation 兼容,通过 RPC 发送请求到 openstack-heat-engine 服务来处理 API 请求。 |
openstack-heat-engine | 编配模板启动,并为 API 使用者生成事件。 |
openstack-heat-cfntools | 处理元数据的更新并执行自定义 hook 等帮助程序脚本的软件包,如 cfn-hup。 |
heat | 与编排 API 通信的命令行工具,以执行 AWS CloudFormation API。 |
下图显示了编排服务用于创建两个新实例和本地网络的新堆栈的主要接口。
1.3.5. OpenStack 数据处理(sahara)
OpenStack 数据处理支持在 OpenStack 上调配和管理 Hadoop 集群。Hadoop 在群集中存储和分析大量非结构化和结构化数据。
Hadoop 集群是可以充当运行 Hadoop 分布式文件系统(HDFS)的存储服务器组,运行 Hadoop 的 MapReduce (MR)框架或两者。
Hadoop 集群中的服务器需要驻留在同一网络中,但不需要共享内存或磁盘。因此,您可以在不影响现有服务器兼容性的情况下添加或删除服务器和集群。
Hadoop 计算和存储服务器共同定位,支持对存储数据的高速分析。所有任务都划分到服务器间,并使用本地服务器资源。
OpenStack Data Processing 优点包括:
- 身份服务可以验证用户,并在 Hadoop 集群中提供用户安全性。
- 计算服务可以置备集群实例。
- 镜像服务可以存储集群实例,其中每个实例都包含操作系统和 HDFS。
- 对象存储服务可用于存储 Hadoop 作业流程的数据。
- 模板可用于创建和配置集群。用户可以通过创建自定义模板或覆盖集群创建过程中的参数来更改配置参数。节点使用 Node Group 模板分组在一起,集群模板会组合节点组。
- 作业可用于在 Hadoop 集群上执行任务。作业二进制文件存储可执行代码,数据源存储输入或输出位置以及任何必要的凭证。
数据处理支持 Cloudera (CDH)和 Hortonworks Data Platform (HDP)发行版以及特定于供应商的管理工具,如 Apache Ambari。您可以使用 OpenStack 仪表板或命令行工具来置备和管理集群。
组件 | 描述 |
---|---|
openstack-sahara-all | 处理 API 和引擎服务的传统软件包。 |
openstack-sahara-api | 处理 API 请求并提供对数据处理服务的访问。 |
openstack-sahara-engine | 处理集群请求和数据交付的置备引擎。 |
sahara | 用于访问数据处理 API 的命令行客户端。 |
下图显示了数据处理服务用于调配和管理 Hadoop 集群的主要接口。