1. 程式人生 > >對ceph radosgw的一些理解

對ceph radosgw的一些理解

Ceph本質上就是一個rados,利用命令rados就可以訪問和使用ceph的物件儲存,但作為一個真正產品機的物件儲存服務,通常使用的是Restful api的方式進行訪問和使用。而radosgw其實就是這個作用,安裝完radosgw以後,就可以使用api來訪問和使用ceph的物件儲存服務了。

首先明白一下架構,radosgw其實名副其實,就是rados的一個閘道器,作用是對外提供物件儲存服務。本質上radosgw(其實也是一個命令)和rbd命令一樣,其實是ceph叢集的客戶端。只不過,radosgw即作為rados的客戶端,同時又提供http restful介面,作為服務端供使用者使用。

Radosgw對使用者而言就是一個http restful的應用,因此本質上來講,對其進行使用就是通過http的方式,但顯然每次都要使用者構建http訪問的url和headers不是一個很方便的方式,因此radosgw相容了通用的物件儲存介面,分別是亞馬遜的s3和openstack的swift,這也就是說你可以用swift或者s3的客戶端來訪問radosgw。

Radosgw包含兩個命令列工具,一個是radosgw,這個是用來啟動radosgw服務的腳步,是一個二進位制檔案;另外一個是radosgw-admin,這是用來管理radosgw的賬號的一個命令列工具,主要用來建立、檢視、修改radosgw的賬號資訊。

注意,radowgw的賬號資訊僅僅是對radosgw的使用者而言,這個和ceph中的使用者不是一個概念。

Radosgw作為ceph叢集(rados)的客戶端,因此他在ceph中有一個賬號,通常叫做client.radosgw.gateway。在啟動radosgw這個服務時,會讀取ceph.conf中[client.radosgw.gateway]這個section。

Radosgw有自己的賬號管理系統,可以使用radosgw-admin來建立和維護賬號,之後可以使用curl、swift、s3等方式指明賬號名和密碼就可以訪問,不確定s3怎麼樣,但如果用swift的話,其實和openstack中類似,先通過賬號和密碼想radosgw的auth系統獲取一個token,然後用這個token再radosgw的儲存系統。

另外,radosgw是可以和keystone進行整合的,那這裡就有一個問題,兩個賬號管理系統中的賬號就有一個對映關係。實驗發現,keystone中的每個tenant都對應radosgw中的一個賬號,其賬號uid就是keystone中的tenant id。

我們用Radosgw和keystone進行整合,建立對應的endpoint,客戶端使用swift介面。操作就和和使用真正的swift+keystone沒有任何差別,作為一個使用者無法感知到後端究竟真是一個swift還是radosgw。但就附加功能還是有區別的,我們知道swift除了物件儲存本身的上傳、下載、刪除等操作為,還有很多其他附加功能,比如object 過期設定、tempurl、staticweb等,這些都是通過在proxy節點增加middleware來實現的,radosgw支援swift一些middleware,但並不完全支援。由於radosgw也是c++開發的,只會寫python的我,無法瞭解radosgw中這些middleware是如何支援的。

好吧,就說這麼多了,先行這麼瞭解,以後有用到,再做進一步研究。

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

有個專案中要用到,重新讀文件以及動手驗證,有些新的認識,補充如下。

ceph radosgw作為物件儲存,同時提供swift介面和S3介面。那麼這兩種介面使用上有什麼不同的,我們從以下幾個方面分析下。

1、訪問不同的介面需要的使用者建立方式不同

用使用radosgw,肯定就需要一個賬號資訊,這個賬號是由radosgw-admin這個程式來建立的。但根據要訪問的介面不同,建立賬號略有差異。

建立訪問s3介面的使用者,只需要一個命令radosgw-admin user create;

建立訪問Swift介面的使用者,除了上面的命令,還需要radosgw-admin subuser create。這裡之所以要用到subuser,是為了和openstack裡的project及user形成對應關係。

