一、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

RadosGW 使用详细说明相关推荐

  1. jar包升级部署到服务器详细流程,将服务部署在linux中

    假设你已经准备好以下东西,即可进行服务部署 一台服务器(云服务器或虚拟机皆可) 已安装好的jdk 1.8 + 的环境(可自行百度) 打好的jar包(maven打jar包) 1. 在服务器中新建好你的项 ...

  2. Redis 难题突破,最经典 46 题含详细解析

    1.什么是 Redis? Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - value 缓存产品有以下三个特点: (1)R ...

  3. 详细通俗重点CRF层讲解

    本文翻译自GitHub博客上的原创文章,结尾有原文链接.文章没有晦涩的数学公式,而是通过实例一步一步讲解CRF的实现过程,是入门CRF非常非常合适的资料. 相关项目代码: BERT-BiLSMT-CR ...

  4. 超详细中文预训练模型ERNIE使用指南-源码

    作者 | 高开远,上海交通大学,自然语言处理研究方向 最近在工作上处理的都是中文语料,也尝试了一些最近放出来的预训练模型(ERNIE,BERT-CHINESE,WWM-BERT-CHINESE),比对 ...

  5. Bert代码详解(一)重点详细

    这是bert的pytorch版本(与tensorflow一样的,这个更简单些,这个看懂了,tf也能看懂),地址:https://github.com/huggingface/pytorch-pretr ...

  6. 基于PyTorch的Seq2Seq翻译模型详细注释介绍(一)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qysh123/article/deta ...

  7. NLP突破性成果 BERT 模型详细解读 bert参数微调

    https://zhuanlan.zhihu.com/p/46997268 NLP突破性成果 BERT 模型详细解读 章鱼小丸子 不懂算法的产品经理不是好的程序员 ​关注她 82 人赞了该文章 Goo ...

  8. k8s核心组件详细介绍教程(配超详细实例演示)

    本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程 本文根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps学习总结而来 k8s核心组件介绍 1 ...

  9. 手把手从零开始搭建k8s集群超详细教程

    本教程根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps同步所做笔记教程 k8s集群搭建超详细教程 1. 基本环境搭建 1. 创建私有网络 2. 创建服务 ...

最新文章

  1. Linux系统性能分析: CPU
  2. Windows下更改MySQL 数据库文件存放位置
  3. 这代码她不美吗?——试题 基础练习 十六进制转八进制
  4. 断言、触发器、存储过程
  5. mysql8双机热备高可用配置
  6. mysql配置命令_MySQL基本配置命令总结
  7. 2017.9.29 数三角形 思考记录
  8. tms intraweb html5,TMS VCL Chart
  9. 已知两个向量的坐标求夹角的大小_两个向量的夹角怎么算
  10. 服务器搭建ftp共享文件夹,设置共享文件夹或者搭建FTP服务器。
  11. uniapp 打包时报错:云端服务器返回错误,此应用DClound的Appdid非当前账号所有。
  12. 用pygame做一个简单的python小游戏---生命游戏
  13. 解密秒杀系统架构:不是所有的秒杀都是秒杀
  14. php站长统计,PHP统计各大引擎蜘蛛爬行访问记录插件
  15. java图片加文字水印_JAVA实现图片的修改,添加文字水印效果
  16. 如何获取用户当前位置并生成国际拨号前缀+验证不同国家的手机号格式
  17. png图片损坏打不开如何修复?
  18. go语言 第三方包安装方法_【分享吧】Go语言第三方包的使用介绍与场景应用
  19. matlab程序圆形牛栏,Matlab课本计算题.doc
  20. 机器学习_深度学习毕设题目汇总——交通

热门文章

  1. 同济大学计算机学院杨志强,大学计算机课程论坛-同济大学计算机基础教研室.PDF...
  2. 关于开发网站--工作室
  3. 正态分布实验报告matlab,matlab实验报告(实验3).doc
  4. MSYS2快速配置C++环境+ZSH
  5. 网络安全等级保护测评——岗位职责、权限划分设计思路(三权分立)
  6. NeurIPS论文解读|Decision Transformer: 通过序列建模解决离线强化学习问题
  7. jenkins git maven tomat 项目拉取编译自动部署(操作详细)
  8. postgre 修改表字段默认值
  9. 三极管和MOS管驱动电路的正确用法
  10. PlayMaker入门介绍