(转)Openstack Cascading和Nova Cell
Openstack是看着AWS成长起来的,这点毋庸置疑;所以AWS大规模商用已成事实的情况下,Openstack也需要从架构和产品实现上进行优化,以满足大规模商用的要求。从已有的实现来看其中两种方式值得借鉴:华为推出的Openstack级联方案和社区已有的Cell方案。在上海11月21号的Openstack Meeting up中华为高级架构师黄登辉的分享里也提及,华为公有云使用了级联架构。其中Cell方案(https://wiki.openstack.org/wiki/Blueprint-nova-compute-cells,http://comstud.com/GrizzlyCells.pdf)是从Openstack的G release版提出的新模块,Openstack级联方案(https://wiki.openstack.org/wiki/OpenStack_cascading_solution)提出时间稍晚,但更有优势。
Cell从其BP简单来说实现主要是通过根Cell(API-Cell)的Nova-API为整个Openstack的Nova-API,其他子Cell( Child-Cell )没有Nova-API服务,二者都有独立的AMQP Broker、Database、nova-cells等服务,全局服务有Keytone和Glance;Cell提出的背景有这么几点:
第一,Openstack的主机规模(主要是计算节点的数目,因为当时网络和存储分别还是Nova-network和Nova-volume,Neutron之后才出现)超过几百台后(英国电信主管声称只能管理约500个计算节点)在管理性能上就遇到了大的瓶颈,主要是MessageQueue使用RPC导致的,这点也反映了Openstack初期架构设计的“着急”(当然,这些不仅仅体现在RPC上,后续网络组件Neutron的管理协议更是体现了Openstack初期开源重实现不重商用的短板,但也反映了Openstack注重的是这种解耦式的架构和易集成平台,而不是底层确切的技术实现,所以也得到了尽可能多厂商的参与和支持);
第二,上一点也提及当时版本还是G版,即当时网络和存储分别还是Nova-network和Nova-volume,并没有独立的组件,所以如果解决了Nova的管理瓶颈,也基本解决了网络和存储的管理瓶颈;所以推出Cell方式被支持是可以理解的;
第三,Nova有了层级概念后,其上层选择下层的调度算法应该多种多样,以满足客户多种场景的需求,但是这点Nova的调度算法当时还不是很丰富;
图1 Cell 架构示意图
级联架构提出的时候Openstack的基础组件基本都已完善,所以对于现在的Openstack考虑比较全面些,对重要的Openstack组件比如Nova、Cinder、Neutron、Glance以及Ceilometer等的处理都有考虑;Openstack级联支持规模场景包括10万主机、百万虚机等,真真实实的大规模部署。
图2 级联架构示意图
但Openstack的级联初衷解决的不是规模问题,而是跨多DC的多OS统一管理问题,这个需求是非常常见的,因为通常的云平台厂商部署时,会考虑多个多Openstack来考虑客户业务部署(比如灾备、CDN等),有这类需求的客户华为遇见很多。当然多个Openstack可以通过一个管理端来分别对多个Openstack通过北向API进行管理,但是这个管理端不仅无法整体协调管理资源(比如Neutron中Network的大二层部署无法被这种形式支持,只能每个Openstack一个Network,虚拟机无法直接L2互通,形成不了VPC),而且还破坏了Openstack的生态圈和API统一性,并且也导致无法将后续不断发展的社区特性或组件叠加到云平台上,包括Heat、Magnum等。
如果整套Openstack通过几个Cell共享存储Cinder和大二层网络Neutron打通,功能都是没有问题,但是多DC情形下的RPC通信会给运维、管理和Troubleshooting等带来问题;那么Cascading相比Cell到底有什么优势?
第一,级联架构适用于较多组件大规模部署时解决管理性能瓶颈;上文也提及,Cell只针对Nova做了实现,随着Neutron和Cinder等组组件从Nova中独立出来,已经不再适用Cell了,社区也暂时没有看到这方面的进展;所以如果用Cell实现大规模商用,Neutron和Cinder等组件的管理将成为性能瓶颈;而级联架构考虑了基本所有重要组件的级联架构,实现了整体管理性能的瓶颈突破;数据转发面将每个被级联层划分成一个L2的广播域,通过Underlay的L3打通不同的被级联层,实现大二层互联;而且每个被级联层Openstack也是一个故障隔离域,便于运维和定位问题;
第二,级联架构适用于混合云架构;按照公有云比如HWS平台作为公有云、而客户厂家自己是私有云的场景,可以将自己的私有云作为被级联层接入到华为的HWS平台(即HWS平台作为级联层),这样可以实现通过公有云平台来管理的混合云架构;
第三,级联场景适用多种云平台的异构云架构;上述第二点里提及的混合云场景中,客户的私有云作为被级联层可以是不用Openstack来实现的云平台,甚至可以是基于AWS或阿里云等厂家的云平台,从而实现异构云做跨厂商、跨云平台的整体管理解决方案;
第四,级联场景适合不同版本的Openstack的架构;基于Openstack的公有云或私有云管理平台,整体升级和版本兼容性成为可持续性的一个运维点,而级联模式下,被级联层的Openstack版本可以不同,甚至不同级联层的Nova的虚拟化资源可以是不同的虚拟化技术(比如KVM、ESXi、XEN、Hyper-v等等),而Neutron的底层网络实现也可以基于不同的底层网元或管理方式,甚至在不同的被级联Neutron对接不同的SDN Controller,从而实现更为开放的集成模式,更适于多加厂商的参与;
第五,级联架构具备更好的可升级性;由于Openstack级联架构具备良好的异构性,所以在Openstack升级的时候,可以对不同被级联层逐步升级,从而实现不影响业务的正常运行;所以Openstack级联技术架构下,基于Openstack的云平台具备良好的可升级性;
第六,级联架构具备更好的可扩展性;在单Openstack(没有使用Openstack级联场景)对底层服务器进行扩展除了规模有限制外,也需要导致Openstack管理节点的感知,从而存在潜在的风险;而使用级联技术时,先对被级联层进行部署完毕,甚至进行充分的测试后,再连接到级联层进行被管理,从这点来说,Openstack的级联技术更容易横向规模扩展,包括跨DC管理多个Region等,结合多AZ技术实现超大规模云主机的云平台。
当然Openstack级联实现也有些不足的地方,比如实现稍微复杂则需要云平台厂商技术人员有相应水平的技术能力,代码实现也需要更多的优化;所以不上规模的Openstack使用级联似乎性价比没有Cell高;而Cell的能力经过优化到1K台左右则会遇到明显的管理性能瓶颈,这点是不容置疑的,而不经过优化的Openstack云平台性能瓶颈更甚;当然一个私有云1K台物理机亦是不小的规模,但对于大规模公有云,还远远不够且需要更多的优化,而Openstack的级联则提供了一种选择,因为1K台物理机规模在Openstack级联模式下只是一个被级联层Openstack的规模(被级联层使用Cell方式也是一个值得考虑的场景)。
总体来看Openstack的现有实现版本,Cell只是局部的优化方式,而Openstack级联则是解决管理层性能方面的整体架构解决方案,且可商用;而结合社区来看Neutron中的Dragonflow/OVN等提出,已有在解决Neutron管理性能方面因素的考虑,而Dragonflow亦是由华为开源社区团队贡献的,如果后续实现Openstack级联和Dragonflow很好的结合,那么必定是华为对Openstack开源社区的又一重大贡献。
作者:李俊武 华为云计算网络架构和设计部
https://wiki.openstack.org/wiki/OpenStack_cascading_solution
(转)Openstack Cascading和Nova Cell的更多相关文章
- Nova Cell
Nova Cell V2 详解 现在 ,OpenStack 在控制平面上的性能瓶颈主要在 Message Queue 和 Database . 尤其是 Message Queue , 随着计算节点的增 ...
- 在Openstack H版部署Nova Cell 时 ,终端输入nova service-list 和 nova host-list 命令将报错
关于Cell的基本介绍,可以参考贤哥的一篇文章: [OpenStack]G版中关于Nova的Cell http://blog.csdn.net/lynn_kong/article/details/8 ...
- OpenStack 安装:nova服务
上一篇介绍了glance,并且成功创建了一个镜像,这一篇介绍Nova. 首先创建Nova用户,需要记得先source环境变量,然后创建Nova用户,并设置密码为nova [root@linux-nod ...
- 照着官网来安装openstack pike之nova安装
nova组件安装分为控制节点和计算节点,还是先从控制节点安装 1.前提条件,数据库为nova创建库和账户密码来连接数据库 # mysql -u root -p MariaDB [(none)]> ...
- 云计算管理平台之OpenStack计算服务nova
一.nova简介 nova是openstack中的计算服务,其主要作用是帮助我们在计算节点上管理虚拟机的核心服务:这里的计算节点就是指用于提供运行虚拟机实例的主机,通常像这种计算节点有很多台,那么虚拟 ...
- openstack搭建之-nova配置(10)
一. base节点设置数据库 mysql -u root -proot CREATE DATABASE nova_api; CREATE DATABASE nova; CREATE DATABASE ...
- OpenStack 计算服务 Nova计算节点部署(八)
如果使用vmware虚拟机进行部署,需要开启虚拟化:如果是服务器需要在bios上开启. nova计算节点IP是192.168.137.12 环境准备 安装时间同步 yum install ntpdat ...
- OpenStack 计算服务 Nova介绍和控制节点部署(七)
介绍 Nova是openstack最早的两块模块之一,另一个是对象存储swift.在openstack体系中一个叫做计算节点,一个叫做控制节点.这个主要和nova相关,我们把安装为计算节点nova-c ...
- openstack 部署笔记--nova
控制节点 配置用户与服务 $ . admin-openrc $ openstack user create --domain default --password-prompt nova $ open ...
随机推荐
- 160817、Java数据类型以及变量的定义
Java 是一种强类型的语言,声明变量时必须指明数据类型.变量(variable)的值占据一定的内存空间.不同类型的变量占据不同的大小. Java中共有8种基本数据类型,包括4 种整型.2 种浮点型. ...
- 关于git 提交到分支
想必大家对于github并不陌生,但是有时候我们提交到github上的页面,想将静态的页面展示给别人看,所以这个时候,需要创建一个gh-pages的分支,然后利用 https://you github ...
- 巨蟒python全栈开发django13:中间件部分
1.回顾昨日内容 2.session认证装饰器 3.django整个流程 4.中间件简单应用 5.简单统计访问次数 6.中间件其他方法 7.orm单表内容回顾
- 学习即语言的学习 “表示” “presentation”
w 龚升
- 在cli命令行上显示当前数据库,以及查询表的行头信息
在$HIVE_HOME/conf/hive-site.xml文件下加入以下配置文件 <property> <name>hive.cli.print.header</nam ...
- 如何用云存储和CDN加速网站图片视频、阿里云OSS的使用(转)
总有人说阿里云主机带宽小,那只是因为你还停留在单机架构上. 阿里的架构设计,云主机主要用来跑程序的,附件的存储和访问主要靠OSS. 有人又会说了,OSS按存储费+流量双重计费伤不起,只是你不知道OSS ...
- ajax跨域资源共享
一.同域发送数据 略 二.跨域发送数据 1.存在的问题 1.什么是同源策略 同源策略阻止从一个域名上加载的脚本获取或操作另一个域名上的文档属性.也就是说,受到请求的 URL 的域名必须与当前 Web ...
- python基础26 -----python进程及协成
一.进程 1.multiprocessing模块实现多进程并发. 1.1multiprocessing包是Python中的多进程管理包,与threading.Thread类似,它可以利用multipr ...
- 算法题14 小Q歌单,牛客网,腾讯笔试题
算法题14 小Q歌单,牛客网,腾讯笔试题 题目: 小Q有X首长度为A的不同的歌和Y首长度为B的不同的歌,现在小Q想用这些歌组成一个总长度正好为K的歌单,每首歌最多只能在歌单中出现一次,在不考虑歌单内歌 ...
- tcpdump Demo
tcpdump Demo lxw ~$ tcpdump -i eth0 tcpdump: eth0: You don't have permission to capture on that devi ...