nova cell v2原理及流程

为什么要引入nova cells

主要是为了降低数据库和消息队列的访问瓶颈。
对于云端架构来说,它默认拥有非常大的资源池,而这些资源池需要很多的服务器加以支持。OpenStack在架构设计时,就已经充分考虑到了服务的可扩展性。不过,在实际的使用中,用户经常会遇到问题,主要的问题包括两个方面,这就是数据库和消息队列的瓶颈问题。而Cells正是Nova内部为了解决数据库、消息队列瓶颈问题而设计的一种计算节点划分部署方案。
如果你仔细研究OpenStack的架构,你会发现OpenStack通过不同的项目对不同的资源接口进行抽象和封装。而在这些资源之间,是通过消息队列来进行通信的,同时也会有跨项目的通信。事实上,每一个项目都会有数据库的访问,以及消息队列的使用。而数据库和消息队列正在成为整个OpenStack扩展的瓶颈。尤其是消息队列,伴随着集群规模的扩展,其性能下降是非常明显的。通常情况下,当集群规模扩展到200个节点,一个消息可能要在十几秒后才会响应,集群的整体性能大大下降。

cell v2

cell v2 自 Newton 版本引入 ,Ocata 版本变为必要组件 。 以后默认部署都会初始化一个单 cell 的架构 。cell v2 的架构图如下 , 看着比 cell v1 清爽不少 。

image.png

从架构图上 , 可以看到 :
1、api 和 cell 有了明显的边界 。 api 层面只需要数据库 , 不需要 Message Queue。
2、nova-api 现在依赖 nova_api 和 nova_cell0 两个数据库 。
3、nova-scheduler 服务只需要在 api 层面上安装 ,cell 不需要参数调度 。 这样实现了一次调度就可以确定到具体在哪个 cell 的哪台机器上启动
4、这里其实依赖 placement 服务 , 以后的文章会提到
5、cell 里面只需要安装 nova-compute 和 nova-conductor 服务 , 和其依赖的 DB 和 MQ
6、所有的 cell 变成一个扁平架构 。 比之前的多层父子架构要简化很多 。
7、api 上面服务会直接连接 cell 的 MQ 和 DB, 所以不需要类似 nova-cell 这样子的额外服务存在 。 性能上也会有及大的提升

nova_api & nova_cell0

自 Newton 版本 ,nova 就一直拆分 nova 数据库 , 为 cell v2 做准备 。 把一些全局数据表从 nova 库搬到了 nova_api, 下面是现在 nova_api 里面的所有表 。

image.png

可以看到像 flavor, instance groups, quota 这些表已经迁移了过来 。nova_cell0 数据库的 schema 和 nova 是一样的 , 他存在的只要用途是 : 当 instance 调度失败时 , instance 的信息不属于任何一个 cell, 所以放到 cell0 上面 。 因此里面的数据并不是太重要 。

Cell Related Tables

Cell 相关的数据库表都在 nova_api 里面 , 包括 cell_mappings, host_mappings, instance_mappings。 其表结构如下 :

image.png

1、cell_mappings 表 cell 的 Database 和 Mesage Queue 的连接 。 用于和子 cell 通讯
2、host_mappings 是用于 nova-scheduler, 可以确认分配到的机器 。 这里其实也有一个坑 , 之前 nova-compute 启动起来 , 就可以直接使用了 ,cell v2 之后 , 就需要手动运行 nova-manage cell_v2 discover_host , 把 host mapping 到 cell_mappings 表里面 , 那台计算节点才会加入到调度中 。
3、instance_mappings 表里有所有 instance id, 这样在查询 instance 时 , 就可以从这个表里查到他所在的 cell, 然后直连 cell 拿到 instance 具体信息 。

cell 流程

image.png

当想要获取一个机器的详细信息时 :
1.nova-api 先从 instance_mappings 表拿到 instance 的 cell_id
2.再从 cell_mappings 表拿到所在 cell 的 DB connection
3.直接连接 cell 的 DB 拿到机器的详细信息

image.png

当要重启一台机器时 :
1.nova-api 先从 instance_mappings 表里拿到 instance 所在的 cell_id
2.从 cell_mappings 里拿到所在 cell 的 message queue 连接
3.nova-api 直接给 mq 的相关队列发重启机器的消息

当新建机器时 :
1.nova-api 接到用户的请求信息 , 先转发到 nova-scheduler 进行调度 , nova-scheduler 通过 placement service, 直接确定分配到哪台机器上
2.nova-api 把 instance 的信息存入 instance_mappings 表
3.nova-api 把机器信息存到目标 cell 的 database
4.nova-api 给 cell 的 message queue 的相关队列发消息 , 启动机器

Cell v2 的优点

•数据库和消息队列作为 nova 的一等公民 。
•在 cell 的数据库里没有冗余数据 , 所有共享数据都在 nova-api 中
•全局数据和 cell 数据有一条清晰的界线
•非 cell 用户很容易的就可以迁移到 cell v2 上面 。 不需要更改现在的部署架构
•cell v1 的用户也可以迁移到 cell v2 上 。 只要手动建立起所有的 mapping, 关掉现在存在的 nova-cell 服务 , 清掉最上层 cell 的数据库 。 但是最上层 cell 本质上和其它 cell 是不同的 。 所以需要调整架构
•增减 cell 变的十分简单 , 而且在把某个 cell 加入之前 , 可以在其它环境进行测试

Cell v2 相关命令

因为 cell v2 完全靠 database 的操作为建立 , 所以也没有相关的 api 接口 。 主要靠 nova-manage cell_v2 命令 。 详细说明参见REF
nova-manage cell_v2
create_cell
delete_cell
list_cells

map_cell0
discover_hosts
simple_cell_setup

map_cell_and_hosts
map_instances
verify_instance

其它

计算节点自动发现
上面提到了现在 nova-compute 服务上线后 , 不会自动加到 nova-api 的 host_mappings 里面 , 也就不会加到 nova-scheduler 的调度中 。 需要手动运行 nova-manage cell_v2 discover_hosts 命令 。 这显示略显繁琐 。
在小型一些的环境上 , 推荐打开自动发现功能 , 就不用手动跑命令了 。

image.png

性能分析为了拿到 instance 的详细信息 , 需要查询 nova_api 数据库 , 相比之前要多查询一次数据库 ( 虽然是有三个表 , 但是可以用多表连接查询 , 一次就可以拿到所有的结果 )。 但是一来数据相当少 , 而且很容易加上一层 cache, 并不会对性造成什么影响 。

Kolla 实现

现在 Kolla 已经支持自动部署一个基本的 cell 环境 , 而且支持从没有 cell 的 Newton 升级到有 cell 的 Ocata 版本 。

cells创建流程,例子。
https://docs.openstack.org/developer/nova/cells.html

来源:

http://www.99cloud.net/html/2017/jiuzhouyuanchuang_0306/301.html

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

推荐阅读更多精彩内容