cells的功能允许用户以更分散的方式去扩展OpenStack计算云而无需使用复杂的技术,比如数据库和消息队列的集群。它的目的是支持非常大规模的部署。

当启用了此功能,在OpenStack计算云中的主机被划分为组称为cells。cells可以被配置成树形结构。顶层的cell的主机应该运行nova-api服务,但是没有nova-compute服务。每一个childcell在常规的计算云中应该运行除了nova-api之外的所有nova-*类型的服务。可以认为,作为正常的计算部署的cells,每一个cell都有他自己的数据库服务器和消息队列的代理。

nova-cells服务负责cells之间的沟通和为一个新的实例选择一个cell。所有的cell都需要这个服务。cells之间的通信是可插拔的,唯一的选择就是通过RPC进行通信实现。

cells的调度是独立于主机调度的。nova-cells首先要找到一个cell(目前的选择是随机的,在未来的版本当中将会添加过滤/称重功能和可以基于广播的容量/能力的决策)。一旦一个cell被选中并且一个新的生成请求被送达到nova-cells服务,他会被发送到那个cell的主机调度中并且生成过程作为没有的cells。

nova-cells的配置方法见https://wiki.openstack.org/wiki/Blueprint-nova-compute-cells

cell特征

1.目的是支持更大规模的部署;

2.cell的结构是树的形式;

3.top-level级别的cell(API cell)中的主机运行nova-api服务,可以没有nova-compute服务,不感知底层物理主机以及虚拟化;

4.子cell无nova-api服务;

5.每一个子cell应该运行常规OpenStack云计算中所有nova-*类型的服务,除了nova-api服务;

6.树中的每个cell中都有自己的数据库服务和消息队列服务;

7.从设计上来讲cell之间的通信是可插拔的,也就是未来会支持多种消息通信框架,目前cell之间的通信只是通过RPC服务来实现的;

8.采用cell服务实现了cell的调度和主机节点的调度是相互分离的;

9.在建立新的实例时,nova-cells服务选择cell,目前实现的是随机选择,将来会添加过滤/权重功能,还可以基于广播获取的capacity/capabilities等参数;

10.在默认的情况下cell功能是禁用的;

cells架构

在API cell节点要部署nova-api对外提供统一服务,nova-cell负责与子cell之间通信;子cell节点统一要部署nova-cell,如果子cell直接接入虚拟化层,则还要部署nova-scheduler,nova-compute。

上图是三个cell级联的情况,其中API Cell收到请求后,通过nova-cell提供的调度算法,通过消息队列将消息转发到Child Cell节点,在Child Cell节点做与API Cell同样的工作,选择一个Grandchild Cell并继续转发,在Grandchild节点上做真正的主机调度工作,选择主机创建虚拟机。

参考文档

https://wiki.openstack.org/wiki/Blueprint-nova-compute-cells

http://blog.csdn.net/lynn_kong/article/details/8564558

http://m.blog.csdn.net/blog/ustc_dylan/17758393

http://m.blog.csdn.net/blog/gaoxingnengjisuan/13631401

http://m.blog.csdn.net/blog/gaoxingnengjisuan/14216977

nova-cells源码解析1 http://blog.csdn.net/gaoxingnengjisuan/article/details/14216977

nova-cells源码解析2 http://blog.csdn.net/gaoxingnengjisuan/article/details/14484033

