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:
- 作为可执行应用程序安装在 1+ 虚拟机(来宾虚拟机)上;和
- 不知何故,您的 OpenStack 集群的所有实例都相互了解(也就是说,您刚刚安装它们的所有 VM 上的所有实例 运行)并形成一个集合资源池;和
- 每个 OpenStack 实例(同样,运行 在其自己的 VM 中)包含仪表板应用程序("Horizon")以及 10 个左右的其他 components/modules(Nova、Cinder、Glance , ETC。);和
- Nova,是 OpenStack component/module,为您的租户提供 CRUD VMs/nodes,它能够以某种方式将 运行 内部的来宾虚拟机转变为 它自己的管理程序,并在其中为任何特定租户启动 1+ 个 VM(因此您在 VM 中有一个 VM)
所以,如果到目前为止我所说的关于 OpenStack 的任何内容都不正确,请开始纠正我!
假设我或多或少是正确的,我对各种 OpenStack 组件的理解是它们实际上只是 APIs 并且需要开源社区提供具体的实现:
- Nova(VM 管理器)
- Keystone(身份验证提供商)
- Neutron(网络管理器)
- Cinder(块存储管理器)
- 等...
以上,我相信所有组件都是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节点的硬件,那么你应该没问题。
在过去的 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:
- 作为可执行应用程序安装在 1+ 虚拟机(来宾虚拟机)上;和
- 不知何故,您的 OpenStack 集群的所有实例都相互了解(也就是说,您刚刚安装它们的所有 VM 上的所有实例 运行)并形成一个集合资源池;和
- 每个 OpenStack 实例(同样,运行 在其自己的 VM 中)包含仪表板应用程序("Horizon")以及 10 个左右的其他 components/modules(Nova、Cinder、Glance , ETC。);和
- Nova,是 OpenStack component/module,为您的租户提供 CRUD VMs/nodes,它能够以某种方式将 运行 内部的来宾虚拟机转变为 它自己的管理程序,并在其中为任何特定租户启动 1+ 个 VM(因此您在 VM 中有一个 VM)
所以,如果到目前为止我所说的关于 OpenStack 的任何内容都不正确,请开始纠正我!
假设我或多或少是正确的,我对各种 OpenStack 组件的理解是它们实际上只是 APIs 并且需要开源社区提供具体的实现:
- Nova(VM 管理器)
- Keystone(身份验证提供商)
- Neutron(网络管理器)
- Cinder(块存储管理器)
- 等...
以上,我相信所有组件都是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节点的硬件,那么你应该没问题。