2、訪問不同介面需要的使用者資訊不同

rados ls -p default.rgw.users.uid命令可以檢視radosgw-admin建立了哪些使用者

radosgw-admin  user info --uid=XXX  可以檢視使用者的詳細資訊

訪問S3介面,需要用到的是access_key和secret_key;

訪問Swift介面,需要用secret_key獲取一個token,然後用token去訪問物件儲存系統。

3、訪問不同介面的命令列工具不同

不同什麼介面,都是一個http服務,因此總是可以利用curl命令去訪問各種介面,但是需要提供的Header不同。curl雖然貌似萬能,但實際上要拼裝完整的API引數還是比較麻煩的,這個時候可以用針對不同介面的工具。

訪問S3介面,用s3cmd命令。

安裝:pip install s3cmd

配置檔案: ~/.s3cfg

[[email protected] ~]# cat .s3cfg
[default]
access_key = 2LEK1H66CX3CJNNWIP9G
host_base = 127.0.0.1:8088
host_bucket = 127.0.0.1:8088/%(bucket)
secret_key = 5X5QAXUmo7goXD6508OjkEMiaS0HIqLUIxyEVBoc
use_https = False

訪問Swift介面,用swift命令。

如下方式:

swift  -A http://127.0.0.1:8088/auth  -U wyt:wuyuting -K'wytL5CuWz25I7n48rFxUJifBoQo82xclpEI3ACSA' list

相關推薦

ceph radosgw一些理解

Ceph本質上就是一個rados,利用命令rados就可以訪問和使用ceph的物件儲存,但作為一個真正產品機的物件儲存服務,通常使用的是Restful api的方式進行訪問和使用。而radosgw其實就是這個作用,安裝完radosgw以後,就可以使用api來訪問和使用ceph

軟件開發中MVC的一些理解

https 我們 直接 mod 一個 span 最大的 控制器 用戶 接口隔離 通俗一點講,接口隔離就是當一個類需要繼承另一個類時, 如果被繼承的類中有繼承的類用不到的方法或者屬性時,就不要去實現這個繼承。如果真的情非得已必須要繼承,那麽也需要從被繼承的類中再提取出一個只包

[Unity基礎]Rotation的一些理解與例項(一)

