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

更新记录:
1. 2013.4.19  增加对nova-conductor的优势和劣势分析

正文:
在Grizzly版的Nova中,取消了nova-compute的直接数据库访问。大概两个原因:
1. 安全考虑。
Benefit:因为compute节点通常会运行不可信的用户负载,一旦服务被攻击或用户虚拟机的流量溢出,则数据库会面临直接暴露的风险,增加nova-conductor更加安全。
Limitation:虽然nova-conductor限制了直接DB访问,但compute节点仍然可以通过nova-conductor获取所有节点的虚拟机数据,删除虚拟机等操作。特别是如果使用E版的multihost,nova-api-metadata和nova-network不能使用nova-conductor。这样计算节点仍然是不安全的。
2. 方便升级。
Benefit:将nova-compute与数据库解耦的同时,也会与模式(schema)解耦,因此就不会担心旧的代码访问新的数据库模式。
Limitation:目前rolling upgrade在G版并不ready
3. 性能
Benefit:当使用green thread时,所有的DB访问是阻塞的。而如果使用nova-conductor,可以多线程使用RPC访问。
Limitation:通过RPC访问nova-conductor会受网络时延的影响。同时,nova-conductor的DB访问也是阻塞的,如果nova-conductor实例较少,效果反而会更差

如果希望继续使用本地访问DB,需要配置:
[conductor]
use_local=true

目前,nova-conductor暴露的方法主要是数据库访问,但后续从nova-compute移植更多的功能,让nova-compute看起来更像一个没有大脑的干活者,而nova-conductor则会实现一些复杂而耗时的任务,比如migration(迁移)或者resize(修改虚拟机规格)

部署
nova-conductor是在nova-compute之上的新的服务层。应该避免nova-conductor与nova-compute部署在同一个计算节点,否则移除直接数据库访问就没有任何意义了。同其他nova服务(nova-api, nova-scheduler)一样,nova-conductor也可水平扩展,即可以在不同的物理机上运行多个nova-conductor实例。

经典的部署方式中(一个controller节点,多个compute节点),可以将nova-conductor运行在Controller节点

这也就意味着Controller节点将比以前运行更多的任务,负载变重,因此有必要对负载做监控,必要时需要扩展contorller服务。比如当在多个节点运行nova-api时,就需要在前端做负载均衡;多个节点运行nova-scheduler或nova-conductor时,负载均衡的任务就由消息队列服务器完成; 

监控
需要对nova-conductor进行性能监控以便决定是否对服务进行扩展。首先可以监控所在节点的CPU负载;其次可以监控消息队列中的消息个数及大小(对于Qpid: qpid-stat,对于RabbitMQ: rabbitmqctl list_queues)

本博客欢迎转发,但请保留原作者信息(@孔令贤HW  http://blog.csdn.net/lynn_kong)!内容系本人学习、研究和总结,如有雷同,实属荣幸!

本文转自http://blog.csdn.net/lynn_kong/article/details/8606640。

nova分析(5)—— nova-conductor的更多相关文章

  1. nova分析(2)—— nova-all

    nova-all是一个用来启动所有nova服务的辅助脚本,注意只是启动所有服务,不包括停止和重启等功能. nova-all的入口在 nova.cmd.all:main ,脚本也比较简单,这儿就贴下代码 ...

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

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

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

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

  4. 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设备直接分 ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. SecureCRT最佳配色方法+直接修改默认配置方法 - imsoft.cnblogs

    SecureCRT默认显示效果是黑白且刺眼的主题,看起来很不舒服.经过一番搜索,总结结果如下,直接设置默认属性,设置一次,不需再改. 效果图: 具体操作方法: Options->Global O ...

  2. dedecms调用子栏目内容,缩略图,以及栏目名字

    织梦后台栏目页默认是没有添加缩略图的选项的,所以首先我们要调整后台提交表单使界面出现上传图片的地方,如下图所示:   织梦后台默认是没有栏目缩略图选项的,所以首先你需要从网上下载对应需要修改的文件,从 ...

  3. Matlab位运算操作

    本文为转载他人文章: bitand 按位与操作 a = 7; b = bitand(10,a); disp(dec2bin(a,8)); %ans = 00000111 disp(dec2bin(b, ...

  4. Codeforces Round #372 (Div. 2) A B C 水 暴力/模拟 构造

    A. Crazy Computer time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  5. tyvj 1056 能量项链 区间dp (很神)

    P1056 能量项链 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2006 提高组 第一道 描述     在Mars星球上,每个Mars人都随身佩 ...

  6. POJ 1860 Currency Exchange (最短路)

    Currency Exchange Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 60000/30000K (Java/Other) T ...

  7. android默认浏览器response下载PDF文件

    下载出来的文件不是PDF,而是xxx.htm文件,原因是response的header配置有问题. android默认浏览器的情况下,header的配置应该写成.(java 为例) response. ...

  8. Hibernate--Enum类型的set集合映射到数据库(xml配置文件实现方式)

    使用enum 存储Permission的值 package demo; public enum Permission {    CREATE,DELETE,UPDATE;} Role与Permissi ...

  9. Python Web.py

    安装Web.py root@bt:~# sudo pip install web.py Downloading/unpacking web.py Downloading web.py-0.37.tar ...

  10. 黑马程序员——JAVA基础之多线程的线程间通讯等

    ------- android培训.java培训.期待与您交流! ---------- 线程间通讯: 其实就是多个线程在操作同一个资源,但是动作不同. wait(); 在其他线程调用此对象的notif ...