您好,登錄后才能下訂單哦!
一、什么是對象存儲
1、對象存儲,也就是鍵值存儲,通過其接口指令,也就是簡單GET、PUT、DEL和其他擴展指令,向存儲服務上傳下載數據等
2、對象存儲中所有數據都被認為是一個對象。所以,任何數據都可以存入對象存儲服務器,如圖片、視頻、音頻等
二、Ceph 對象存儲的構成
Ceph 對象存儲主要是通過 RGW 來實現,那么什么是 RGW 呢?
1、RGW 即 Rados Gateway 的全稱。
2、RGW 是 Ceph 對象存儲網關,用于向客戶端應用程序提供存儲界面,提供 RESTful API 訪問接口。
3、RGW 可以部署多臺做為 高可用和負載均衡,拓撲如下圖:
三、部署 RGW 服務
1、在 ceph-a 上通過 ceph-deploy 將 ceph-radosgw 軟件包安裝到 ceph-e 中
[root@ceph-a ~]# ceph-deploy install --rgw ceph-e
2、將配置文件、密鑰文件同步到 ceph-e
[root@ceph-a ceph]# ceph-deploy admin ceph-e
3、啟動一個RGW服務
[root@ceph-a ceph]# ceph-deploy rgw create ceph-e
4、登陸 ceph-e 驗證服務是否啟動
[root@ceph-e yum.repos.d]# ps -ef | grep radosgw
5、查看 rgw 狀態
[root@ceph-e yum.repos.d]# systemctl status ceph-radosgw\*
6、查看端口是否有監聽
[root@ceph-e yum.repos.d]# netstat -tpnl | grep 7480
通過以上 6 步,我們的 RGW 服務已經可以成功運行了。
7、RGW 內建了一個名為 civetweb 的 web 服務器,這個服務器與 apache/nginx 類似,既然是 web 服務,那么使用 80 端口就更為方便,為了應用便捷,可以將默認的 7480 端口修改為 80 端口。
修改 ceph-e 節點的 ceph.conf 配置文件,追加以下內容:
[root@ceph-e ceph]# vim ceph.conf [client.rgw.ceph-e] host = ceph-e rgw_frontends = "civetweb port=80"
保存退出并重啟服務
[root@ceph-e ceph]# systemctl restart ceph-radosgw.target
8、查看端口是否修改成功
[root@ceph-e ceph]# netstat -tpnl
9、驗證
打開瀏覽器,輸入 http://192.168.20.148,如下圖
或者在命令行中輸入 curl http://192.168.20.148 \r ,\r表示發送回車鍵指令,如下如
四、使用第三方軟件訪問
1、使用亞馬遜 s3 客戶端進行訪問
①、登陸 ceph-e(RGW)創建用戶
[root@ceph-e radosgw]# radosgw-admin user create --uid="radosgw" --display-name="First User"
user: radosgw access_key: N6ALEK0KS0ISYCIM5JBG secret_key: qK9hrpX2uwna4elPP1VsuErmAHBw3So40fE2K4yM
②、授權用戶,允許 radosgw 讀寫 users 信息:
[root@ceph-e radosgw]# radosgw-admin caps add --uid=radosgw --caps="users=*"
允許 radosgw 讀寫所有的usage信息:
[root@ceph-e radosgw]# radosgw-admin caps add --uid=radosgw --caps="usage=read,write"
③、創建子用戶,做為后面 swift 客戶端訪問時使用
[root@ceph-e radosgw]# radosgw-admin subuser create --uid=radosgw --subuser=radosgw:swift --access=full
④、創建密鑰
[root@ceph-e radosgw]# radosgw-admin key create --subuser=radosgw:swift --key-type=swift --gen-secret
user: radosgw:swift secret_key: NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl
⑤、在 ceph-f 安裝 s3 客戶端軟件
首先,我們找一下 yum 源有沒有 s3 的 rpm 包
[root@ceph-f ~]# yum list | grep s3
發現,有 s3 的 rpm 包,因此直接安裝即可
[root@ceph-f ~]# yum -y install s3cmd.noarch
⑥、對 s3 進行配置
[root@ceph-f ~]# s3cmd --configure
注意:
Access Key: N6ALEK0KS0ISYCIM5JBG Secret Key: qK9hrpX2uwna4elPP1VsuErmAHBw3So40fE2K4yM Default Region [US]: #這里一定不要修改,否則后面會報錯 S3 Endpoint [s3.amazonaws.com]: 192.168.20.148 DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: %(bucket)s.192.168.20.148 bucket #相當于百度網盤的創建文件夾,這里是固定格式 Path to GPG program [/usr/bin/gpg]: #保持默認 Use HTTPS protocol [Yes]: no #這里寫 no ,因為沒有提供 https 端口 HTTP Proxy server name: #這里不用寫,因為沒有代理 Test access with supplied credentials? [Y/n] y Save settings? [y/N] y
⑦、客戶端測試,查看內容
[root@ceph-f ~]# s3cmd ls
空的,因為就像百度云盤一樣,剛申請,沒有創建,所以是空的
⑧、創建存儲數據的 bucket (類似于存儲數據的目錄)要求 xxx_yyy 格式
[root@ceph-f ~]# s3cmd mb s3://cephdir
發現報錯了,看上圖,發現,出錯是因為我們的寫的格式不正確,按照正確的格式重新書寫,再來一次
[root@ceph-f ~]# s3cmd mb s3://ceph_dir
如上圖,成功了
⑨、再次查看客戶端內容
[root@ceph-f ~]# s3cmd ls
這里提供 s3 的測試腳本
[root@ceph-f ~]# yum -y install python-boto [root@ceph-f ~]# vim s3test.py
import boto.s3.connection access_key = 'N6ALEK0KS0ISYCIM5JBG' secret_key = 'qK9hrpX2uwna4elPP1VsuErmAHBw3So40fE2K4yM' conn = boto.connect_s3( aws_access_key_id=access_key, aws_secret_access_key=secret_key, host='ceph-e', port=80, is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(), ) bucket = conn.create_bucket('xxx_yyy') for bucket in conn.get_all_buckets(): print "{name} {created}".format( name=bucket.name, created=bucket.creation_date, )
在使用時,請替換自己的 access_key、secret_key、主機名和端口
2、swift 接口測試
①、需要安裝以下軟件包
[root@ceph-f ~]# yum install python-setuptools [root@ceph-f ~]# easy_install pip [root@ceph-f ~]# pip install --upgrade setuptools [root@ceph-f ~]# pip install --upgrade python-swiftclient
②、命令行訪問
swift -A http://192.168.20.148/auth/v1.0 -U radosgw:swift -K NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl list
swift -A http://192.168.20.148/auth/v1.0 -U radosgw:swift -K NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl stat -v
這里提供 swift 的測試腳本:
[root@ceph-f ~]# vim swift.py
import swiftclient user = 'radosgw:swift' key = 'NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl' conn = swiftclient.Connection( user=user, key=key, authurl='http://192.168.20.148/auth/v1.0', ) for container in conn.get_account()[1]: print container['name']
在使用時,請替換自己的 access_key、secret_key、authurl
到此,的 Ceph 對象存儲已經完結,如果各位大俠有什么不明白的地方,請參考官網文檔。
關于 Ceph 集群的實現,請參閱小弟的另外一篇博文:https://blog.51cto.com/4746316/2329558
關于 Ceph 塊設備的應用,請參閱小弟的另外一篇博文:https://blog.51cto.com/4746316/2330070
關于 CephFS 文件系統的應用,請參閱小弟的另外一篇博文:https://blog.51cto.com/4746316/2330186
五、總結
Ceph 對象存儲目前尚不不穩定,且官方文檔較舊,這里只做大概講解,不做深入研究。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。