OpenStack- 基本概念之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 服务——接受来自实例的元数据请求。 当您使用novanetwork安装在多主机模式下运行时,通常会使用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 模块——novacompute服务与数据库之间的交互。它消除了由novacompute服务器对云数据库的直接访问。新星导体模块水平放置。但是,不要在运行novacompute服务的节点上部署它。
- nova-cert 模块——为X509证书提供Nova Cert服务的服务器守护程序。用于生成eucabundleimage的证书。只需要EC2 API。
- nova-consoleauth 守护进程——为控制台代理提供的用户授权令牌。此服务必须运行才能使控制台代理工作。您可以在集群配置中针对单个novaconsoleauth服务运行任一类型的代理。
- 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 负责数据库访问。
转载请注明出处,谢谢!