OpenStack组件之Nova

1.Nova简介

  • Nova是什么?

        OpenStack中提供计算资源服务的项目

  • Nova负责什么?

         虚拟机生命周期管理

        其他计算资源生命周期管理

        负责发现各个物理主机上的物理资源数量(物理CPU、内存、本地存储空间、PCI设备等),并根据配置值将其换为逻辑资源数量(如CPU超配)

        负责将各个物理节点上的逻辑资源数量上报至数据库,并定期刷新数据库记录,以使记录能够反映当前的实际资源状态。

  •  Nova不负责什么?

         承载虚拟机的物理主机自身的管理

         全面的系统状态监控

  •  Nova是OpenStack历史上最核心的项目

         历史最长:OpenStack首批两个项目之一

         功能最复杂,代码量最大

         大部分集成项目和Nova之间都存在配合关系

         贡献者在社区中的影响力最大

2.nova架构

模块

功能

一般部署位置

nova-api

接受rest消息

控制节点

nova-scheduler

选择合适的主机

控制节点

nova-conductor

数据库操作和复杂流程控制

控制节点

nova-compute

虚拟机生命周期管理和资源管理

计算节点

nova-novncproxy

novnc访问虚拟机代理

控制节点

nova-consoleauth

novnc访问虚拟机鉴权

控制节点

Nova内部服务使用REST调用,Nova和其他OpenStack服务交互时,使用消息队列。

  • nova-api接收和响应客户的API调用。 除了提供 OpenStack 自己的API,nova-api 还支持 Amazon EC2 API。 也就是说,如果客户以前使用 Amazon EC2,并且用 EC2 的 API 开发了些工具来管理虚机,那么如果现在要换成 OpenStack,这些工具可以无缝迁移到 OpenStack,因为 nova-api 兼容 EC2 API,无需做任何修改。负责接收来自客户端的http请求,比如创建一个虚拟机;虚拟机生命周期管理的入口
  • Nova-scheduler:虚拟及调度服务,负责决定在那个计算节点上运行虚拟机。这里的调度策略是先过滤不合适的节点,然后再进行打分操作,选择出来最合适的节点通知该节点上的nova-computer来进行创建虚拟机、迁移等操作。

  • nova-compute管理虚拟机的核心服务,通过调用Hypervisor API实现虚拟机生命周期管理。以一个守护进程的方式运行在计算节点上,专门负责创建虚拟机。

虚拟机各生命周期操作的真正执行者(会调用对应的hypervisor的driver)。

底层对接不同虚拟化的平台(KVM/VMware/XEN/Ironic等)

内置周期性任务,完成资源刷新,虚拟机状态同步等功能。

资源管理模块(resource_tracker)配合插件机制,完成资源的统计。

  • Hypervisor:计算节点上跑的虚拟化管理程序,虚拟机管理最底层的程序。不同虚拟化技术提供自己的 Hypervisor。 常用的 Hypervisor 有 KVM,Xen, VMWare 等
  • nova-conductor介于nova-databasenova-compute之间,其目的在于消除nova-compute直接访问云数据库。保证了数据库的安全性。数据库操作,解耦其他组件(Nova- Compute)数据库访问;Nova复杂流程控制,如创建,冷迁移,热迁移,虚拟机规格调整,虚拟机重建;其他组件的依赖,如nova- compute需要nova- conductor启动成功后オ能启动;其他组件的心跳定时写入。
  • 引入nova-conductor的好处:之前每个nova-compute都是直接访问数据库的。如果由于某种原因,某个计算节点被攻陷了,那攻击者就可以获取访问数据库的全部权限,肆意操作数据库,更加安全,升级更加方便
  • nova-console:用户可以通过多种方式访问虚机的控制台: nova-novncproxy,基于 Web 浏览器的 VNC 访问 nova-spice html5 proxy,基于 HTML5 浏览器的 SPICE 访问 nova-xvpnvncproxy
  • nova-consoleauth:负责对访问虚拟机控制台请求提供Token认证

nova-cert:提供x509证书支持

  • nova-database:用于存储各个模块所需要的必要的信息。一般用Mysql即可。Nova会有一些数据需要存放到数据库中,一般使用MYSQL。数据库安装在控制节点上。nova使用命名为“nova”的数据库。负责持久化记录Nova管理下的各个物理节点上的逻辑资源数量。
  • RabbitMQ:Nova 通过 Message Queue 作为子服务的信息中转站。OpenStack 默认是用 RabbitMQ 作为 Message Queue。 MQ 是 OpenStack 的核心基础组件。消息队列机制的实现,各个nova模块之间的通信几乎通过该队列实现,为各个模块传递消息。   