using UnityEngine; using System.Collections; public class TestRotation : MonoBehaviour{ // Update is called once per frame void Updat

Promise的一些理解

摘取部分指令碼之家的描述: Promise核心說明 儘管Promise已經有自己的規範,但目前的各類Promise庫,在Promise的實現細節上是有差異的,部分API甚至在意義上完全不同。但Promise的核心內容,是相通的,它就是then方法。在相關術語中,promi

學習總結HTML CSS JAVASCRIPT,三劍客的一些理解

網頁設計一般用到三大技術 html ,css ,javascript; HTML: 相當於一個文件,裡面是要給使用者的資訊。使用他提供的一些標籤,來把你想傳遞給使用者的資訊進行合理編排,使資訊更好的傳遞給使用者。 CSS: 相當於把這個文件進行修飾,美化實

xgboost的一些理解

xgboost 簡介 xgboost 的全稱是eXtreme Gradient Boosting,由華盛頓大學的陳天奇博士提出,在Kaggle的希格斯子訊號識別競賽中使用,因其出眾的效率與較高的預測準確度而引起了廣泛的關注。 與GBDT的區別 GBDT演算

vue2.0API的一些理解

Vue API 全域性配置(Vue.config) Vue.config是一個與全域性配置有關的物件,可以在啟動應用之前修改下列屬性。 1.silent 型別: Boolean  取消Vue所有的日誌和警告 Vue.config.silent = false 2

[Unity基礎]Rotation的一些理解與例項(二)

第一人稱相機觀察: using UnityEngine; using System.Collections; //第一人稱相機觀察 public class CameraObserve : Mono

Giraph的一些理解

對Giraph的一些理解 這兩天又重新看了一下Giraph原始碼,對整體架構的理解又有了新的認識和理解,下面逐點來說。 一、          Giraph本質的理解: 大家都知道,Giraph對使用者來講可能是一個基於Pregel模型的圖運算專案,但是對於Hadoop來講

Android View的一些理解

這幾天寫了一個在View上模擬一個自由落體運動的小球的Demo,學到了不少東西,也對View有了一定的理解,寫來與大家分享,有錯的地方請大家指出。 Android中的View類是用來畫圖的,自定義一個類繼承View類的話就要實現一個OnDrawf方法,這個方法和Java裡面

演算法——個人演算法的一些理解

                     個人對演算法的一些理解       在學校的同學們之間,演算法總是被放在一個非常高的位置,有多高呢?嗯...就是非常非常高啦,高到有人只要能說出幾個非常牛掰的和演算法有關的名詞,比如NP完全問題啦、模擬退火啦就覺得自己是大神了(其實

Json的一些理解

var 寶馬 pla https 接收 com json字符串 code range 標準json格式:{"name":"王大昭","url":"https://www.cnblogs.com/codezhao/"} var obj={"name":"王大昭","url":

ThreadLocal的一些理解

ThreadLocal也是在面試過程中經常被問到的,本文主要從以下三個方面來談對ThreadLocal的一些理解: ThreadLocal用在什麼地方 ThreadLocal一些細節 ThreadLocal的最佳實踐 ThreadLocal用在什麼地方? 討論ThreadLocal用在什麼地方前,我們先明

協程的一些理解

quasar 習慣 -h 獨立 mil 相關 ots clas 性能 協程協程(coroutine)最早由Melvin Conway在1963年提出並實現,一句話定義:協程是用戶態的輕量級的線程線程和協程線程和協程經常被放在一起比較;線程一旦被創建出來,編寫者是無法決定什麽

Thymeleaf的一些籠統介紹和理解

良好的 let serve 模板 方式 系列 希望 現在 溢出 (隨手記錄的,,可能沒那麽易看,sorry le) 先大概介紹一下關於Thymeleaf的概念和理解:首先Thymeleaf模板引擎(換句話說他是現代服務器端的Java模板引擎,) 他所對應的主要作用(因為也是

php裡的Session和Cookie的一些理解

Cookie是客戶端的儲存空間,由瀏覽器來維持。具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於才伺服器端保持狀態的方案在客戶端也需要儲存一個標識,所以session機制可能需要藉助於cookie機制來達到儲存標識的目

Image caption的一些理解(看圖說話)

1. 背景 ​ 在計算機視覺中,影象分類和目標檢測任務是比較成熟的領域,已經應用到實際的產品領域。而“看圖說話”要實現的功能是,給定一張影象,計算機能告訴我們圖片的內容,顯然,這會使一個比較複雜的任務,因為它涉及到了如下的子任務: 1)檢測影象中的目標; 2)目標的屬性,比如

GAN網路公式推導的一些理解

詳見https://blog.csdn.net/mr_tyting/article/details/79336802 這段公式表示,首先固定生成器,也就是G的網路引數,然後判別器D要使V的值儘可能大,也就是真實樣本和造假樣本的區別要儘可能大(故意找茬)。然後關於這個V函式的構造其實也挺好理解的,

Day 1 python學習,個人計算機硬體的一些理解

  1. 什麼是語言  語言是一個事物與另外一個事物溝通的介質  python則是人(程式設計師)與計算機溝通的介質   2. 什麼是程式設計  程式設計就是程式設計師將自己想要讓計算機做的事情用程式語言翻譯出來寫到一系列的檔案中  

View繪製流程的一些理解

這裡只是記錄一下個人對View繪製這一塊的理解,寫的會比較粗糙,如果想要詳細瞭解,請參考如下部落格:  http://blog.csdn.net/yanbober/article/details/46128379 在view的繪製過程中,一般會分如下三個過程:  measur