OpenStack API 实现

OpenStack API Implementations

在过去的 6 个小时里,我阅读了充满流行语的、崇高的、高层次的 documents/blogs/articles/slideshares,试图了解什么是 OpenStack,究竟是什么 .我的理解是:

OpenStack is a free and open-source cloud computing software platform. Users primarily deploy it as an infrastructure as a service (IaaS) solution.

但同样,这是一个非常崇高、高层次、掩盖细节的摘要,对作为工程师的我来说并没有真正的意义。

认为 我得到了基本概念,但想从 SO 中恢复我的理解,另外我很难看到 "forest through the trees" OpenStack 组件的主题。

我的理解是OpenStack:

所以,如果到目前为止我所说的关于 OpenStack 的任何内容都不正确,请开始纠正我!

假设我或多或少是正确的,我对各种 OpenStack 组件的理解是它们实际上只是 APIs 并且需要开源社区提供具体的实现:

以上,我相信所有组件都是API。但是这些 API 必须具有对 OpenStack deployer/maintainer 有意义的实现。所以我会 想象 有多个 Neutron API 提供者,多个 Nova API 提供者等。但是,在查看了所有官方文档之后早上好,我找不到这些 API 的供应商。这让我感到恶心,好像我从根本上误解了 OpenStack 的组件。有人可以帮我把这些点联系起来吗?

不完全是。

Installs as an executable application on 1+ virtual machines (guest VMs); and

OpenStack 不是一个单一的可执行文件,有许多不同的模块,有些是必需的,有些是可选的。您可以在 VM 上安装 OpenStack(请参阅 DevStack,一种对 VM 友好的发行版)但这不是生产的预期用途,您只能出于测试或评估目的这样做。

当你真正做到这一点时,你会在物理机集群上安装 OpenStack。 OpenStack Install Guide 为您的云推荐以下最小结构:

  • 一个控制器节点,运行启用核心服务
  • 一个网络节点,运行启用网络服务
  • 创建实例的一个或多个计算节点
  • 零个或多个对象and/or块存储节点

但请注意,这是一个最小的结构。要进行更稳健的安装,您将拥有多个控制器和网络节点。

Somehow, all instances of your OpenStack cluster know about each other (that is, all instances running on all VMs you just installed them on) and form a collective pool of resources;

OpenStack 节点(无论是 VM 还是物理机器,在这一点上都没有区别)相互交谈。通过配置他们都知道如何联系到其他人。

Each OpenStack instance (again, running inside its own VM) houses the dashboard app ("Horizon") as well as 10 or so other components/modules (Nova, Cinder, Glance, etc.); and

没有。在 OpenStack 术语中,术语 "instance" 与在计算节点中创建的虚拟机相关联。您在这里指的是 "controller node",它确实包括核心服务和仪表板。再一次,这些不一定 运行 在 VM 上。

Nova, is the OpenStack component/module that CRUDs VMs/nodes for your tenants, is somehow capable of turning the guest VM that it is running inside of into its own hypervisor, and spin up 1+ VMs inside of it (hence you have a VM inside of a VM) for any particular tenant

我认为如果您忘记 "guest VM" 这会更容易理解。在生产环境中,OpenStack 将安装在物理机器上。计算节点是可以托管许多 VM 的强大机器。这些节点上的 nova-compute 服务 运行 和与管理程序(例如 KVM)的接口,以分配虚拟机,OpenStack 调用 "instances".

如果您的计算节点托管在 VM 上而不是物理机器上,那么事情的工作方式几乎相同。在此设置中,管理程序通常是 QEMU,它可以安装在 VM 中,然后可以在 VM 内创建 VM 就好了,尽管与 运行 在物理硬件上设置计算节点相比,性能会受到很大影响.

Assuming I am more or less correct, my understanding of the various OpenStack components is that they are really just APIs

没有。这些服务将自己公开为 APIs,但这并不是它们的全部。 API 也已实现。

and require the open source community to provide concrete implementations

大多数服务需要与外部服务交互。 Nova 需要与管理程序对话,neutron 与接口、网桥、网关等对话,cinder 和 swift 与存储提供商对话,等等。这实际上只是 OpenStack 服务所做的一小部分,还有很多构建在上面的独立于低级外部服务的内容。 OpenStack服务包括对最常见的外部服务的支持,当然任何有兴趣的人都可以实现更多这些。

Above, I believe all components are APIs. But these APIs have to have implementations that make sense for the OpenStack deployer/maintainer. So I would imagine that there are, say, multiple Neutron API providers, multipe Nova API providers, etc.

没有。有一个 Nova API 实现和一个 Neutron API 实现。根据配置,您告诉这些服务中的每一个如何与较低级别的服务(例如虚拟机管理程序、网络堆栈等)进行交互。正如我上面所说,已经实现了对其中一系列服务的支持,因此如果您使用普通的 x86节点的硬件,那么你应该没问题。