3.Nova资源池管理架构

region区域,地域。AWS 按地域(国家或者城市)设置一个 Region,每个 Region 下有多个 Availability Zone。Openstack 同样支持 Region 的概念,支持全球化部署,比如为了降低网络延时,用户可以选择特定的 Region 来部署服务。各个 Region 之间的计算资源、网络资源、存储资源都是独立的,但所有 Region 共享账户用户信息,因为 Keystone 是实现 openstack 租户用户管理和认证的功能的组件,所以 Keystone 全局唯一,所有 Region 共享一个 KeystoneKeystone endpoint 中存储了访问各个 Region URL

Availability Zone AZ 的引入是基于安全的角度考虑,比如我们定义一个机房为一个 AZ,把该机房所有计算节点纳入到一个 AZ 中,其中一个机房因为某种原因down 掉,不会影响其它机房的虚拟机和网络;同时, AZ 对用户来说是一个可见的概念,用户创建虚拟机时,可以明确指出在哪个 AZ,用户可以通过在多个 AZ 创建虚拟机来保证高可靠性。同一个AZ使用同一个共享存储,AZ包含了计算存储以及网络资源,

Host Aggregate 具有相同属性的主机集合;可以单纯地认为是计算资源,主机组由多个主机组成,如果后端虚拟化使用的是FusionCompute,一个主机对应一个集群;如果后端使用的是VMware,一个主机对应一个vCenter;如果是KVM,一个主机对应一个物理主机;主机组由多个主机组成,但同一个主机组只能使用一种虚拟机化技术

>>   region>Availability Zone>Host Aggregate

4.nova典型操作

4.1nova主要操作对象

5.nova创建虚拟机流程

1.用户通过Dashboard/CLI 申请创建虚拟机,并以REST API 方式来请求KeyStone授权

2.Keystone鉴定后和送回auth-token(用来通过REST-call向其他组件发送请求)

3.Dashboard 或者 CLI 将创建虚拟机请求转换成REST API形式并发送给nova-api

4.nova-api 收到请求后向keystone发送请求验证auth-token并获取权限

5.Keystone 验证token并发送角色和权限更新的认证报头

6.nova-api 联系nova-database ,为新的实例创建初始数据库条目(此时虚拟机状态开始变成building

7.nova-api 发送请求给 nova-scheduler ,以获得适合安装虚拟机的主机

8.nova-scheduler queue中拿到请求

9.nova-scheduler 联系 nova-database 通过过滤与权衡来查找最合适的主机

10.nova-scheduler 在过滤与权衡后返回最适合安装虚拟机的主机的ID

11.nova-scheduler 发送请求给 nova-compute ,请求创建虚拟机

12.nova-compute queue中拿到请求,发送请求给 nova-conductor 以获取选定主机的信息,如规格 ( ram , cpu ,disk)

13.nova-conductor queue中拿到请求,联系 nova-db,返回选定主机的信息

14.nova-conductor 将信息发送到 queue

15.nova-compute queue中得到选定主机的信息

16.nova-compute 通过传递auth-token给glance-api 进行REST调用,向glance 请求使用镜像服务

17.glance-api 与 keystone验证auth-token,nova-compute 得到镜像元数据

18.nova-compute 通过传递auth-token给Neutron-api进行REST调用,以获取网络服务

19.Neutron-api 与 keystone验证auth-token,nova-compute 得到网络信息

20.nova-compute 通过传递auth-token给Cinder-api 进行REST调用,以获取快存储服务

21.cinder-api 与 keystone验证auth-token,nova-compute 得到块存储信息

22.nova-compute 生成驱动数据,驱动hypervisor生成虚拟机,完成虚拟机创建

6.资源管理

  • 资源申请

用户在创建虚拟机时,通过指定flavor,对Nova提出具体的资源使用量申请

  • 资源调度

Nova根据flavor描述的资源类型与数量,对DB中记录的各个物理节点上的逻辑资源数量进行判断,选择出符合用户需求的节点,供创建虚拟机使用。

  • 资源占用

Nova在选定的物理节点上创建虚拟机,此时实际占用资源

  • 资源释放

当用户删除虚拟机时,虚拟机占用的资源真正被释放

7.nova调度流程

 Nova调度过程,Nova-scheduler的Filter Scheduler

8.nova热迁移流程

l迁移成功后会清除源节点的信息。

l 迁移失败后会回滚,清除目标节点的信息。

REST API是一组关于如何构建Web应用程序API的架构规则、标准或指导,或者说REST API是遵循API原则的一种架构风格。REST是专门针对Web应用程序而设计的,其目的在于降低开发的复杂度,提高系统的可伸缩性。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值