美文网首页
Nova 组件

Nova 组件

作者: 小码弟 | 来源:发表于2019-03-26 22:44 被阅读0次

Nova 子服务协作流程

image

消息队列使用rabbitMQ:OpenStack组件的各个子服务之间不直接调用,全部通过消息队列异步调用。

数据库使用MySQL:每个OpenStack组件在MySQL中都有自己的数据库。

1. nova api

nova api是nova服务的门户,所有对nova的调用都会经由 nova api 处理。nova api向外界暴露nova服务的HTTP REST api接口。

作为终端用户,不会直接调用api。命令行、dashboard负责调用这些api,进一步封装。

nova api 对 收到的 HTTP api 的处理:

  1. 检查参数有效性

  2. 调用nova其他子服务

  3. 格式化调用结果返回给客户端

OpenStack使用 实例(Instance) 描述虚拟机。

2. nova-scheduler

创建instance时,用户会提出需要多少资源。OpenStack把这些资源需求定义在flavor中,flavor就是一个个资源套餐。

Flavor定义了 VCPU、RAM、DISK和Metadata。

/etc/nova/nova.conf中,配置三个配置项:schedulerdriver, scheduleravailable_filters, schedulerdefaultfilters。

  1. Filter scheduler 是nova-scheduler默认的调度器。

    • 通过过滤器(Filter)选择满足条件的计算节点

    • 通过权重(Weight)选择在权重最大的计算节点上创建instance

  2. Filter

    scheduleravailable_filters 定义nova可用的过滤器,默认是nova自带的所有过滤器。

    schedulerdefaultfilters 则定义实际使用的过滤器。

    默认值:

    image
    • RetryFilter: 刷掉之前已经调度过的节点

    • AvailabilityZoneFilter: 考虑容灾性和隔离性,将计算节点划分在不同的Zone中。初始时将所有的节点放在默认的nova zone中。

    • RamFilter:将不满足 flavor 内存需求的计算节点过滤掉。OpenStack在计算节点内存时,认定可用内存是实际内存的倍数。

    • DiskFilter:将不满足 flavor 磁盘需求的计算节点过滤掉。同样允许超载。

    • CoreFilter:将不满足 flavor CPU需求的计算节点过滤掉。nova 默认的filters没有包含这个filter。

    • ComputeFilter:将 nova-compute 服务不能正常工作的节点过滤掉。

    • ComputeCapabilitiesFilter: 根据节点的计算特性筛选。

    • ImagePropertiesFilter: 根据镜像属性筛选节点。

    • ServerGroupAntiAffinityFilter:尽量让 instance 散落在不同的计算节点上。

    • ServerGroupAffinityFilter:尽量让 instance 聚集在一个计算节点上。

  3. Weight

    经过第2步的过滤,scheduler过滤出一组符合各个过滤器条件的计算节点。

    如何确定最终在哪个节点上创建 instance? 权重

    节点 i 的权重默认定义为 i 节点空闲的内存量

    空闲内存越多,权重越大,被选中概率越大。

3. nova-compute

nova-compute 和 hypervisor 一起实现 OpenStack 对 instance 的管理。

  1. driver 架构支持多种 hypervisor

    配置不同的driver, 使用不同的hypervisor。各自的hypervisor实现统一的接口,以driver的形式提供给OpenStack使用。

    nova-compute的作用有两个:报告计算节点状态; 管理 instance 生命周期。

    • 报告节点状态。nova-compute 通过hypervisor得知节点的资源使用情况,进而发送给OpenStack其他子服务(如 Filters) 使用。

    • 管理 instance。

      nova 创建 instance 分为4步:

      1. 按flavor套餐为 instance 准备资源

      2. 创建 instance的镜像文件,如果没有就从Glance处下载,类似docker镜像的构建过程

      3. 创建 instance的XML定义文件,类似Dockerfile

      4. 创建虚拟网络并启动虚拟机,创建NFV(网桥,NAT)

4. nova-conductor

nova-compute通过 nova-conductor 访问MySQL数据库。

这么做是因为:

  1. 安全性:如果计算节点的nova-compute 直接访问控制节点上的 MySQL数据库,那么就要在计算节点上存储数据库的连接信息,如果任一计算节点被攻击,数据库位置也就暴露了。因此,compute 通过 conductor 访问MySQL,而conductor部署在控制节点上。

  2. 伸缩性

    compute 与 conductor 通过消息队列通信,允许配置多个 conductor 实例,适应大量或少量数据库访问场景。

