Ceph分布式存储之三-S3接口编程

Posted 试看将来的环球,必将是代码的世界。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ceph分布式存储之三-S3接口编程相关的知识,希望对你有一定的参考价值。

目录

  1. 开发环境与基本概念(2018-02)
    1. 搭建RGW环境(2018-2-07)
    2. 安装配置S3 Client(2018-2-07)
    3. 测试S3 Client及常用命令(2018-2-07)
  2. C#语言调用S3接口的实现方式(2018-02)
    1. 基本框架及调用流程(2018-2-07)
    2. 主要调用流程分析(2018-2-07)
    3. S3接口主要的类及方法(2018-2-07)
  3. 自定义特性在程序设计中的应用(2018-02)
    1. 递归调用过程分析(2018-2-07)
    2. 利用尾递归改善递归程序的效率(2018-2-07)
    3. 函数的调用与返回本质(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做负荷分担时需要。
image9

1.1)搭建RGW环境
如下图为RGW网关搭建流程图
image14

1.2)安装配置S3 Client   (参考指南
image19

1.3)S3 Client常用命令

 

❶  创建一个桶

 

以上是关于Ceph分布式存储之三-S3接口编程的主要内容,如果未能解决你的问题,请参考以下文章

Ceph分布式radosgw对象存储融合Swift S3的访问应用

ceph

使用COSBench工具对ceph s3接口进行压力测试

ceph学习笔记之三Object

CEPH快速部署(Centos7+Jewel)

Ceph分布式存储系统优化分析