一、官方文檔
http://docs.ceph.org.cn/
http://docs.ceph.org.cn/radosgw/
二、安裝 CEPH 對象網關
自從 firefly (v0.80) 版本開始,Ceph 對象網關運行在 Civetweb 上(已經集成進守護進程 ceph-radosgw
),而不再是 Apache 和 FastCGI 之上。使用 Civetweb簡化了Ceph對象網關的安裝和配置。
# 操作文檔
http://docs.ceph.org.cn/install/install-ceph-gateway/
2.1、部署
# 1、在管理節點的工作目錄下,給 Ceph 對象網關節點安裝Ceph對象所需的軟件包
[root@node1 ~]# yum install -y ceph-radosgw # 之前在三個節點都安裝過了
# 2、部署rgw
[root@node1 ~]# cd /app/ceph-deploy/ceph-deploy/
[root@node1 ceph-deploy]# ceph-deploy rgw create node1
# 3、報錯解決(查看日志)
[root@node1 ceph-deploy]# tail -f /var/log/ceph/ceph-client.rgw.node1.log
###
ceph.conf 配置文件加上
mon_max_pg_per_osd = 1000
###
# 4、推送配置文件,然后重啟
[root@node1 ceph-deploy]# ceph-deploy --overwrite-conf admin node1 node2 node3 # (node1執行)
[root@node1 ceph-deploy]# sudo systemctl restart ceph.target # (這個三個節點都重啟)
# 5、端口檢查
[root@node1 ceph-deploy]# ss -ntl | grep 7480
LISTEN 0 128 *:7480 *:*
LISTEN 0 128 :::7480 :::*
# 6、curl一下(出現一下情況是正常的了)
[root@node1 ceph-deploy]# curl http://node1:7480
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult
2.2、在任何時候如果你遇到麻煩,而你也想重新來一次,執行下面的命令來清除配置
ceph-deploy purge <gateway-node1> [<gateway-node2>]
ceph-deploy purgedata <gateway-node1> [<gateway-node2>]
2.3、修改網關默認端口
# 1、在ceph.conf 末尾加上
[root@node1 ceph-deploy]# vim ceph.conf
[client.rgw.node1]
rgw_frontends = "civetweb port=80"
# 2、推送文件
[root@node1 ceph-deploy]# ceph-deploy --overwrite-conf config push node1 node2 node3
# 3、重啟
[root@node1 ceph-deploy]# systemctl restart ceph.target # (這個三個節點都重啟)
# 4、測試是否更改成功
[root@node1 ceph-deploy]# curl http://node1:80
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>[root@node1
2.4、使用對象存儲
為了使用 REST 接口,首先需要為S3接口創建一個初始 Ceph 對象網關用戶。然后,為 Swift 接口創建一個子用戶。然后你需要驗證創建的用戶是否能夠訪問網關。
2.4.1、創建用戶,在 gateway host
上執行下面的命令
[root@node3 ~]# radosgw-admin user create --uid="ceph-s3-user" --display-name="Ceph S3 User Demo"
{
"user_id": "ceph-s3-user",
"display_name": "Ceph S3 User Demo",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{ # 這三個信息后面會要,很重要
"user": "ceph-s3-user",
"access_key": "7W1JL897CI54324HN4GH",
"secret_key": "pBqTKmOTBOPaCulchBzusudlIFJrlKqpH7L0mKcE"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"temp_url_keys": [],
"type": "rgw",
"mfa_ids": []
}
# 其他命令
[root@node3 ~]# radosgw-admin user list
[
"ceph-s3-user"
]
[root@node3 ~]# radosgw-admin user info --uid ceph-s3-user
2.4.3、測試 S3 訪問
為了驗證 S3 訪問,你需要編寫並運行一個 Python 測試腳本。S3 訪問測試腳本將連接 radosgw
, 新建一個新的 bucket 並列出所有的 buckets。 aws_access_key_id
和 aws_secret_access_key
的值來自於命令radosgw_admin
的返回值 access_key
和 secret_key
執行下面的步驟:
-
你需要安裝
python-boto
包:sudo yum install python-boto
-
新建 Python 腳本文件:
vi s3test.py
-
將下面的內容添加到文件中:
import boto import boto.s3.connection access_key = '7W1JL897CI54324HN4GH' secret_key = 'pBqTKmOTBOPaCulchBzusudlIFJrlKqpH7L0mKcE+ZDA' conn = boto.connect_s3( aws_access_key_id = access_key, aws_secret_access_key = secret_key, host = '{hostname}', port = {port}, is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(), ) bucket = conn.create_bucket('my-new-bucket') for bucket in conn.get_all_buckets(): print "{name}".format( name = bucket.name, created = bucket.creation_date, )
將
{hostname}
替換為你配置了網關服務的節點的主機名。比如gateway host
. 將 {port} 替換為 Civetweb 所使用的端口。 -
運行腳本:
python s3test.py
輸出類似下面的內容:
my-new-bucket 2015-02-16T17:09:10.000Z