RadosGW 使用详细说明

一、RadosGW 对象存储简介

RadosGW 是对象存储(OSS,Object Storage Service)的一种实现方式,RADOS 网关也称为 Ceph 对象网关、RADOSGW、RGW,是一种服务,使客户端能够利用标准对象存储 API 来访问 Ceph 集群,它支持AWS S3和Swift API,rgw运行于librados之上,在ceph 0.8版本之后使用Civetweb 的 web 服务器来响应 api 请求,可以使用 nginx 或或者 apache 替代,客户端基于 http/https 协议通过 RESTful API 与 rgw 通信,而 rgw 则使用 librados 与 ceph 集群通信,rgw 客户端通 过 s3 或者 swift api 使用 rgw 用户进行身份验证,然后 rgw 网关代表用户利用 cephx 与 ceph 存储进行身份验证。

S3 由 Amazon 于 2006 年推出,全称为 Simple Storage Service,S3 定义了对象存储,是对象存 储事实上的标准,从某种意义上说,S3 就是对象存储,对象存储就是 S3,它对象存储市场的 霸主,后续的对象存储都是对 S3 的模仿。

二、对象存储特点

通过对象存储将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据。 

对象通过 Object ID 来检索,无法通过普通文件系统的方式通过文件路径及文件名称操作来 直接访问对象,只能通过 API 来访问,或者第三方客户端(实际上也是对 API 的封装)。 

对象存储中的对象不整理到目录树中,而是存储在扁平的命名空间中,Amazon S3 将这个扁平命名空间称为 bucket,而 swift 则将其称为容器。 

无论是 bucket 还是容器,都不能嵌套。 

bucket 需要被授权才能访问到,一个帐户可以对多个 bucket 授权,而权限可以不同。 

方便横向扩展、快速检索数据 不支持客户端挂载,且需要客户端在访问的时候指定文件名称。 

不是很适用于文件过于频繁修改及删除的场景。

ceph 使用 bucket)作为存储桶(存储空间),实现对象数据的存储和多用户隔离,数据存储在 bucket 中,用户的权限也是针对 bucket 进行授权,可以设置用户对不同的 bucket 拥有不通 的权限,以实现权限管理。

bucket 特性:

  1. 存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。您 可以设置和修改存储空间属性用来控制地域、访问权限、生命周期等,这些属性设置直接作 用于该存储空间内所有对象,因此您可以通过灵活创建不同的存储空间来完成不同的管理功 能。
  2. 同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其 对应的存储空间。
  3. 每个用户可以拥有多个存储空间
  4. 存储空间的名称在 OSS 范围内必须是全局唯一的,一旦创建之后无法修改名称。
  5. 存储空间内部的对象数目没有限制。

bucket 命名规范:

  1. 只能包括小写字母、数字和短横线(-)。
  2. 必须以小写字母或者数字开头和结尾。
  3. 长度必须在 3-63 字节之间

radosgw 架构图
在这里插入图片描述
radosgw 逻辑图
在这里插入图片描述

三、对象存储访问对比

Amazon S3:提供了 user、bucket 和 object 分别表示用户、存储桶和对象,其中 bucket 隶属 于 user,因此 user 名称即可做为 bucket 的名称空间,不同用户允许使用相同名称的 bucket。

OpenStack Swift:提供了 user、container 和 object 分别对应于用户、存储桶和对象,不过它 还额外为 user 提供了父级组件 account,用于表示一个项目或租户,因此一个 account 中可 包含一到多个 user,它们可共享使用同一组 container,并为 container 提供名称空间

RadosGW:提供了 user、subuser、bucket 和 object,其中的 user 对应于 S3 的 user,而 subuser 则对应于 Swift 的 user,不过 user 和 subuser 都不支持为 bucket 提供名称空间,因此,不同 用户的存储桶也不允许同名;不过,自 Jewel 版本起,RadosGW 引入了 tenant(租户)用于 为 user 和 bucket 提供名称空间,但它是个可选组件,RadosGW 基于 ACL 为不同的用户设置 不同的权限控制,如:
Read 读加执行权限
Write 写权限
Readwrite 只读
full-control 全部控制权限

