一、官方文档
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