天天看點

Ceph對象存儲安裝部署及驗證

今天來玩下Ceph的對象存儲,在開始之前呢,先扯會閑篇,我覺得生活中處處是非結構化資料,最簡單的舉例,下面兩個行業,一個是直播,一個是攝影。

<a href="https://s1.51cto.com/wyfs02/M00/9C/3F/wKioL1lt4DKxx2vuAABjvi0yNDo339.png-wh_500x0-wm_3-wmp_4-s_2917564876.png" target="_blank"></a>

現在直播行業這麼火,不誇張的說甚至每天都會産生一個直播軟體。不單單是視訊流媒體行業,還有現在非常流行的雲攝影,什麼是雲攝影呢?相信經常參會的朋友應該知道,有些現場拍的照片立馬就可以發出來,很是友善,相信以後肯定會火起來。有些細心的朋友應該會看到每張照片都會有水印标示就是V.Photos,這是個什麼鬼?

下面簡單扒一扒這家公司

V.Photos是一家雲攝影服務平台,成立于2015年,主要緻力于為B端商業使用者提供智能便捷的商業攝影和照片同步歸檔管理的專業級方案。

八卦到此結束,biabiabiabia…..

除了,流媒體、照片攝影行業之外,還有醫療、銀行、衛星等行業,都将産生很多很多的非結構化資料。是以看到了對象存儲有如此之大的潛力,促使我們不得不學習下對象存儲。所謂活到老學到老,尤其是我們搞IT的,每天都得學習新技術。

下面我們來看看Ceph對象存儲如何部署

首先呢就是部署一套Ceph環境,這裡就不再贅述了,網上好多安裝文檔,都比較清晰了。

重點說下RGW部分

安裝完叢集之後

1

<code>ceph-deploy </code><code>install</code> <code>--rgw devin-ceph1    </code><code>#因為是測試是以隻用一個rgw</code>

然後建立RGW執行個體

<code>ceph-deploy rgw create devin-ceph1</code>

那麼這時候就OK了,成功後會提示你通路7480端口

<code>http:</code><code>//10</code><code>.0.100.201:7480</code>

你會看到如下内容:

2

3

4

5

6

7

<code>&lt;ListAllMyBucketsResult xmlns=</code><code>"http://s3.amazonaws.com/doc/2006-03-01/"</code><code>&gt;</code>

<code>&lt;Owner&gt;</code>

<code>&lt;ID&gt;anonymous&lt;</code><code>/ID</code><code>&gt;</code>

<code>&lt;DisplayName/&gt;</code>

<code>&lt;</code><code>/Owner</code><code>&gt;</code>

<code>&lt;Buckets/&gt;</code>

<code>&lt;</code><code>/ListAllMyBucketsResult</code><code>&gt;</code>

由于RGW預設采用的是Civetweb,預設端口是7480那有人會說了,那我可不可以修改RGW端口啊。答案肯定是可以的。

修改Ceph配置檔案進行修改。下面看看我的配置檔案

<code>[client.rgw.devin-ceph1]</code>

<code>host = devin-ceph1</code>

<code>rgw_enable_ops_log =</code><code>true</code>

<code>rgw_frontends =</code><code>"civetweb port=80"</code>

<code>rgw dns name =  s3.devin.com</code>

<code>rgw socket path =</code><code>/var/run/ceph-client</code><code>.radosgw.sock</code>

<code>keyring =</code><code>/etc/ceph/ceph</code><code>.client.radosgw.keyring</code>

可以看到我的端口設定成80了。

修改完配置檔案之後同步到個節點然後重新開機rgw服務

<code>ceph-deploy --overwrite-conf config push devin-ceph1 devin-ceph2 devin-ceph3</code>

<code>systemctl restart ceph-radosgw.target</code>

那麼到此RGW安裝完成了,那麼RGW怎麼使用呢?或者說怎麼證明我的RGW是好的?

可能會有人說:你笨啊,剛才都能通路頁面了,就證明成功了呗。

可能又會有人說:光通路個頁面管P用啊,要能用才行。

别急,下面我們來說下兩種方式來玩,一種是S3cmd方式

首先安裝S3cmd

<code>yum –y </code><code>install</code> <code>s3cmd</code>

