OpenStack 架构

2025年3月17日 | 阅读 8 分钟

引言

OpenStack 是一个开放标准、免费的云计算平台。它主要以 IaaS (基础设施即服务) 的形式部署在私有云和公有云中,为用户提供各种虚拟服务器和其他类型的资源。该平台集成了网络资源、存储资源、多供应商硬件处理工具,并能控制整个数据中心的各种资源。用户可以通过命令行工具、RESTful Web 服务和基于 Web 的仪表板来管理它。

OpenStack 于 2010 年由 **NASA** 和 **Rackspace Hosting** 联合发起。它由 **OpenStack 基金会**管理,该基金会是一个非营利性集体实体,于 2012 年 9 月成立,旨在推广 OpenStack 社区和软件。已有 50 多家企业加入了该项目。

OpenStack 架构

OpenStack 采用模块化架构,其组件有各种代号。

OpenStack Architecture

Nova (计算)

Nova 是 OpenStack 的一个项目,用于提供计算实例的配置。Nova 支持构建裸机服务器和虚拟机。它对各种系统容器的支持有限。它作为守护进程集运行在现有的 Linux 服务器之上,提供服务。

该组件是用 Python 编写的。它使用了几个 Python 外部库,如 SQL 工具包和对象关系映射器 (SQLAlchemy)、AMQP 消息框架 (Kombu) 和并发网络库 (Eventlet)。Nova 的设计目的是水平扩展。我们不是切换到任何大型服务器,而是采购多台服务器并安装相同的配置服务。

由于其在企业级基础设施中的广泛集成,特别是 Nova 的性能以及 OpenStack 监控的整体性能,扩展能力已成为一个日益重要的问题。

管理端到端的性能需要跟踪 Swift、Cinder、Neutron、Keystone、Nova 以及各种其他类型的服务中的指标。此外,还需要分析 OpenStack 服务用于消息传递的 RabbitMQ。这些服务中的每一种都会产生自己的日志文件。在企业级基础设施中,必须对其进行特别分析。

Neutron (网络)

Neutron 是 **OpenStack** 的一个项目。它提供“**网络连接即服务**”的功能,用于连接由其他 OpenStack 服务(如 Nova)管理的各种接口设备(如 vNIC)。它负责 OpenStack 的网络 API。

它负责 **VNI** (虚拟网络基础设施) 的所有网络方面,以及 OpenStack 平台中 **PNI** (物理网络基础设施) 的各种授权层因素。OpenStack 网络允许项目构建高级虚拟网络拓扑。它可以包含一些服务,如 VPN (虚拟专用网络) 和防火墙。

Neutron 允许分配专用的静态 DHCP 或 IP 地址。它还允许使用浮动 IP 地址来实现流量重定向。

用户可以应用 **SDN** (软件定义网络) 技术,如 **OpenFlow**,以支持规模化和多租户。OpenStack 网络可以管理和部署额外的网络服务,如 **VPN (虚拟专用网络)、防火墙、负载均衡和 IDS (入侵检测系统)**。

Cinder (块存储)

Cinder 是 OpenStack 的块存储服务,用于为 Nova VM、容器、ironic 裸机主机等提供卷。Cinder 的一些目标如下:

  • 开放标准:它是面向社区驱动的 API 的任何参考实现。
  • 可恢复:故障必须易于纠正、调试和诊断。
  • 容错:独立进程可忽略级联故障。
  • 高可用:可以扩展以处理严重的工作负载。
  • 基于组件的架构:可以快速添加新行为。

Cinder 卷为 VM(称为**实例**)提供持久化存储,这些实例由 OpenStack 计算软件管理。此外,Cinder 也可以独立于其他 OpenStack 服务作为软件定义的独立存储使用。这个块存储系统负责管理附加、分离、复制、创建和**快照**多个块设备到服务器。

Keystone (身份)

Keystone 是 OpenStack 的一个服务,通过实现 OpenStack 的 Identity API,提供共享的多租户授权、服务发现和 API 客户端身份验证。通常,它是云操作系统周围的身份验证系统。Keystone 可以与各种目录服务(如 LDAP)集成。它还支持标准的用户名和密码凭据、Amazon Web Services (AWS) 风格以及基于令牌的系统登录。Keystone 服务目录允许 API 客户端动态地导航和发现各种云服务。

Glance (镜像)

Glance (镜像) 服务项目提供了一个允许用户发现和上传数据资产的服务。这些资产被定义为可供许多其他服务使用。目前,它包括元数据和镜像定义。

图像

Glance 镜像服务包括检索、注册和发现 VM (虚拟机) 镜像。Glance 包含 RESTful API,允许查询虚拟机元数据并检索实际镜像。Glance 可以将虚拟机镜像存储在从通用文件系统到对象存储系统(如 OpenStack Swift 项目)的许多位置。

元数据定义

Image 托管一个 metadefs 目录。它为 OpenStack 社区提供了一个路径,用于确定可用于 OpenStack 资源的各种元数据有效值和键名。

Swift (对象存储)

Swift 是一个最终一致性的分布式 Blob/对象存储。OpenStack 的对象存储项目名为 Swift,它提供了云存储软件,使我们能够通过通用 API 检索和存储大量数据。它被设计为可扩展,并针对整个数据集的**并发、可用性和持久性**进行了优化。对象存储非常适合存储可能无限增长的非结构化数据。