四、部署 RadosGW 服务

将 ceph-mgr1、ceph-mgr2 服务器部署为高可用的 radosGW 服务

4.1 安装 radosgw 服务并初始化

[root@ceph-mgr1 ~]# yum install ceph-radosgw 
[root@ceph-mgr2 ~]# yum install ceph-radosgw

# 在 ceph deploy 服务器将 ceph-mgr1 初始化为 radosGW 服务
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy rgw create ceph-mgr1
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy rgw create ceph-mgr2

验证服务是否起来

[root@ceph-mgr2 ~]# ps -ef | grep radosgw
ceph       2971      1  0 02:46 ?        00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.ceph-mgr2 --setuser ceph --setgroup ceph
root       3599   2446  0 02:47 pts/0    00:00:00 grep --color=auto radosgw

在这里插入图片描述

4.2 访问 radoswg 服务

在这里插入图片描述

五、radosgw 服务配置

5.1 radosgw 高可用架构

在这里插入图片描述

5.2 自定义端口

原来端口号 7480,改为端口号8080
配置文件可以在 ceph deploy 服务器修改然后统一推送,或者单独修改每个 radosgw 服务器的配置为同一配置。

# 修改配置文件
[root@ceph-mgr2 ~]# vim /etc/ceph/ceph.conf
[client.rgw.ceph-mgr2]
rgw_host = ceph-mgr2
rgw_frontends = civetweb port=8080

# 重启服务
[root@ceph-mgr2 ~]# systemctl restart ceph-radosgw@rgw.ceph-mgr2.service

在这里插入图片描述

5.3 启用 SSL

生成签名证书并配置 radosgw 启用 SSL

5.3.1 自签名证书

cd /etc/ceph/
mkdir certs
cd certs/
openssl genrsa -out civetweb.key 2048
openssl req -new -x509 -key civetweb.key -out civetweb.crt -subj "/CN=ceph.magedu.net"
cat civetweb.key civetweb.crt > civetweb.pem
tree .
├── civetweb.crt 
├── civetweb.key 
└── civetweb.pem

5.3.2 SSL 配置

vim /etc/ceph/ceph.conf 
[client.rgw.ceph-mgr2] 
rgw_host = eph-mgr2 
rgw_frontends = "civetweb port=8080+8443s ssl_certificate=/etc/ceph/certs/civetweb.pem" 

[root@ceph-mgr2 certs]# systemctl restart ceph-radosgw@rgw.ceph-mgr2.service

5.3.3 验证 8443 端口

在这里插入图片描述

5.3.4 验证访问

在这里插入图片描述

5.3.5 优化配置

# 创建日志目录
[root@ceph-mgr2 certs]# mkdir /var/log/radosgw 
[root@ceph-mgr2 certs]# chown ceph.ceph /var/log/radosgw

# 当前配置 
[client.rgw.ceph-mgr2] 
rgw_host = eph-mgr2 
rgw_frontends = "civetweb port=8080+8443s ssl_certificate=/etc/ceph/certs/civetweb.pem request_timeout_ms=30000 error_log_file=/var/log/radosgw/civetweb.error.log access_log_file=/var/log/radosgw/civetweb.access.log num_threads=100"

# 重启服务 
[root@ceph-mgr2 certs]# systemctl restart ceph-radosgw@rgw.ceph-mgr2.service

# 访问测试
[root@ceph-mgr2 certs]# curl -k https://172.31.6.108:8443 
[root@ceph-mgr2 certs]# curl -k https://172.31.6.108:8443

# 验证日志
[root@ceph-mgr2 certs]# tail /var/log/radosgw/civetweb.access.log 
172.31.6.108 - - [01/Jan/2021:17:02:28 +0800] "GET / HTTP/1.1" 200 413 - curl/7.29.0
172.31.6.108 - - [01/Jan/2021:17:02:29 +0800] "GET / HTTP/1.1" 200 413 - curl/7.29.0
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值