设为首页 收藏本站
查看: 982|回复: 0

[经验分享] 【OpenStack】G版中关于Nova的Cell

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-9 11:48:05 | 显示全部楼层 |阅读模式
本博客欢迎转发,但请保留原作者(新浪微博:@孔令贤HW;博客地址:http://blog.csdn.net/lynn_kong)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!
 
更新记录:
2013.3.7  新增关于AZ,Aggregate,Cell概念的手绘图


1      目标
1. 为了增加横向扩展以及分布式,大规模(地理位置级别)部署能力,但又不增加数据库和消息中间件的复杂度
2. cell调度和主机调度隔离
2      简介
我们都熟悉Amazon EC2,他有一些基本概念:
》一个地理区域(Region)包含多个可用区域(Availability Zone)
Availability Zone相互之间物理隔离,一个Availability Zone的故障不会影响其他的使用
》客户端连接Region
》创建VM时,如果没有指定Availability Zone,调度算法会从Region中选择一个
》相反,如果指定了Availability Zone,则在其上创建VM

OpenStack
B版就基于Amazon的这种概念实现了Availability Zone。然后,又出现了Zone的概念:
》一个Zone就是一套独立的Nova部署环境
Zone之间无共享,相互隔离
D版,当出现Keystone之后,Zone的概念就被废弃掉了

而在G版,重新提出了”Cell”的概念,Cell之间的通信的可信的,基于AMQP协议。概括如下:
》每一个Cell中拥有独立的DBAMQP broker
》引入新的nova-cell服务
    -消息路由
    -调度(与主机调度不同,子Cell通过定时刷新将自己能力和资源上报给父Cell)
cell之间通信通过RPC
cells之间是树状结构
    -顶层是API cell,不感知底层物理主机以及虚拟化
    -cellnova-api服务
    -cellquota概念(NoopQuota)
3      服务部署
DSC0000.png
 
API cell节点要部署nova-api对外提供统一服务,nova-cell负责与子cell之间通信;子cell节点统一要部署nova-cell,如果子cell直接接入虚拟化层,则还要部署nova-schedulernova-compute。消息通信如下:
DSC0001.png
上图是三个cell级联的情况,其中API Cell收到请求后,通过nova-cell提供的调度算法,通过消息队列将消息转发到Child Cell节点,在Child Cell节点做与API Cell同样的工作,选择一个Grandchild Cell并继续转发,在Grandchild节点上做真正的主机调度工作,选择主机创建虚拟机。

上面的情况下,Grandchild Cell需要将自己连接的资源信息定时上报给Child Cell以提供调度功能使用,同样Child Cell也要自己知道的资源信息上报给API Cell使用,这样,每层调度时只需拿自己掌握的资源信息即可,实现每层解耦。
4      配置
从目前的实现来看,在nova.conf中要提供几个配置项:
enable:是否启用cell功能
name:当前节点的cell名称
capabilities:自定义的键值对信息(目前尚未使用)
此外,要配置每个cell节点的compute_api_classquota_driver,例如在API Cell节点需要配置:
compute_api_class=nova.compute.cells_api.ComputeCellsAPI
[cells]
name=api
enable=true
而在child cell节点,需要配置(compute_api_class默认配置为nova.compute.api.API)
quota_driver=nova.quota.NoopQuotaDriver
[cells]
enable=true
name=cell1

在使用前,还需要配置一些信息以便让cell之间相互识别并规定各自的角色,谁是谁的parent,谁是谁的child。因为cell之间通过AMQP协议通信,因此只需配置相互的AMQP信息即可。假如我们有三个cell,其中一个为parent cell(名称为api),其他两个为child cell(名称分别为cell1cell2)。则在parent cell节点上执行:
> nova-manage cell create --name=cell1 --cell_type=child --username=cell1_user --password=cell1_passwd --hostname=10.0.1.10 --port=5673 --virtual_host=cell1_vhost --woffset=1.0 --wscale=1.0
> nova-manage cell create --name=cell2 --cell_type=child --username=cell2_user --password=cell2_passwd --hostname=10.0.2.10 --port=5673 --virtual_host=cell2_vhost --woffset=1.0 --wscale=1.0
而在两个child cell节点上,分别执行:
> nova-manage cell create --name=api --cell_type=parent --username=api1_user --password=api1_passwd --hostname=10.0.0.10 --port=5672 --virtual_host=api_vhost --woffset=1.0 --wscale=1.0
5      关于Zone,Aggregate,Cell
   DSC0002.png
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-162147-1-1.html 上篇帖子: 【OpenStack】Grizzly版本中Scheduler filter机制详解 下篇帖子: 【转】Ubuntu12.04 OpenStack Folsom 安装(VLAN模式)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表