**Rackspace** 于 2009 年 8 月开始开发 **OpenStack 对象存储**的前身,作为其 Cloud Files 产品的完全替代品。最初的开发团队包括九名开发人员。目前,一家对象存储公司 (SwiftStack) 是 OpenStack Swift 的主要开发者,IBM、HP、NTT、Red Hat、Intel 等公司也做出了重要贡献。

Horizon (仪表板)

Horizon 是 OpenStack 仪表板的**规范实现**,它为 Keystone、Swift、Nova 等各种 OpenStack 服务提供基于 Web 的 UI。仪表板包含一些核心仪表板,如“**设置仪表板**”、“**系统仪表板**”和“**用户仪表板**”。它涵盖核心支持。Horizon 应用程序通过核心 OpenStack 项目的 API 抽象集进行分发,为开发人员提供稳定一致的可重用技术集合。借助这些抽象,OpenStack Horizon 的开发人员无需深入了解整个 OpenStack 项目的 API。

Heat (编排)

Heat 可被视为一项服务,通过 CloudFormation 兼容的查询 API 和 OpenStack 原生 REST API,使用模板来编排多个融合云应用程序。

Mistral (工作流)

Mistral 是 OpenStack 中负责处理工作流的服务。通常,用户使用其语言根据 YAML 编写工作流。用户通过 REST API 将工作流定义上传到 Mistral。之后,用户可以通过类似的 API 手动启动工作流。它还配置了在某些事件发生时启动工作流的触发器。

Ceilometer (遥测)

OpenStack Ceilometer (遥测) 为许多计费系统提供了一个单一联系点,提供它们构建客户账单所需的所有计数器,覆盖 OpenStack 的所有当前和未来组件。计数器交付是可审计和可追溯的。计数器应易于扩展,以支持新项目。此外,实现数据收集的代理必须与整体系统分离。

Trove (数据库)

Trove 是数据库即服务,用于配置关系型和非关系型数据库引擎。

Sahara (Elastic MapReduce)

Sahara 是一个用于快速轻松地配置 Hadoop 集群的组件。用户可以定义各种参数,如**Hadoop 版本号、节点配置信息**(RAM 和 CPU 设置,指定磁盘空间)、**集群拓扑**类型等。在用户提供所有参数后,Sahara 会在短时间内扩展集群。此外,Sahara 还提供了一种通过按需添加和删除工作节点来扩展现有 Hadoop 集群的方法。

Ironic (裸机)

Ironic 是 OpenStack 的另一个项目。它负责配置裸机而不是虚拟机。最初,Ironic 是从 Nova 的裸机驱动程序分支出来的,并发展成了一个独立的项目。它被设计成一组插件和裸机虚拟机监控器 API,与各种裸机虚拟机监控器协同工作。它将使用 IPMI 和 PXE 来协同开关机和配置机器,尽管 Ironic 支持并可以与供应商特定的插件一起开发以实现更多功能。

Zaqar (消息)

Zaqar 是一项为众多 Web 开发人员提供多租户云消息传递服务。它提供了一个完整的 RESTful API,开发人员可以使用该 API 通过应用多种通信模式,在移动和 SaaS 应用程序的多个组件之间发送消息。该 API 是一个强大的消息传递引擎,在设计时考虑了安全性和可扩展性。OpenStack 的其他组件可以利用 Zaqar 来处理各种表面事件,并与在云层之上运行的许多客户代理进行交互。

Designate (DNS)

Designate 是一个用于管理 DNS 的多租户 REST API。它提供 DNS 即服务。该组件兼容 BIND 和 PowerDNS 等各种后端技术。它不提供 DND 服务本身,其目标是与现有 DNS 服务器接口,以实现每个租户的 DNS 区域管理。

Manila (共享文件系统)

OpenStack Manila (共享文件系统) 在供应商无关的框架内提供了一个开放的 API 来管理共享。它提供了标准的原始操作,如授予/撤销、删除和创建对任何共享的访问权限。它可以在各种独立的或独立的网络环境中使用。它支持 Hitachi、INFINIDAT、Quobyte、Oracle、IBM、HP、NetApp 和 EMC 等技术存储设备,以及 Ceph 和 Red Hat GlusterFS 等文件系统技术。

Searchlight (搜索)

Searchlight 提供跨多个 OpenStack 云服务的统一和高级搜索功能。它通过将用户搜索查询卸载到其他 OpenStack API 服务器,并将数据索引到 ElasticSearch 来实现这一点。该组件正在被集成到 Horizon 中。此外,它还提供命令行界面。

Magnum (容器编排)

Magnum 是 OpenStack 的一个 API 服务,由 OpenStack 的容器团队改进,使 Apache Mesos、Kubernetes 和 Docker Swarm 等容器编排引擎成为 OpenStack 内的一流资源。Magnum 利用 Heat 来编排一个包含 Kubernetes 和 Docker 的操作系统镜像,并在集群配置内的裸机或虚拟机中运行该特定镜像。

Barbican (密钥管理器)

Barbican 是为**管理、配置和安全存储密钥**而开发的 REST API。Barbican 致力于对包括大规模的临时云在内的所有环境都有帮助。

Vitrage (根本原因分析)

Vitrage 是一个 OpenStack 根本原因分析 (RCA) 服务,用于**扩展、分析和组织** OpenStack 事件和告警,从而提供关于问题根本原因的各种洞察,并在这些问题被直接检测到之前减少其存在。

Aodh (基于规则的告警操作)

此告警服务允许根据针对 Gnocchi 或 Ceilometer 收集的事件或指标数据指定的规则来触发任务。


下一个主题什么是主机托管