nova分析(4)—— nova-cells

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,布布扣,bubuko.com

时间: 2024-12-29 19:16:28

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

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

Conceptual Diagram Logical diagram Nova is the most complicated and distributed component of OpenStack. A large number of processes cooperate to turn end user API requests into running virtual machines. Below is a list of these processes and their fu

nova分析(2)—— nova-all

nova-all是一个用来启动所有nova服务的辅助脚本,注意只是启动所有服务,不包括停止和重启等功能. nova-all的入口在 nova.cmd.all:main ,脚本也比较简单,这儿就贴下代码了 def main(): # 命令行参数解析,实际上命令行参数并没有使用 config.parse_args(sys.argv) logging.setup("nova") LOG = logging.getLogger('nova.all') utils.monkey_patch()

nova分析(3)—— nova-api

nova-api是nova对外提供Restful API的服务,Horizon.novaclient等均通过该api与nova进行通信. nova其实对外提供了多个api服务,包括下面这些服务: nova-apinova-api-ec2nova-api-metadatanova-api-os-compute 其中,nova-api用于启动其他三个服务.下面逐个分析下. nova-api 入口在 nova.cmd.api:main ,主要是基于WSGI.PasteDeploy.Webob.Rout

nova分析(5)—— nova-conductor

nova-conductor是nova-compute之上的一个服务,这个服务比较简单,主要封装了DB访问和动态迁移相关的代码.转来一篇文章看看它是如何工作的. 更新记录:1. 2013.4.19  增加对nova-conductor的优势和劣势分析 正文:在Grizzly版的Nova中,取消了nova-compute的直接数据库访问.大概两个原因:1. 安全考虑.Benefit:因为compute节点通常会运行不可信的用户负载,一旦服务被攻击或用户虚拟机的流量溢出,则数据库会面临直接暴露的风险

nova分析(9)—— nova-novncproxy

nova提供了novncproxy代理支持用户通过vnc来访问虚拟机,用户可以通过websocket.java客户端或者spicehtml5来访问.通过websket访问虚拟机的功能已经集成到horizon中,而通过java客户端则需要先安装相应的软件.为了方便用户访问虚拟机,nova通过有一个proxy来实现,proxy通常同nova-api一起部署. vnc访问的实现方法如下,首先是启动一个虚拟机时启用vnc,这可以通过给kvm加上vnc参数即可.这样,kvm就会启动一个vncserver监

nova分析(10)—— nova-rootwrap

一.nova-rootwrap的作用 部署玩过openstack的都应该知道,它会生成一个nova用户来管理所有服务.nova身份在linux中属于普通用户级别,避免了一些需要root身份运行的操作,提高linux系统的安全性.但是openstack在实际过程中会调用很多外部命令,例如就network服务而言就有:`ip`,`ovs-vsctl`,`iptables`,`dnsmasq`,`brctl`等等,这些命令在linux中都是需要以root身份来运行的,如果是普通用户通常的做法是在命令前

nova分析(7)—— nova-scheduler

Nova-Scheduler主要完成虚拟机实例的调度分配任务,创建虚拟机时,虚拟机该调度到哪台物理机上,迁移时若没有指定主机,也需要经过scheduler.资源调度是云平台中的一个很关键问题,如何做到资源的有效分配,如何满足不同情况的分配方式,这些都需要nova-scheduler来掌控,并且能够很方便的扩展更多的调度方法,可能我需要虚拟机调度到空闲的机器,可能还需要将某类型的虚拟机调度到固定的机架等等,现在就来看看Nova-Scheduler是如何完成调度任务的. Scheduler启动后,相

Openstack之Nova分析

前言  Openstack作为一个虚拟机管理平台,核心功能自然是虚拟机的生命周期的管理,而负责虚机管理的模块就是 Nova. 本文就是openstack中Nova模块的分析,所以本文重点是以下三点: 先了解Openstack的整体架构,搞清楚为什么要用这样的架构: 然后再了解架构中的各个组件,组件提供的主要功能与各个组件之间的交互: 了解虚机的启动过程,能在遇到问题时发现问题出在哪个模块中的哪个组件. Nova组件介绍 接下来进行详细介绍,如有错误,欢迎拍砖! 下图为创建虚拟机的一个大概流程图.

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

云主机迁移+扩展云主机大小 ,官方说它依赖nova用户之间的免密登录.确保每个resion区域的compute节点服务器他们可以相互SSH免密 compute1-7     他们相互SSH免密 kxcompute1-9  他们相互SSH免密 1.注意!是每台机器上的nova用户向另一台机器的nova用户的免密登录 每台compute节点修改ssh配置,目的是为了不让其提示输入yes保存密钥 vi /etc/ssh/ssh_config 尾部添加 StrictHostKeyChecking no