安裝完之後運作s3cmd --configure進行初始化配置(說白了就是生成個配置檔案)

然後會提示你輸入access key和secret key,沒玩過ASW相關産品的童鞋可能會說,這倆key是幹嘛的。用行話來說呢簡稱AK和SK。所謂key嘛就是用來認證和驗證的。我們來看看如何生成。

你要用工具連接配接RGW那麼首先得有使用者吧,那來建立個使用者

<code>radosgw-admin user create —uid=devin —display-name=“Devin” —[email protected]</code>

建立完之後會有AK和SK的資訊,記得複制下待會還要用。

那麼複制完之後在進行s3cmd –configure配置

配置完之後就可以開始玩了。附贈s3cmd常用指令

<code>s3cmd </code><code>ls</code>  <code>#檢視可用的bucket</code>

<code>s3cmd mb s3:</code><code>//devin_bucket</code>  <code>#建立bucket,且bucket名字是唯一的,不能重複</code>

<code>s3cmd </code><code>ls</code> <code>s3:</code><code>//devin_bucket</code>  <code>#列出bucket内容</code>

<code> </code> 

<code>s3cmd put devin.txt s3:</code><code>//devin_bucket</code>  <code>#上傳本地file到指定的bucket</code>

<code>s3cmd put --acl-public devin.txt s3:</code><code>//devin_bucket</code>  <code>#上傳本地file到指定的bucket,并開啟file的匿名通路權限</code>

<code>s3cmd get s3:</code><code>//devin_bucket/devin</code><code>.txt  </code><code>#下載下傳file到本地</code>

可能在玩的時候會遇到問題,那麼怎麼排錯呢?

可以在s3cmd的指令後面加上-d 也就是開啟debug然後排錯。

遇到最多的問題就是解析問題。那麼如何解決解析的問題呢?

然後還有一種方式,就是python-boto方式

首先安裝python-boto

<code>yum </code><code>install</code> <code>python-boto</code>

然後建立個python腳本

<code>vi</code> <code>s3test.py</code>

内容如下:

8

9

10

11

12

13

14

15

16

17

<code>import</code> <code>boto.s3.connection</code>

<code>access_key </code><code>=</code> <code>'Y2S78LKZ1ROD0MGIDUBC'</code>

<code>secret_key </code><code>=</code> <code>'LyGCgoydLI2MGA7C0PtynyfBa3aKODNYQ0sHDMtP'</code>

<code>conn </code><code>=</code> <code>boto.connect_s3(</code>

<code>       </code><code>aws_access_key_id</code><code>=</code><code>access_key,</code>

<code>       </code><code>aws_secret_access_key</code><code>=</code><code>secret_key,</code>

<code>        </code><code>host</code><code>=</code><code>'s3.devin.com'</code><code>, port</code><code>=</code><code>80</code><code>,</code>

<code>       </code><code>is_secure</code><code>=</code><code>False</code><code>, calling_format</code><code>=</code><code>boto.s3.connection.OrdinaryCallingFormat(),</code>

<code>       </code><code>)</code>

<code>bucket </code><code>=</code> <code>conn.create_bucket(</code><code>'devin-bucket'</code><code>)</code>

<code>for</code> <code>bucket </code><code>in</code> <code>conn.get_all_buckets():</code>

<code>    </code><code>print</code><code>"{name} {created}"</code><code>.</code><code>format</code><code>(</code>

<code>       </code><code>name</code><code>=</code><code>bucket.name,</code>

<code>       </code><code>created</code><code>=</code><code>bucket.creation_date,</code>

<code>)</code>

這裡要注意修改的地方就是AK和SK還有host域名

完事之後就是執行下腳本

<code>python s3test.py</code>

腳本大概意思就是說導入boto s3子產品然後借用AK、SK來進行驗證建立一個名為devin-bucket的bucket,建立完成之後并列印出來結果。

OK,本文Ceph對象存儲到此就講述結束了下篇文章來講述如何對接OwnCloud網盤應用。

【本文由“Ceph中國社群”釋出,2017年8月15日】

<b>本文轉自Devin 51CTO部落格,原文連結:http://blog.51cto.com/devingeng/1945048</b>

繼續閱讀