OpenStack.003 基本概念之nova

      使用OpenStack Compute来托管和管理云计算系统,使得客户使用的虚拟机能够正常工作。 OpenStack Compute是基础架构即服务(IaaS)系统的主要部分。 主要模块在Python中实现。OpenStack Compute与OpenStack Identity进行交互以进行身份验证; 用于磁盘和服务器映像的OpenStack Image服务; 和用于用户和管理界面的OpenStack仪表板。 图像访问受到项目和用户的限制; 每个项目的配额有限(例如数量)。 OpenStack Compute可以在标准硬件上水平扩展,并下载图像以启动实例。

1  nova包含以下组件

  • nova­-api 服务——接受并响应最终用户的计算API调用。 该服务支持OpenStack Compute API,Amazon EC2 API和特殊的Admin API,用于特权用户执行管理操作。 它执行一些策略并启动大多数业务流程活动,例如运行一个实例。
  • nova­-api­-metadata 服务——接受来自实例的元数据请求。 当您使用nova­network安装在多主机模式下运行时,通常会使用nova­-api­-metadata服务。
  • nova­-compute 计算服务——通过虚拟机管理程序API创建和终止虚拟机实例的工作程序守护程序。适用于XenServer / XCP的XenAPI、KVM或QEMU的libvirt、适用于VMware的VMwareAPI,处理相当复杂。 基本上,守护程序接受队列中的操作,并执行一系列系统命令,例如启动KVM实例并更新数据库中的状态。运行在计算节点上。
  • nova­-placement­-api 服务——跟踪每个提供商的库存和使用情况。通过wsgi模块接收compute汇报的信息,能承载高访问量。
  • nova­-scheduler 服务——从队列获取虚拟机实例请求,确定运行哪个计算服务器主机。
  • nova­-conductor module 模块——nova­compute服务与数据库之间的交互。它消除了由nova­compute服务器对云数据库的直接访问。新星导体模块水平放置。但是,不要在运行nova­compute服务的节点上部署它。
  • nova­-cert 模块——为X509证书提供Nova Cert服务的服务器守护程序。用于生成euca­bundle­image的证书。只需要EC2 API。
  • nova­-consoleauth 守护进程——为控制台代理提供的用户授权令牌。此服务必须运行才能使控制台代理工作。您可以在集群配置中针对单个nova­consoleauth服务运行任一类型的代理。
  • nova­-novncproxy 守护进程——基于 Web 浏览器的 VNC 访问,提供通过VNC连接访问运行实例的代理。 支持基于浏览器的novnc客户端。
  • nova­-spicehtml5proxy 守护进程——基于 HTML5 浏览器的 SPICE 访问,提供通过SPICE连接访问运行实例的代理。 支持基于浏览器的HTML5客户端。
  • nova­-xvpvncproxy 守护进程——基于 Java 客户端的 VNC 访问,提供通过VNC连接访问运行实例的代理。支持特定OpenStack的Java客户机。与上面两个服务一样,是为了保证客户能够以不同方式访问控制台
  • the queue——在守护进程之间传递消息的中心枢纽。通常用RabbitMQ实现,也可以用另一个AMQP消息队列来实现,如ZeroMQ。
  • SQL数据库——存储云基础架构的大部分构建时间和运行时状态,包括:可用的实例类型、正在使用的实例、可用网络、项目。

      理论上,OpenStack nova可以支持SQLAlchemy支持的任何数据库。 公共数据库是用于测试和开发工作的SQLite3,MySQL,MariaDB和PostgreSQL。Nova的子服务也有自己的API,访问API有3钟方式,命令行方式、web方式与第三方应用方式。

2  Nova架构

以下笔记摘自https://www.cnblogs.com/CloudMan6/p/5415836.html ,在此感谢作者cloudman!

从虚机创建的流程角度简单分析nova组件的协同工作流程:

  • 客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:“帮我创建一个虚机”

  • API 对请求做一些必要处理后,向 Messaging(RabbitMQ)发送了一条消息:“让 Scheduler 创建一个虚机”

  • Scheduler(nova-scheduler)从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计算节点中选出节点 A

  • Scheduler 向 Messaging 发送了一条消息:“在计算节点 A 上创建这个虚机”

  • 计算节点 A 的 Compute(nova-compute)从 Messaging 中获取到 Scheduler 发给它的消息,然后在本节点的 Hypervisor 上启动虚机。

  • 在虚机创建的过程中,Compute 如果需要查询或更新数据库信息,会通过 Messaging 向 Conductor(nova-conductor)发送消息,Conductor 负责数据库访问。


转载请注明出处,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_35550345/article/details/87855058