1、Nova Cell概述
(官方文档:Cells (v2) — nova 25.2.2.dev5 documentation)
Nova中的cells功能的目的是允许较大的部署将其多个计算节点分割成多个cell。所有的nova部署都默认是cell部署,即使大多数情况下只有单一cell。这意味着多cell部署与“标准”nova部署不会有根本性的区别。
详细讲解:
1. 什么是 Cells 功能?
Nova 的 cells 功能是为了在大型 OpenStack 部署中提供扩展性和分片支持。随着云环境中计算节点(虚拟机托管服务器)数量的增加,单个数据库和单一调度器可能会成为瓶颈。为了应对这种扩展性问题,OpenStack Nova 引入了 cell v2 结构,将多个计算节点分成不同的 cell,以便将资源分布到不同的数据库和服务中。
Cell 是对计算节点和资源的逻辑划分,使得在一个 OpenStack 部署中,可以将计算资源分成多个 细分单元,每个单元负责自己的数据库、计算节点和资源。
这种分片机制的目的是减少数据库压力、优化资源调度、提高可扩展性,尤其在大型部署中非常有用。
2. 所有 Nova 部署默认是 Cells 部署
无论你是部署单一 cell 还是多个 cell,所有的 Nova 部署从架构上来说都是 cell 部署。这意味着,即使你只在一个 cell 中运行计算节点,你依然是在使用 cells 功能的。换句话说,单一 cell 只不过是 cell 功能的一种默认实现,并没有禁用这一功能。
这对于大多数普通用户来说意味着什么呢?
即便你的部署只有一个 cell(只有一个数据库和一组计算节点),你依然可以按照 cell v2 架构运行 OpenStack,只是没有启用多个 cell 来进行资源分片。
如果未来需要扩展部署,可以更轻松地启用 多个 cells,而不会大幅度改变现有的架构。
3. 多 cell 部署与标准部署的区别
多 cell 部署:对于大规模的 OpenStack 环境,多个 cell 可以显著提升管理和调度能力。每个 cell 负责一组计算节点和数据库,它们通过消息队列相互协作。
例如,cell1 可以管理一个数据中心的计算节点,cell2 可以管理另一个数据中心的计算节点。每个 cell 都有独立的数据库、消息队列。调度请求会根据资源分布情况和 cell 的状态来决定在哪个 cell 中运行虚拟机。
标准部署(单 cell 部署):如果只有一个 cell,Nova 将会将所有计算资源集中在一个 cell 中,所有计算节点、数据库、消息队列都在同一个单元中。这样一来,数据库的访问和计算节点的调度不会被分片,所有的负载都集中在一个地方。
4. Multi-cell 部署的优势
扩展性:通过将计算节点分配到多个 cell,每个 cell 可以独立地进行资源管理、数据库操作等,减轻单一节点的压力。这种架构能支持更大规模的 OpenStack 部署。
故障隔离:一个 cell 的故障不会直接影响到其他 cell。这为大规模部署提供了更高的容错性。
资源管理优化:不同的 cell 可以分别负责不同区域或不同数据中心的计算资源。每个 cell 都有独立的数据库,能够减少单一数据库的访问压力,提高资源调度的效率。
5. 总结
cells 功能 旨在支持大规模的 OpenStack 部署,将计算资源和数据库进行分片管理。
所有的 Nova 部署 都是 cell 部署,即使默认配置下只有一个 cell,OpenStack 依然会按 cell 的方式处理。
多 cell 部署 适用于需要大规模扩展的环境,而单一 cell 部署更适合较小的环境。
即使未来需要扩展到多个 cell,原本的 单一 cell 部署 也不会对架构造成根本性的影响。
这意味着,即使你目前只运行一个 cell,你也可以在未来轻松地将部署扩展到多个 cell,支持更多的计算节点和更高的可用性。
考虑这样一个部署,它将包括以下组件:
-
nova-api 服务,提供对用户的外部 REST API。
-
nova-scheduler 和 placement 服务,负责跟踪资源并决定实例应部署到哪个计算节点上。
-
一个 “API 数据库”,主要供 nova-api 和 nova-scheduler(以下称为 API 级服务)使用,用来跟踪实例的位置信息,以及用于存储尚未调度但正在构建的实例的临时位置。
-
nova-conductor 服务,负责卸载 API 级服务的长时间运行任务,并将计算节点与数据库访问隔离开来。
-
nova-compute 服务,管理虚拟化驱动和虚拟化主机。
-
一个 “cell 数据库”,被 API、conductor 和 compute 服务使用,存储大多数与实例相关的信息。
-
一个 “cell0 数据库”,它与 cell 数据库相似,但只包含未成功调度的实例。这个数据库类似于常规的 cell,但不包含计算节点,仅用来存放那些未能成功调度到实际计算节点的实例(因此也不会落在真实的 cell 上)。
-
一个 消息队列,允许各服务通过 RPC 进行通信。
详细讲解:
这个部署描述了一个 OpenStack Nova 的多组件架构,其中涉及到多个服务和数据库,分别处理不同的任务。下面是各个组件的详细说明:
1. nova-api 服务:
功能:
nova-api是 Nova 的外部 API 服务,它暴露了 REST API 供用户进行操作,例如启动虚拟机、获取实例状态等。工作:当用户发出请求时,
nova-api会处理这些请求并将其传递给其他服务(如nova-scheduler、nova-conductor)进行后续处理。2. nova-scheduler 和 placement 服务:
功能:
nova-scheduler和placement服务负责资源的调度和实例的部署决策。工作:
nova-scheduler根据计算资源(如 CPU、内存、存储等)选择合适的计算节点来部署虚拟机。
placement服务跟踪每个计算节点的资源使用情况,确保合理的资源分配,并返回哪些节点有足够的资源来容纳新的实例。3. API 数据库:
功能:
API 数据库是nova-api和nova-scheduler使用的数据库,主要用于存储实例的位置信息及与虚拟机创建和调度相关的临时信息。工作:这个数据库包含了正在构建但尚未调度的虚拟机的临时数据。它还存储了与实例调度相关的元数据(如实例当前状态)。
4. nova-conductor 服务:
功能:
nova-conductor服务的作用是将长时间运行的任务从 API 级服务中分离出来,并提供与计算节点的通信桥梁。工作:
nova-conductor可以执行一些需要较长时间的操作,如实例的迁移、快照、卷扩展等,同时也防止了nova-api直接访问数据库,从而提高了系统的效率和可靠性。它会向nova-compute和nova-scheduler等服务发送 RPC 请求,处理一些需要异步执行的任务。5. nova-compute 服务:
功能:
nova-compute服务负责管理虚拟化驱动程序和 hypervisor 主机(如 KVM、QEMU 等)。工作:
nova-compute在计算节点上执行虚拟机的创建、管理和销毁等操作,它负责启动和管理实例,并将实例的状态与nova-api和其他服务同步。6. cell 数据库:
功能:
cell 数据库存储了大多数关于实例的核心信息,包括虚拟机的状态、配置信息等。工作:每个 cell 拥有自己的数据库,存储着属于该 cell 的实例数据。
nova-compute、nova-conductor等服务会与对应的 cell 数据库交互,从而保持各个 cell 之间的数据隔离并提高可扩展性。7. cell0 数据库:
功能:
cell0 数据库是一个特殊的数据库,它与其他 cell 数据库非常相似,但只存储那些失败的实例。工作:当一个实例无法在正常的计算节点上调度时,它会被暂时存储在
cell0中。这个数据库专门用于存储无法调度的实例,直到它们能够成功调度到其他的计算节点上。cell0并没有计算节点,因此它主要作为一个临时存储失败实例的地方。8. 消息队列:
功能:消息队列(通常使用 RabbitMQ 或其他消息队列)是 OpenStack 服务之间进行通信的机制。
工作:服务之间通过消息队列进行 RPC 通信,例如,
nova-api会通过消息队列将调度任务发送到nova-scheduler,并通过nova-conductor与nova-compute进行通信。通过这种方式,服务之间可以解耦并异步处理请求。总结:
这个部署架构描述了 OpenStack Nova 在多组件环境下如何工作,以及各个服务如何协同配合以管理计算资源、虚拟机调度和管理。各个组件的作用如下:
nova-api提供外部 API 接口。
nova-scheduler和placement决定实例应该部署在哪个计算节点。
nova-conductor执行长时间运行的任务,解耦数据库访问。
nova-compute<

Nova Cell理解&spm=1001.2101.3001.5002&articleId=147634090&d=1&t=3&u=dee090d5d4cc4eb9a387a51f5c37803c)
5632

被折叠的 条评论
为什么被折叠?



