一.概述
OpenStack 在控制平面上的性能瓶颈主要在 Message Queue 和 Database 。 尤其是 Message Queue , 随着计算节点的增加 , 性能变的越来越差 。 为了应对这种情况 , Nova 很早之前提出来 nova-cell的解决方案 。起初是cell v1版本,由于架构负杂,自 Newton 版本引入cell v2。
二.结构
(1)nova-api 依赖 nova_api 和 nova_cell0 两个数据库 。
(2)nova-scheduler 服务只需要在 api 层面上安装 ,cell 不需要参数调度 。 这样实现了一次调度就可以确
定到具体在哪个 cell 的哪台机器上启动
(3)cell 里面只需要安装 nova-compute 和 nova-conductor 服务 , 和其依赖的 DB 和 MQ
(4)api 上面服务会直接连接 cell 的 MQ 和 DB
三.Cell 相关数据库表
(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 具体信息 。