目錄
- 開發環境與基本概念(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常用命令
❶ 創建一個桶