OpenStack大规模部署详解( 二 )


支持将集群划分为不同的,所有的除了共享、、Swift服务,每个都是一个完整的环境,其架构如下:

OpenStack大规模部署详解

文章插图
部署时只需要部署一套公共的和服务,其它服务按照单方式部署即可,通过指定 。用户在请求任何资源时必须指定具体的区域 。采用这种方式能够把分布在不同的区域的资源统一管理起来,各个区域之间可以采取不同的部署架构甚至不同的版本 。其优点如下:
但该方案也存在明显的不足:
多方案通过把一个大的集群划分为多个小集群统一管理起来,从而实现了大规模物理资源的统一管理,它特别适合跨数据中心并且分布在不同区域的场景,此时根据区域位置划分,比如北京和上海 。而对于用户来说,还有以下好处:
但是需要注意的是,多本质就是同时部署了多套环境,确切地说并没有解决单集群的大规模部署问题 。
3. 方案以及项目
方案[9]是由国内华为提出的用于支持场景包括10万主机、百万虚机、跨多DC的统一管理的大规模集群部署 。它采取的策略同样是分而治之,即把原来一个大的集群拆分成多个小集群,并把拆分的小集群级联起来统一管理,其原理如图:
OpenStack大规模部署详解

文章插图
用户请求资源时,首先向顶层 API发起请求,顶层的会基于一定的调度策略选择底层的其中一个,被选中的底层负责实际的资源分配 。
该方案号称支持跨多达100个DC,支持10万个计算节点部署规模,能同时运行100万个虚拟机[10] 。但该方案目前仍处于开发和测试阶段,尚无公开的实际部署案例 。目前该方案已经分离出两个独立的big-tent项目,一个是,专门负责网络相关以及对接,另一个项目是,为多 集群提供统一的API网关 。
4.Nova Cells方案
前面提到的多方案是基于环境切分,它对用户可见而非透明的,并且单集群依然不具备支撑大规模的能力和横向扩展能力 。而Nova Cells方案是针对服务级别划分的,其最终目标是实现单集群支撑大规模部署能力和具备灵活的扩展能力 。Nova Cells方案是社区支持的方案,因此本文将重点介绍,并且会总结下在实际部署中遇到的问题 。
4.1 Nova Cells架构和原理介绍
Nova Cells模块是在G版本中引入的,其策略是将不同的计算资源划分成一个个Cell,并以树的形式组织,如图所示:
OpenStack大规模部署详解

文章插图
图2 Nova Cell架构
从图中看出,Cells的结构是树形的,一个Cell可能包含若干子Cell,以此逐级向下扩展 。每个Cell都有自己独立的消息队列和数据库,从而解决了消息队列和数据库的性能瓶颈问题,Cell与Cell之间主要通过Nova-Cells负责通信,一层一层通过消息队列传递消息,每个Cell都需要知道其 Cell以及所有孩子Cells的消息队列地址,这些信息可以保存到该Cell的数据库中,也可以通过json文件指定:
{"parent": {"name": "parent","api_url": "http://api.example.com:8774","transport_url": "rabbit://rabbit.example.com","weight_offset": 0.0,"weight_scale": 1.0,"is_parent": true},"cell1": {"name": "cell1","api_url": "http://api.example.com:8774","transport_url": "rabbit://rabbit1.example.com","weight_offset": 0.0,"weight_scale": 1.0,"is_parent": false},"cell2": {"name": "cell2","api_url": "http://api.example.com:8774","transport_url": "rabbit://rabbit2.example.com","weight_offset": 0.0,"weight_scale": 1.0,"is_parent": false}}
根据节点所在树中位置以及功能,分为两种Cell类型:
注意: 所有的Nova服务都隶属于某个Cell中,所有的Cells都必须指定Cell类型 。