-1

在过去的 6 个小时里,我一直在阅读充满流行语的、崇高的、高级的文档/博客/文章/幻灯片,试图了解 OpenStack 到底是什么。我明白那个:

OpenStack 是一个免费的开源云计算软件平台。用户主要将其部署为基础设施即服务 (IaaS) 解决方案。

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

我了解了基本概念,但想重新理解 SO,此外,我很难看到关于 OpenStack 组件主题的“森林中的森林”。

我的理解是 OpenStack:

  • 作为可执行应用程序安装在 1 个以上的虚拟机(客户虚拟机)上;和
  • 不知何故,您的 OpenStack 集群的所有实例都相互了解(即,在您刚刚安装它们的所有虚拟机上运行的所有实例)并形成了一个集体资源池;和
  • 每个 OpenStack 实例(同样,在其自己的 VM 中运行)包含仪表板应用程序(“Horizo​​n”)以及 10 个左右的其他组件/模块(Nova、Cinder、Glance 等);和
  • Nova 是一个 OpenStack 组件/模块,它为您的租户提供 CRUD 虚拟机/节点,它能够以某种方式将其内部运行的来宾虚拟机转变为自己的虚拟机管理程序,并在其中启动 1+ 个虚拟机(因此您有一个虚拟机内的虚拟机)适用于任何特定租户

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

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

  • Nova(虚拟机管理员)
  • Keystone(身份验证提供者)
  • Neutron(网络管理员)
  • Cinder(块存储管理器)
  • ETC...

以上,我相信所有组件都是 API。但是这些 API 必须具有对 OpenStack 部署者/维护者有意义的实现。所以我会想象有多个 Neutron API 提供者、多个 Nova API 提供者等。但是,在今天早上查看所有官方文档后,我找不到这些 API 的此类提供者。这在我的胃里留下了一种恶心的感觉,就像我从根本上误解了 OpenStack 的组件一样。有人可以帮我把这些点联系起来吗?

4

1 回答 1

5

不完全的。

作为可执行应用程序安装在 1 个以上的虚拟机(客户虚拟机)上;和

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

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

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

但请注意,这是一个最小结构。对于更强大的安装,您将拥有多个控制器和网络节点。

不知何故,您的 OpenStack 集群的所有实例都相互了解(即,在您刚刚安装它们的所有 VM 上运行的所有实例)并形成一个集体资源池;

OpenStack 节点(无论是虚拟机还是物理机,在这一点上都没有区别)在它们之间进行通信。通过配置,他们都知道如何联系其他人。

每个 OpenStack 实例(同样,在自己的 VM 中运行)包含仪表板应用程序(“Horizo​​n”)以及 10 个左右的其他组件/模块(Nova、Cinder、Glance 等);和

不。在 OpenStack 行话中,术语“实例”与在计算节点中创建的虚拟机相关联。在这里,您的意思是“控制器节点”,它确实包括核心服务和仪表板。再一次,这些不一定在虚拟机上运行。

Nova 是一个 OpenStack 组件/模块,它为您的租户提供 CRUD 虚拟机/节点,它能够以某种方式将其内部运行的来宾虚拟机转变为自己的虚拟机管理程序,并在其中启动 1+ 个虚拟机(因此您有一个虚拟机内的虚拟机)适用于任何特定租户

我认为如果您忘记“来宾虚拟机”,这将更容易理解。在生产环境中,OpenStack 将安装在物理机器上。计算节点是可以托管许多虚拟机的强大机器。该nova-compute服务在这些节点上运行并连接到管理程序(例如 KVM)以分配虚拟机,OpenStack 将其称为“实例”。

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

假设我或多或少是正确的,我对各种 OpenStack 组件的理解是它们实际上只是 API

不,这些服务将自己暴露为 API,但这还不是全部。API 也已实现。

并要求开源社区提供具体的实现

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

以上,我相信所有组件都是 API。但是这些 API 必须具有对 OpenStack 部署者/维护者有意义的实现。所以我会想象有多个 Neutron API 提供者、多个 Nova API 提供者等。

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

于 2015-01-20T17:48:39.443 回答