分享

Openstack弹性块存储服务Cinder

徐超 发表于 2015-1-10 16:35:41 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 0 20303
问题导读
1、如何看待Cinder的主要组成组件?
2、如何查看qpid当前活跃的queue?
3、目前Cinder-scheduler支持的filter包括哪些?





Cinder 背景
Openstack是当前热门的云服务平台,目前各大企业及个人都积极参与的开源项目,具有Openstack是由NASA和RackSpace合作研发的云计算平台,可以帮助企业实现类似于Amazon EC2和S3的云服务基础架构服务即Iaas(Infrastructure as a Service)平台。
Cinder是Openstack中的一个重要组件,为Openstack提供块存储服务。本文主要目的是使开发者或者用户能够初步了解cinder的运行服务机制,主要描述Cinder的基本架构组成,以及cinder各组件主要功能和各组件之间的通信机制。
Cinder服务是Openstack的一个重要组件,为Openstack提供块存储服务。Cinder是Openstack Folsom版本开始由Nova-volume分离出来。Cinder为用户提供的块存储是在整个生命周期中永久存在的。


Cinder Architecture
Cinder主要由3个组件组成,cinder-api, cinder-scheduler和cinder-volume,如图1所示。
1.png
图1 Cinder Architecture

Cinder-api
Cinder-api是cinder服务的endpoint,提供rest接口,负责处理client请求,并将请求发送至对应的Message Queue。

Cinder-scheduler
负责cinder请求调度,其核心部分就是scheduler_driver, 作为scheduler manager的driver,负责具体的调度处理,grizzly版本的cinder-scheduler部分提供了三个scheduler driver分别是:
  • ChanceScheduler: 随机选取cinder-volume service创建cinder volume
  • SimpleScheduler: 根据availability zone 和 cinder-volume service的capacity进行选择
  • FilterScheduler: 可以选择具体的filter规则,满足filter规则的cinder-volume service将会通过筛选,创建cinder volume

默认Cinder-Scheduler使用FilterScheduler作为调度volume service的driver。
FilterScheduler主要机制是filter 和weighting。
Filter即cinder-scheduler分析用户创建volume请求,删选cinder-volume service

目前Cinder-scheduler支持的filter包括:
  • CapabilitiesFilter:根据用户创建的volume type类型筛选cinder-volume service
  • RetryFilter:过滤创建volume失败的cinder-volume service,在reschedule阶段起作用。
  • CapacityFilter:过滤可用容量不足以满足用户请求的cinder-volume service
  • JsonFilter:支持Json语法自定义filter规则,选择cinder-volume service
  • AvailabilityZoneFilter:根据cinder-volume属性AvailabilityZone选择指定Zone的cinder-volume service。 Cinder-volume service的AvailabilityZone是通过配置文件storage_availability_zone进行指定。


使用cinder service-list可以查看cinder service所在的AvailabilityZone


Weighing即根据cinder-volume service的可用资源等情况赋予权重,目前支持的Weigher:
CapacityWeigher:cinder-vloume service 的可用Capacity越多,weight之越大。
1.png

图2 cinder-scheduler

FilterScheduler具有很大的灵活性,开发者可以根据自身需要定义filter和weigher,满足不同的调度需求。如图2所示,经过filter筛选符合要求的cinder-volume service,然后根据cinder-volume 的权重进行排序,最终选择权重值最大的cinder-volume service用于提供volume存储服务。


Cinder-volume
Cinder-volume Service负责具体的volume创建请求处理,由不同后端存储提供volume存储空间。目前各大存储厂商已经积极地将存储产品的driver贡献到cinder社区。
目前支持的后端存储系统,可参见:
https://wiki.openstack.org/wiki/CinderSupportMatrix

Cinder通信机制
Cinder api提供rest接口,cinder client申请cinder service是通过rest接口。用户可以参照官方文档http://docs.openstack.org/api/op ... torage/2.0/content/

Cinder内部的通信机制使用了Message Queue,支持AMQP协议的
AMQP model
1.png


  1. # qpid-tool localhost
  2. Management Tool for QPID
  3. qpid:help
复制代码

可以查看qpid-tool可以使用的命令,如list
  1. qpid: list queue #查看qpid当前活跃的queue
复制代码

由于queue过多,这里仅是与cinder相关的几个queue
  1. ID   Created   Destroyed  Index
  2. ======================================================================
  3. 746  07:10:35  -          1067.cinder-scheduler
  4. 747  07:10:35  -          1067.cinder-scheduler:devr1n15
  5. 748  03:08:12  -          1067.cinder-scheduler:localhost.localdomain
  6. 749  04:02:23  -          1067.cinder-scheduler_fanout_3c8a85fa3fb9411192ac9dfeea4b1d40
  7. 750  08:42:14  -          1067.cinder-volume
  8. 751  08:50:37  -          1067.cinder-volume:cinder01
  9. 752  08:42:14  -          1067.cinder-volume:devr1n15
  10. 753  08:42:14  -          1067.cinder-volume_fanout_cc3699bd831940b8911c0ceab201bbd6
  11. Qpid:list exchange
  12. ID   Created   Destroyed  Index
  13. ======================================================================
  14. 616  07:10:35  -          1067.cinder-scheduler_fanout
  15. 617  07:10:35  -          1067.cinder-volume_fanout
复制代码




没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条