Openstack弹性块存储服务Cinder

http://zhumeng8337797.blog.163.com/blog/static/100768914201471244025163/


Cinder 背景

Openstack是当前热门的云服务平台,目前各大企业及个人都积极参与的开源项目,具有Openstack是由NASARackSpace合作研发的云计算平台,可以帮助企业实现类似于Amazon EC2S3的云服务基础架构服务即Iaas(Infrastructure as a Service)平台。

CinderOpenstack中的一个重要组件,为Openstack提供块存储服务。本文主要目的是使开发者或者用户能够初步了解cinder的运行服务机制,主要描述Cinder的基本架构组成,以及cinder各组件主要功能和各组件之间的通信机制。

Cinder服务是Openstack的一个重要组件,为Openstack提供块存储服务。CinderOpenstack Folsom版本开始由Nova-volume分离出来。Cinder为用户提供的块存储是在整个生命周期中永久存在的。

Cinder Architecture

Cinder主要由3个组件组成,cinder-api, cinder-schedulercinder-volume,如图1所示。

 

1 Cinder Architecture

 

Openstack弹性块存储服务Cinder_第1张图片
 

 

 

Cinder-api

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

Cinder-scheduler

负责cinder请求调度,其核心部分就是scheduler_driver, 作为scheduler managerdriver,负责具体的调度处理,grizzly版本的cinder-scheduler部分提供了三个scheduler driver分别是:

ChanceScheduler: 随机选取cinder-volume service创建cinder volume

SimpleScheduler: 根据availability zone 和 cinder-volume servicecapacity进行选择

FilterScheduler: 可以选择具体的filter规则,满足filter规则的cinder-volume service将会通过筛选,创建cinder volume

默认Cinder-Scheduler使用FilterScheduler作为调度volume servicedriver

FilterScheduler主要机制是filter weighting

Filtercinder-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选择指定Zonecinder-volume service。 Cinder-volume serviceAvailabilityZone是通过配置文件storage_availability_zone进行指定。

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


 

Weighing即根据cinder-volume service的可用资源等情况赋予权重,目前支持的Weigher

CapacityWeighercinder-vloume service 的可用Capacity越多,weight之越大。

2 cinder-scheduler

Openstack弹性块存储服务Cinder_第2张图片
 

FilterScheduler具有很大的灵活性,开发者可以根据自身需要定义filterweigher,满足不同的调度需求。如图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/openstack-block-storage/2.0/content/

 

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

AMQP model

Openstack弹性块存储服务Cinder_第3张图片

Openstack弹性块存储服务Cinder_第4张图片

# qpid-tool localhost

Management Tool for QPID

qpid:help

可以查看qpid-tool可以使用的命令,如list

Openstack弹性块存储服务Cinder_第5张图片
 

qpid: list queue #查看qpid当前活跃的queue

由于queue过多,这里仅是与cinder相关的几个queue

ID   Created   Destroyed  Index

======================================================================

746  07:10:35  -          1067.cinder-scheduler

747  07:10:35  -          1067.cinder-scheduler:devr1n15

748  03:08:12  -          1067.cinder-scheduler:localhost.localdomain

749  04:02:23  -          1067.cinder-scheduler_fanout_3c8a85fa3fb9411192ac9dfeea4b1d40

750  08:42:14  -          1067.cinder-volume

751  08:50:37  -          1067.cinder-volume:cinder01

752  08:42:14  -          1067.cinder-volume:devr1n15

753  08:42:14  -          1067.cinder-volume_fanout_cc3699bd831940b8911c0ceab201bbd6

Qpid:list exchange

ID   Created   Destroyed  Index

======================================================================

616  07:10:35  -          1067.cinder-scheduler_fanout

617  07:10:35  -          1067.cinder-volume_fanout

你可能感兴趣的:(Openstack弹性块存储服务Cinder)