OpenStack 有一套自上而下的资源组织概念,用于大规模云平台中的节点划分和管理,如下图。
Regions
Region 更像是一个地理上的概念,每个 region 有自己独立的 endpoint,regions 之间完全隔离,但是多个 regions 之间共享同一个 keystone 和 dashboard。
所以除了提供隔离的功能,region 的设计更多侧重地理位置的概念,用户可以选择离自己更近的 region 来部署自己的服务。
Cells
Cell 是 openstack 一个非常重要的概念,主要用来解决 openstack 的扩展性和规模瓶颈。众所周知,openstack 是由很多的组件通过松耦合构成,那么当达到一定的规模后,某些模块必然成为整个系统的瓶颈。比较典型的组件就是 DB 和 MQ 了,所以,每个 cell 有自己独立的 DB 和 MQ。
在 Newton 版本引入的 cell v2 版本针对前面图中 v1 的流程做了进一步优化。
可以看到 :
api 和 cell 有了明显的边界。api 层面只需要数据库,不需要 Message Queue。
nova-api 现在依赖 nova_api 和 nova_cell0 两个数据库。
nova-scheduler 服务只需要在 api 层面上安装,cell 不需要参数调度。这样实现了一次调度就可以确定到具体在哪个 cell 的哪台机器上启动。
cell 里面只需要安装 nova-compute 和 nova-conductor 服务,和其依赖的 DB 和 MQ。
所有的 cell 变成一个扁平架构,比之前的树形多层父子架构要简化很多。
api 上面服务会直接连接 cell 的 MQ 和 DB, 所以不需要类似 nova-cell 这样子的额外服务存在,性能上也会有及大的提升。
Availability Zones
AZ 可以简单理解为一组节点的集合,这组节点具有独立的电力供应设备,比如一个个独立供电的机房,一个个独立供电的机架都可以被划分成 AZ。所以,AZ 主要是通过冗余来解决可用性问题。
AZ 之间共享所有的 nova 服务和 keystone 服务。
另外,AZ 是用户可见的一个概念,用户在创建 instance 的时候可以选择创建到哪些 AZ 中,以保证 instance 的可用性。
Host Aggregates
Host Aggregates 也是一组节点的组合,但强调这组节点具有共同的属性,比如:cpu 是指定类型的一组节点,disks 是 ssd 的一组节点,os 是 linux 或 windows 的一组节点等等。
Host Aggregates 是用户不可见的概念,主要用来给 nova-scheduler 通过某一属性来进行 instance 的调度,比如将数据库服务的 instances 都调度到具有 ssd 属性的 Host Aggregate 中,又或者让某个 flavor 或某个 image 的 instance 调度到同一个 Host Aggregates 中。
Host Aggregates 之间共享 keystone 和所有的 nova 服务。
领取专属 10元无门槛券
私享最新 技术干货