nova分析(4)—— nova-cells的更多相关文章

  1. nova分析(10)—— nova-rootwrap

    一.nova-rootwrap的作用 部署玩过openstack的都应该知道,它会生成一个nova用户来管理所有服务.nova身份在linux中属于普通用户级别,避免了一些需要root身份运行的操作, ...

  2. 在Openstack H版部署Nova Cell 时 ,终端输入nova service-list 和 nova host-list 命令将报错

    关于Cell的基本介绍,可以参考贤哥的一篇文章: [OpenStack]G版中关于Nova的Cell  http://blog.csdn.net/lynn_kong/article/details/8 ...

  3. KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  4. openstack私有云布署实践【11.3 计算nova - compute节点-nova用户免密登录(用于云主机冷迁移+扩展云主机大小)】

    云主机迁移+扩展云主机大小 ,官方说它依赖nova用户之间的免密登录.确保每个resion区域的compute节点服务器他们可以相互SSH免密   compute1-7     他们相互SSH免密 k ...

  5. nova分析(7)—— nova-scheduler

    Nova-Scheduler主要完成虚拟机实例的调度分配任务,创建虚拟机时,虚拟机该调度到哪台物理机上,迁移时若没有指定主机,也需要经过scheduler.资源调度是云平台中的一个很关键问题,如何做到 ...

  6. nova分析(5)—— nova-conductor

    nova-conductor是nova-compute之上的一个服务,这个服务比较简单,主要封装了DB访问和动态迁移相关的代码.转来一篇文章看看它是如何工作的. 更新记录:1. 2013.4.19   ...

  7. nova分析(6)—— nova service启动过程

    Nova project下面具有多个service,api,compute,sceduler等等,他们的启动过程都几乎类似,这一篇博客就详细记录nova-sceduler的启动过程.文章中贴出的源码都 ...

  8. Nova分析(1)——整体架构

    Conceptual Diagram Logical diagram Nova is the most complicated and distributed component of OpenSta ...

  9. nova分析(3)—— nova-api

    nova-api是nova对外提供Restful API的服务,Horizon.novaclient等均通过该api与nova进行通信. nova其实对外提供了多个api服务,包括下面这些服务: no ...

  10. nova分析(8)—— nova-compute

    nova-compute是管理和配置虚拟机的入口,在所有compute机器上都需要该服务来创建和管理虚拟机. nova-compute服务的入口在 nova.cmd.compute:main ,其启动 ...

随机推荐

  1. 《JS高程》事件类型学习笔记

    事件类型: UI事件&焦点事件: 鼠标滚轮事件: 键盘与文本事件: 复合事件&变动事件: HTML5事件: 设备事件&触摸与手势事件:

  2. iOS学习笔记---oc语言第三天

    继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量 ...

  3. jsonp跨域请求数据实例——手机号码查询

    前言 网上有很多开放的api,我们在本地通过ajax获取数据时,总会碰到一个问题,那就是跨域!如果不借助php等,仅仅通过js怎么解决跨域的问题呢?或许jsonp是个不错的选择. 知识准备 上篇博客 ...

  4. Angular 通过 $http.post 写入本地 JSON 文件

    最近在练习使用 Angular,在实现 $http 对本地 JSON 文档读写的时候遇到了问题. 问题 使用 GET 方法成功将 JSON 文档的内容读出来:但是在使用 POST 插入本地 JSON ...

  5. C函数及指针学习1

    1 大段程序注释的方法 #if 0#endif 2三字母词 以两个问号 开始的都要注意 3 字面值(常量) 在整型号字面值后加 字符L (long),U(unsigned)说明字符常量 为长整型 或( ...

  6. JavaWeb学习记录(四)——日期和数字的格式转换

    一.Date转为String (1) public class DateUtil {    private static SimpleDateFormat sdf = new SimpleDateFo ...

  7. 课堂所讲整理:包装&工具类

    package org.hanqi.array; import java.util.Random; public class BaoZhuang { public static void main(S ...

  8. kuangbin_ShortPath F (POJ 3259)

    判环模板题 有了上一题的经验过得很轻松 除了因为spfa还不是很熟打错了两个字母 然后debug了一小会 #include <iostream> #include <string&g ...

  9. eclipse使用jetty插件出现内存溢出解决方案

    系统运行在MAVEN中的jetty插件下,当在ECLIPSE运 clean jetty:run时系统提示 OutOfMemoryError: PermGen space. 解决办法:设置run as ...

  10. m3u8文件简介

    1.   M3U8文件概念 M3U8文件是指UTF-8编码格式的M3U文件.M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播 ...