5. 日志相关

  1. devstack日志同一放在/opt/stack/logs目录下。
image

每个服务都有自己的日志

Nova 以 ”n-“ 开头

Glance 以 “g-”开头

Cinder 以 “c-”开头

Neutron 以 “q-” 开头

  1. 创建 instance 流程

    image
  2. 软/硬 启动

    • soft reboot 只重启操作系统,instance 仍在运行,相当于 Linux的reboot命令

    • hard reboot等效于 关机再开机

  3. Lock/Unlock

    被加锁的 instance 不允许执行重启或删除等关键操作。

    注: admin用户不受限制,它相当于root用户。

  4. suspend 和 pause比较

    pause 是短时间暂停,它把虚拟机状态保存在内存中。

    suspend 是长时间暂停,它把虚拟机状态保存在磁盘上。

    suspend后 instance 处于 shutdown 状态,但 hypervisor 仍为 instance 保留资源,为实现该 instance 的快速启动。若回收这些资源,使用Shelve操作。Shelve会将 instance 作为 image 上传到 Glance,然后在宿主机中删除该 instance。Unshelve还原被shelve的 instance。

  5. Migrate

    Migrate 允许将 instance 从当前计算节点迁移到另一个计算节点。Migrate不要求源节点和目标节点共享存储,要求计算节点间配置ssh无密码访问。

  6. Live Migrate

    Migrate 执行的是"冷迁移",把 instance 关掉再迁移。而 Live Migrate 属于热迁移,instance 不会停机。

    Live Migrate分两种:

    • 源节点和目的节点没有共享存储, image + instance一起迁移。

    • 源节点和目的节点共享存储,只需要迁移 instance。

    热迁移的条件:

    • 源节点和目的节点的CPU类型一致

    • Libvirt 版本一致

    • 源节点和目标节点能互相识别对方的主机名

    • 源节点和目标节点的 nova.conf中指明热迁移使用 TCP 协议

    • instance 使用 config driver 保存其 metadata

    • 源和目标节点的 Libvirt TCP 远程监听服务得打开

  7. Resize

Resize负责调整 instance 的vCPU、内存和磁盘资源。具体需要多少资源定义在 flavor

resize 通过选择新的flavor来调整资源的分配。resize的本质是在 migrate 同时选择新的 flavor,而 migrate 是 resize 特例:flavor没有变化的resize。

  1. Evacuate

    Rebuild 可以修复损坏的 image。

    Evacuate 可以在宿主机崩溃,nova-compute 无法工作的情况下将节点上的 instance 迁移到其他计算节点上,实际上在其他计算节点上重建 instance。前提是 image 的镜像文件必须共享存储。

instance 操作总结

image

相关文章

  • nova conductor服务

    以nova kilo版本为例 nova主要组件及功能 按功能划分其主要组件有:(1) 虚拟机管理: nova-ap...

  • Nova 组件

    Nova 子服务协作流程 消息队列使用rabbitMQ:OpenStack组件的各个子服务之间不直接调用,全部通过...

  • Openstack学习笔记(四):其他组件的安装和配置

    Nova Nova,即计算服务,是OpenStack计算的弹性控制器。Nova可以说是整个云平台最重要的组件,Op...

  • Nova组件介绍

    架构介绍下图是nova组件的架构图nova架构图 nova-apinova-api负责接收和响应终端用户有关虚拟机...

  • OpenStack的Nova组件详解

    一:简介 一、概念 1. Nova和Swift是OpenStack最早的两个组件,nova分为控制节点和计算节点。...

  • OpenStack组件 Nova

    都是自己的学习笔记,仅供参考。 核心模块-Nova简介 管理instance生命周期生成,调度,终止实例作用:处理...

  • Nova虚拟机管理系统

    一、Nova是什么 Nova是OpenStack所有组件中最重要的一个模块,负责了云中虚拟机的管理。就是对CPU、...

  • Nova的架构

    一、Nova内部的小型服务架构 经过OpenStack已经有了非常多的组件,但是在Nova内部,仍然有着各种各样的...

  • openstack glance组件详解

    nova compute调用glance组件时,访问glance api,glance V2版本内部通信。

  • 基于kolla-ansible部署的openstack外接cep

    连接ceph openstack连接ceph主要是三个组件:glance,cinder,nova 1 使用外接ce...

网友评论

      本文标题:Nova 组件

      本文链接:https://www.haomeiwen.com/subject/weuovqtx.html