Ceph部署(二)RGW搭建

摘要:
背景CephRGW简介CephRGW基于librados,是为应用提供RESTful类型的对象存储接口。环境规划如上篇文章《Ceph部署(一)集群搭建》所述:4台服务器:1台作为Monitor,1台作为OSDRGW,还有两台作为OSD。部署CephRGW进入上文所述的my-cluster目录。在配置文件中增加一个section[client.rgw.[client.rgw.node4]rgw_frontends="civetwebport=80"然后再将配置文件推送到RGW节点。创建S3用户想正常的访问RGW,需要创建相应的RGW用户,并赋予相应的权限,radosgw-admin命令实现了这些功能。该脚本会连接RGW,创建一个bucket并列出所有的bucket。
背景

Ceph RGW简介

Ceph RGW基于librados,是为应用提供RESTful类型的对象存储接口。RGW提供两种类型的接口:
1) S3:兼容Amazon S3RESTful API;
2) Swift:兼容OpenStack Swift API。
S3和Swift API共享同一个命名空间,所以可以使用两种API访问相同的数据。

环境规划

如上篇文章《Ceph部署(一)集群搭建》所述:4台服务器:1台作为Monitor,1台作为OSD RGW,还有两台作为OSD。ps:我们不搭建CephFS。
所有服务器都安装Ubuntu 16.04。

部署Ceph RGW

进入上文所述的my-cluster目录。

$ cd my-cluster

修改默认端口(可选的)

RGW默认使用Civetweb作为其Web Sevice,而Civetweb默认使用端口7480提供服务,如果想修改端口(如80端口),就需要修改Ceph的配置文件。在配置文件中增加一个section[client.rgw.

[client.rgw.node4]
rgw_frontends = "civetweb port=80"

然后再将配置文件推送到RGW节点。

$ ceph-deploy --overwrite-conf config push node4

安装CEPH OBJECT GATEWAY

格式为:

$ ceph-deploy install --rgw <gateway-node1> [<gateway-node2> ...]

由于我们环境中只有一个RGW,所以执行命令:

$ ceph-deploy install –-rgw node4

管理RGW节点

Ceph CLI工具需要在管理员模式下运行,因此需要执行以下命令:

$ ceph-deploy admin node4

安装RGW实例

执行命令:

$ ceph-deploy rgw create node4

一旦RGW开始运行,我们就可以通过端口7480(如果没有修改的话)来访问。如:

http://node4:7480

如果RGW运行正常,它应该返回类似的信息:

<ListAllMyBucketsResult>
  <Owner>
    <ID>anonymous</ID>
    <DisplayName/>
  </Owner>
  <Buckets/>
</ListAllMyBucketsResult>

注意:剩下的创建用户的步骤都应该在RGW节点上运行。

创建S3用户

想正常的访问RGW,需要创建相应的RGW用户,并赋予相应的权限,radosgw-admin命令实现了这些功能。
执行下面命令,来创建一个名为testuser的用户:

$ radosgw-admin user create --uid="testuser" --display-name="First User"

命令的输出大致如下:

{
    "user_id": "testuser",
    "display_name": "First User",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [],
    "keys": [{
        "user": "testuser",
        "access_key": "I0PJDPCIYZ665MW88W9R",
        "secret_key": "dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+ZDA"
    }],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    },
    "temp_url_keys": []
}

注意:需要记住返回结果中keys->access_key和keys->secret_key的值,用于S3接口访问确认。

创建Swift用户

Swift用户是作为子用户subuser被创建的,执行以下命令:

$ radosgw-admin subuser create --uid=testuser --subuser=testuser:swift --access=full

输出结果大致如下:

    "user_id": "testuser",
    "display_name": "First User",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [{
        "id": "testuser:swift",
        "permissions": "full-control"
    }],
    "keys": [{
        "user": "testuser:swift",
        "access_key": "3Y1LNW4Q6X0Y53A52DET",
        "secret_key": ""
    }, {
        "user": "testuser",
        "access_key": "I0PJDPCIYZ665MW88W9R",
        "secret_key": "dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+ZDA"
    }],
    "swift_keys": [{
        "user": "testuser:swift",
        "secret_key": "244+fz2gSqoHwR3lYtSbIyomyPHf3i7rgSJrF/IA"
    }],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    },
    "temp_url_keys": []

注意:需要记住返回结果中swift_keys->secret_key的值,用于Swift接口访问确认。

测试S3接口

需要创建一个Python测试脚本来测试S3访问。该脚本会连接RGW,创建一个bucket并列出所有的bucket。其中,变量access_key和secret_access的值,来自于创建S3用户命令时,radosgw-admin命令返回的keys->access_key和keys->secret_key。
执行以下步骤,首先安装python-boto库,该库用于连接S3:

$ apt-get install python-boto

创建并编辑Python脚本:

$ vi s3test.py

import boto.s3.connection

access_key = 'I0PJDPCIYZ665MW88W9R'
secret_key = 'dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+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} {created}".format(
        name=bucket.name,
        created=bucket.creation_date,
    )

替换{hostname}、{port}为真实环境的hostname(或者ip)和RGW的端口。执行命令进行测试:

$ python s3test.py

输出应该类似如下:

my-new-bucket-2 2017-02-19T04:34:17.530Z

5.4.8 测试Swift接口

Swfit的访问可以通过命令行。首先安装相关软件包:

$ apt-get install python-setuptools
$ apt-get install python-swiftclient

执行下列命令,范文Swift接口:

$ swift -A http://{IP ADDRESS}:{port}/auth/1.0 -U testuser:swift -K '{swift_secret_key}' list

替换{IP ADDRESS}、{port}、{swift_secret_key}等相关参数,其中{swift_secret_key}为创建Swift用户时,radosgw-admin命令返回的swift_keys->secret_key的值。正常的输出应该为:

my-new-bucket
小结

通过ceph-deploy命令,已经大大地简化了对Ceph集群和RGW的安装和配置。但如果想挑战下自己,或者想让自己了解更多,试试完全的手动部署Ceph吧Ceph手动部署

免责声明:文章转载自《Ceph部署(二)RGW搭建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL binlog日志占用过大MongoDB 搭建分片集群下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

7z 压缩命令行工具

命令行压缩解压一 7z 1) 简介7z,全称7-Zip, 是一款开源软件。是目前公认的压缩比例最大的压缩解压软件。主页:http://www.7-zip.org/中文主页:http://7z.sparanoid.com/命令行版本下载:http://7z.sparanoid.com/download.html主要特征:# 全新的LZMA算法加大了7z格式的...

CMD命令速查手册

CMD命令速查手册本文来至互联网 收集整理:linuxzgf    运维之家官网  转载请注明原文链接            ASSOC 显示或修改文件扩展名关联。       AT 计划在计算机上运行的命令和程序。       ATTRIB 显示或更改文件属性。       BREAK 设置或清除扩展式 CTRL+C 检查。       CACLS 显示...

GDB常用调试命令以及多进程多线程调试

http://blog.csdn.net/freeelinux/article/details/53700266 一:普通命令   1.list命令 list  linenum      显示程序第linenum行周围的程序 list  function      显示函数名为function的函数的源程序 list                  ...

Linux-(telnet,wget)

telnet命令 telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输...

linux sed 批量替换字符串

比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules` 解释一下:-i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 这个命令组合很强大,要注意备份文件。(1)...

Linux操作系统的curl命令的基本使用

Linux操作系统的curl命令的基本使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.curl工具概述   curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议;curl支持HTTPS认证,并且支持HTTP的POS...