Ceph分布式存储之三-S3接口编程
目录
- 开发环境与基本概念(2018-02)
- 搭建RGW环境(2018-2-07)
- 安装配置S3 Client(2018-2-07)
- 测试S3 Client及常用命令(2018-2-07)
- C#语言调用S3接口的实现方式(2018-02)
- 基本框架及调用流程(2018-2-07)
- 主要调用流程分析(2018-2-07)
- S3接口主要的类及方法(2018-2-07)
(一)开发环境准备
Ceph提供了三种存储类型:块存储、文件存储和对象存储,本文主要介绍对象存储的RGW基本原理和应用场景。
对象存储(云存储)是面向对象/文件的、海量的互联网存储。对象存储里的对象是经过封装了的文件,在对象存储系统里,不能直接打开/修改文件,但可以像ftp一样上传文件,下载文件等。另外,对象存储没有像文件系统那样有一个很多层级的文件结构,而是只有一个”桶”的概念(也就是存储空间),“桶”里面全部都是对象,是一种非常扁平化的存储方式。 其最大的特点就是它的对象名称就是一个域名地址,一旦对象被设置为“公开”,所有网民都可以访问到。对象存储最主流的使用场景,就是存储网站、移动app等互联网/移动互联网应用的静态内容(视频、图片、文件、软件安装包等等)。
什么是RGW
RGW为Rados Gateway的缩写,ceph通过RGW为互联网云服务提供商提供对象存储服务。RGW在librados之上向应用提供访问ceph集群的RestAPI,支持Amazon S3和openstack swift两种接口。对RGW最直接的理解就是一个协议转换层,把从上层应用符合S3或Swift协议的请求转换成rados的请求,将数据保存在rados集群中。
基本概念
zone:包含多个RGW实例的一个逻辑概念。zone不能跨集群。同一个zone的数据保存在同一组pool中。
zonegroup:一个zonegroup如果包含1个或多个zone。如果一个zonegroup包含多个zone,必须指定一个zone作为master zone,用来处理bucket和用户的创建。一个集群可以创建多个zonegroup,一个zonegroup也可以跨多个集群。
realm:一个realm包含1个或多个zonegroup。如果realm包含多个zonegroup,必须指定一个zonegroup为master zonegroup, 用来处理系统操作。一个系统中可以包含多个realm,多个realm之间资源完全隔离。
user:对象存储的使用者,默认情况下,一个用户只能创建1000个存储桶。
bucket:存储桶,用来管理对象的容器。
object:对象,泛指一个文档、图片或视频文件等,尽管用户可以直接上传一个目录,但是ceph并不按目录层级结构保存对象,ceph所有的对象扁平化的保存在bucket中。
基本架构及访问流程
应用通过RGW访问集群流程如下:
● S3或Swift 应用通过http协议发送请求到RGW。
● RGW从http请求中解析出s3或swift协议数据,调用librados接口,将对应的请求发送到rados集群中。
注:图中load balance非必须,只要在存在多个RGW做负荷分担时需要。
1.2)安装配置S3 Client (参考指南)
1.3)S3 Client常用命令
❶ 创建一个桶