Chinaunix首页 | 论坛 | 博客
  • 博客访问: 431228
  • 博文数量: 83
  • 博客积分: 2622
  • 博客等级: 少校
  • 技术积分: 1345
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 08:59
个人简介

一直在努力

文章分类

全部博文(83)

文章存档

2014年(3)

2013年(9)

2012年(46)

2010年(25)

分类: 云计算

2013-10-18 10:12:20

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

 


 

 

 

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


 

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

Cinder-volume

Cinder-volume Service负责具体的volume创建请求处理,由不同后端存储提供volume存储空间。目前各大存储厂商已经积极地将存储产品的driver贡献到cinder社区。

目前支持的后端存储系统,可参见:

Cinder通信机制

Cinder api提供rest接口,cinder client申请cinder service是通过rest接口。用户可以参照官方文档

 

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

AMQP model



# qpid-tool localhost

Management Tool for QPID

qpid:help

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


 

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

阅读(7738) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~