Nova 组件

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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 都是自己的学习笔记,仅供参考。 核心模块-Nova简介 管理instance生命周期生成,调度,终止实例作用:处理...
    廖马儿阅读 3,526评论 0 3
  • Compute Service Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。虚...
    河码匠阅读 2,752评论 0 3
  • 架构介绍下图是nova组件的架构图nova架构图 nova-apinova-api负责接收和响应终端用户有关虚拟机...
    慕慕她爸阅读 6,995评论 1 1
  • 1.环境准备 centos7 1.1、yum安装设置 yum list |grep openstackcentos...
    davisgao阅读 5,459评论 1 16
  • 我用了将近一年的时间问自己为什么,结果还是没有答案。因为我知道,这个问题很刁钻涉及范围很广,所以我决定暂时不给予十...
    Michael_Lau阅读 150评论 0 0