Ceph物件儲存RGW架構及安裝實戰

2021-09-23 07:53:57 字數 4129 閱讀 7857

我們知道ceph可以提供塊、檔案和物件三種形態的儲存。而rgw就是提供物件儲存的閘道器,也即物件儲存閘道器。所謂物件儲存閘道器,也就是物件儲存的入口,本質上是乙個http伺服器,與nginx和apache無異。通過這個入口,使用者可以通過http協議,以restful的方式訪問ceph的物件儲存。

ceph rgw的整體架構如圖1所示,物件儲存閘道器實際上是呼叫librados的api來實現資料的儲存和讀取。而該閘道器同時提供了相容aws s3和openstack swift的物件儲存訪問介面(api)

圖1 rgw整體架構

圖2 物件儲存資料組織

今天我們主要除了介紹ceph物件儲存閘道器基本架構外,我們重點介紹一下如何在幾個ceph集群上部署乙個rgw,並且通過swift客戶端進行訪問。

為了簡化環境,本文使用的是2副本ceph集群,在實際生產中通常是3副本。另外,本文使用的是本地虛擬機器,也就是通過virtualbox或者其它虛擬化平台安裝的虛擬作業系統。本文作業系統版本為centos 7.4。如圖3所示,我們的rgw安裝在ceph-s節點。

圖3 ceph集群

進入安裝ceph集群的時候建立的目錄中,本文之前的目錄為mycluster,因此進入該目錄。

$ cd my-cluster
rgw預設使用civetweb作為其web sevice,而civetweb預設使用埠7480提供服務,如果想修改埠(如80埠),就需要修改ceph的配置檔案。在配置檔案中增加乙個section。

[client.rgw.ceph-s]

rgw_frontends = "civetweb port=80"

注意: 這一步並不是必須的,根據實際情況進行設定

安裝ceph物件儲存閘道器我們可以通過ceph-deploy命令非常方便的安裝ceph的物件儲存閘道器軟體(也就是rgw)。如下是命令格式:

$ ceph-deploy install --rgw [...]
比如在我們的ceph-s節點安裝該軟體,則可以執行如下命令:

$ ceph-deploy install –-rgw ceph-s
建立rgw例項上面步驟只是安裝了必要的軟體,但並沒有建立需要的儲存資源(儲存池)。之前版本的安裝需要使用者手動建立多個儲存池,安裝比較麻煩,且容易出錯。目前安裝非常方便,可以通過ceph-deploy命令直接建立需要的資源,具體執行如下命令即可:

$ ceph-deploy rgw create ceph-s
建立完成後我們可以看一下目前ceph集群的資源情況,在管理節點輸入如下命令檢視儲存池的情況:

$ rados lspools
具體結果如下:

圖4 物件儲存所需的儲存池

基本驗證

如果上述配置沒有出現任何問題的話,其實ceph的物件儲存閘道器已經正常工作了。前面我們說了,物件儲存其實是基於http協議的,因此我們可以通過瀏覽器進行訪問,比如在瀏覽器中輸入如下內容:

回車後,可以看到如下內容:

圖5 連通性驗證

前面我們進行了安裝和連通性的基本驗證,對於物件儲存的功能來說還差得遠。下面我們通過swift的客戶端工具進行驗證。

注意:後續建立使用者的操作應該在rgw節點上執行。

建立使用者我們前面介紹了物件儲存的資料結構,資料必須儲存在某個使用者下面。因此,想正常的訪問rgw,需要建立相應的rgw使用者,並賦予相應的許可權,radosgw-admin命令實現了這些功能。

執行下面命令,來建立乙個名為testuser的使用者:

$ radosgw-admin user create --uid="testuser" --display-name="first user"
命令的輸出大致如下:

注意:需要記住返回結果中keys->access_key和keys->secret_key的值,用於s3介面訪問確認。

建立子使用者swift使用者是作為子使用者subuser被建立的,執行以下命令:

$ radosgw-admin subuser create --uid=testuser --subuser=testuser:swift --access=full
輸出結果大致如下:

注意:需要記住返回結果中swift_keys->secret_key的值,用於swift介面訪問確認。

用swift的客戶端訪問物件儲存我們前面說了ceph物件儲存是相容swift的,因此我們可以直接用swift的客戶端訪問ceph物件儲存。當然,我們需要首先安裝該客戶端。

新增yum源

新建檔案/etc/yum.repos.d/openstack.repo,然後寫入如下內容:

[centos-openstack-liberty] 

name=centos-7 - openstack liberty

baseurl=

gpgcheck=0

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/rpm-gpg-key-centos-7

更新yum快取後就可以安裝swift客戶端了。

$ yum update

$ yum install python-swiftclient

命令樣式swift客戶端的命令格式如下所示:

$ swift -a http://:/auth/1.0 -u testuser:swift -k '' list
其中swift為主命令,而後面的list為子命令。在實際使用的時候,需要替換、、等相關引數,其中為建立swift使用者時radosgw-admin命令返回的swift_keys->secret_key的值。如果忘記了上述內容,可以通過radosgw-admin命令檢視

建立容器/桶

首先是需要一容器,swift建立容器的命令為swift post contaner_name。具體命令如下:

swift -a /auth/1.0 -u testuser:swift -k 'ozmuwvxwseug30to8qkyggmbm7dxy2a4vlgid2sp' post testbucket
可以通過list命令檢視一下我們建立的容器:

swift -a /auth/1.0 -u testuser:swift -k 'ozmuwvxwseug30to8qkyggmbm7dxy2a4vlgid2sp' list
上傳物件有了容器後,我們就可以向容器上傳物件了。具體命令如下,為了清晰一些,這裡省略了認證相關的內容

swift upload testbucket ./mysql.yaml
成功後可以看一下容器中的內容,具體命令如下:

swift list testbucket

Ceph集群部署及RGW開啟https訪問

注 ca證書建立流程多種多樣,如有需要請自行學習,此處僅提供一種稍簡單的建立方式,以下流程請嚴格按照順序執行 將生成好的證書複製到其他節點的證書目錄下 scp etc ceph cert node02 etc ceph cert scp etc ceph cert node03 etc ceph c...

ceph物件儲存,檔案儲存

簡述一下物件儲存,檔案儲存,和塊儲存的區別,以物件儲存為重點 1.塊儲存 讀寫快,不利於共享,以塊作為資料儲存的基本單元 2.檔案儲存 讀寫慢,利於共享,以檔案作為資料儲存的基本單元 3.物件儲存 讀寫快,利於共享,以物件作為資料儲存的基本單元 物件儲存,下圖是塊儲存和物件儲存的形象比較 物件儲存和...

ceph物件儲存搭建

1.osd1 192.168.1.2 2.osd2 192.168.1.3 3.monitor radosgw 192.168.1.4 4.admin 192.168.1.5 0.所有機器初始化完畢,更改hostname,ntp校驗時間,關閉selinux,關閉防火牆 1.所有機器建立普通使用者 c...