第⑦讲:Ceph集群RGW对象存储核心概念及部署使用
文章目录
- 1.RadosGW对象存储核心概念
- 1.1.什么是RadosGW对象存储
- 1.2.RGW对象存储架构
- 1.3.RGW对象存储的特点
- 1.4.对象存储中Bucket的特性
- 1.4.不同接口类型的对象存储访问对比
- 2.在集群中部署RadosGW对象存储组件
- 2.1.部署RGW组件
- 2.2.集群中部署完RGW组件后观察集群的信息状态
- 2.3.修改RGW对象存储的默认监听端口
1.RadosGW对象存储核心概念
RADOSGW对象存储官方文档:https://docs.ceph.com/en/pacific/radosgw/
1.1.什么是RadosGW对象存储
Ceph RadosGW是对象存储的一种实现方式,简称RGW,Rados网关也被称为Ceph对象网关,RadosGW使客户端能够利用标准的对象存储API接口来访问Ceph集群进行存储数据。
RGW对象存储支持两种风格的对象存储API接口:
- AWS S3:与亚马逊云的S3对象存储API接口兼容。
- OpenStack Swift:与OpenStack的Swift的API接口兼容,提供对象存储功能。
RGW对象存储提供RESTful API类型的接口,如果有类似阿里云等对象存储的可视化接口,可以直接在图形化界面操作对象存储。
无论哪种类型的API接口,最终都会通过RadosGW服务奖数据写入到Ceph集群的OSD里,并且这些接口都会对应一个资源池,也就是说无论使用哪种类型的API接口,都可以读取到来自其他API接口写入的数据。
RadosGW在之前的版本中,是使用CIVETWEB提供的API访问。
1.2.RGW对象存储架构
Ceph集群的对象存储功能主要是有RadosGW组件来实现的,支持S3和Swift两种风格的API接口,当然也支持自定义的API接口类型,用户在对象存储写入数据时,由RadosGW处理用户的请求,然后通过Librados库将数据写入到Ceph集群的OSD中。
客户端是基于HTTP或者HTTPS协议通过RESTful API与RGE进行通信,RGW则使用Librados库与Ceph集群进行通信,通过接口API的身份验证,最终将数据写入到OSD中。
1.3.RGW对象存储的特点
- 通过对象存储的方式在Ceph集群中存储数据,文件也会被拆分成多个对象,每个对象文件除了包含数据意外,还会包含数据自身的元数据信息,并且如果是大文件,在写入到Ceph集群时,还会被切片,写入到集群后再进行重组。
- 写入到对象存储的数据文件,无法使用文件的路径名称在服务器中找到,只能通过API来访问数据文件。
- 对象存储中的Object文件是存储在一种扁平的空间中,叫做Bucket,用于资源隔离。
- ceph使用Bucket作为对象存储的存储桶,Bucket需要被授权才能访问到,可以起到多用户对数据文件的访问隔离,数据都是存储在Bucket空间里的,用户的权限也是针对Bucket进行授权,用户可以对不同的Bucket拥有不同的权限。
- 不支持客户端挂载,客户端通过HTTP或者HTTPS访问对象文件。
- 不适用频繁修改和删除的场景,存储静态文件的场景居多。
1.4.对象存储中Bucket的特性
Bucket称为存储空间,所有对象存储中的文件必须隶属于某个Bucket存储空间,可以对存储空间设置控制地域、访问权限、生命周期等等。
每个用户可以拥有多个Bucket存储空间,一个存储空间内部是扁平的,没有文件系统的目录概念,所有的对象文件都直接隶属于对应的存储空间。
存储空间的名称在集群中必须是全局唯一,一旦创建无法修改。
存储空间中的对象条目没有限制。
Bucket存储空间的命名规范:只能包括大小写字母、数字和短横线,必须以小写字母或者数字开头和结尾,长度必须在3-63字节之间。
1.4.不同接口类型的对象存储访问对比
- 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则对应于Swif的user,不过user和subuser都不支持为bucket提供名称空间,因此,不同用户的存储桶也不允许同名,不过自Jewel版本起,RadosGW引入了tenant(租户)用于为user和bucket提供名称空间,但它是个可选组件,RadosGW基于ACL为不同的用户设置不用的权限。
- Read 读加执行权限
- Write 写权限
- Readwrite 只读
- full-control 全部控制权限
2.在集群中部署RadosGW对象存储组件
2.1.部署RGW组件
1)安装RadosGW组件
[root@ceph-node-1 ceph-deploy]# yum -y install ceph-radosgw
2)将ceph-node-1节点配置成集群中的RGW节点
[root@ceph-node-1 ~]# cd /data/ceph-deploy/
[root@ceph-node-1 ceph-deploy]# ceph-deploy rgw create ceph-node-1
3)查看RGW组件启动的进程以及端口号
[root@ceph-node-1 ~]# systemctl status ceph-radosgw@rgw.ceph-node-1[root@ceph-node-1 ~]# ps aux | grep rgw
ceph 23900 0.3 0.9 5145796 36944 ? Ssl 22:53 0:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.ceph-node-1 --setuser ceph --setgroup ceph
root 24522 0.0 0.0 147032 1580 pts/1 S+ 22:53 0:00 journalctl -u ceph-radosgw@rgw.ceph-node-1 -f
root 24584 0.0 0.0 112720 980 pts/2 S+ 22:55 0:00 grep --color=auto rgw[root@ceph-node-1 ~]# netstat -lnpt | grep 7480
tcp 0 0 0.0.0.0:7480 0.0.0.0:* LISTEN 23900/radosgw
tcp6 0 0 :::7480 :::* LISTEN 23900/radosgw
4)可以简单的访问下RGW提供的API接口
2.2.集群中部署完RGW组件后观察集群的信息状态
[root@ceph-node-1 ~]# ceph -scluster:id: a5ec192a-8d13-4624-b253-5b350a616041health: HEALTH_OKservices:mon: 3 daemons, quorum ceph-node-1,ceph-node-2,ceph-node-3 (age 49m)mgr: ceph-node-1(active, since 45m), standbys: ceph-node-2, ceph-node-3osd: 6 osds: 6 up (since 6m), 6 in (since 6m)rgw: 1 daemon active (ceph-node-1) #可以看到在这里多了一个RGW组件task status:data:pools: 5 pools, 256 pgsobjects: 190 objects, 1.2 KiBusage: 6.0 GiB used, 54 GiB / 60 GiB availpgs: 256 active+clean
2.3.修改RGW对象存储的默认监听端口
RGW的默认端口是7380,像这种通过WEB方式访问的程序,最好是使用80端口。
RGW的端口号在配置文件中进行指定,我们只需要修改ceph-deploy生成的ceph.conf文件就可以,然后推送给各个节点。
1.修改ceph的配置文件,指定rgw使用的端口号
[root@ceph-node-1 ~]# cd /data/ceph-deploy/
[root@ceph-node-1 ceph-deploy]# vim ceph.conf
[global]
fsid = a5ec192a-8d13-4624-b253-5b350a616041
public_network = 192.168.20.0/23
cluster_network = 192.168.30.0/23
mon_initial_members = ceph-node-1, ceph-node-2, ceph-node-3
mon_host = 192.168.20.20,192.168.20.21,192.168.20.22
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx[client.rgw.ceph-node-1] #指定RGW节点的节点名称
rgw_frontends = "civetweb port=80" #port后面跟端口号2.将配置文件推送到集群的所有节点中
[root@ceph-node-1 ceph-deploy]# ceph-deploy --overwrite-conf config push ceph-node-1 ceph-node-2 ceph-node-3
3.重启RGW组件
[root@ceph-node-1 ceph-deploy]# systemctl restart ceph-radosgw.target4.查看RGW的端口号
[root@ceph-node-1 ceph-deploy]# netstat -lnpt | grep radosgw
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 24837/radosgw
在浏览器中也可以访问。
相关文章:

第⑦讲:Ceph集群RGW对象存储核心概念及部署使用
文章目录1.RadosGW对象存储核心概念1.1.什么是RadosGW对象存储1.2.RGW对象存储架构1.3.RGW对象存储的特点1.4.对象存储中Bucket的特性1.4.不同接口类型的对象存储访问对比2.在集群中部署RadosGW对象存储组件2.1.部署RGW组件2.2.集群中部署完RGW组件后观察集群的信息状态2.3.修改…...

从异步到promise
一,背景 1.1,js的单线程 这一切,要从js诞生之初说起,因为js是单线程的语言。 js单线程原因:作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程&…...

Linux系统中进行JDK环境的部署
一、为什么需要部署JDK。 JDK:Java Development Kit,是用于Java语言开发的环境。 部署JDK不需要懂得Java语言,只需要掌握Linux相关命令即可。 二、部署版本与环境。 系统:安装在VMware环境下的CentOS7.6; JDK版本&a…...
Leetcode.1033 移动石子直到连续
题目链接 Leetcode.1033 移动石子直到连续 Rating : 1421 题目描述 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,你可以从两端之一拿起一枚石子(位置最大或最小),并将其放入…...
【Java】在SpringBoot中使用事务注解(@Transactional)时需要注意的点
在SpringBoot中使用事务注解(Transactional)时需要注意的点Transactional是什么使用事务注解(Transactional)时需要注意的点Transactional是什么 Transactional是Spring框架提供的一个注解,用于声明事务边界和配置事务…...

找到序列最高位的1和最高位的0并输出位置
前言: 该题为睿思芯科笔试题,笔试时长20分钟。 题目描述 接口如下: module first_1_and_0#(parameter WIDTH 8 )(input [WIDTH-1:0] data_in ,input target ,output exist ,outpu…...
面试总结sdiugiho
一、进程与线程的区别 进程: 一个在内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程可以有多个线程; windows 任务管理器中 一个 exe 就是一个进程。 线程: 进程中的一个执行任务(控制…...

WIN10無法再使用 IE 瀏覽器打开网页解决办法
修改 Registry(只適用 Win10) 微軟已於 2023 年 2 月 14 日永久停用 Internet Explorer,會透過 Edge 的更新讓使用者開啟 IE 時自動導向 Edge,其餘如工作列上的圖示,使用的方法則是透過「品質更新」的 B 更新來達成&am…...

搭建SpringBoot和Mysql Demo
1. 引言 在上一篇文章中,介绍了如何搭建一个SpringBoot项目;本篇文章,在上一篇文章的基础上,接着介绍下怎样实现SpringBoot和MySQL的整合。在后端开发中,数据库开发是绕不开的话题,开发中很多的时间都是在…...

晶振03——晶振烧坏的原因
晶振03——晶振烧坏的原因 首先要清楚的一件事情是:晶振分为无源晶振与有源晶振两大类。基于这两类晶振的内部结构与工作原理的差异,晶振被烧坏的情况也要分为两大类: 针对无源晶振被烧坏的情况有以下两点: 1、手焊操作不当 假…...

项目管理的难点
一、项目团队建设 建设一支高效的项目团队,明确团队队员的职责是项目经理进行项目管理的首要条件,也是项目目标能否实现的关键。 1.1 学会放权 任何人都不能掌握所有的知识和技能,要敢于相信别人,让别人去做。 放权就要选择最…...
day22 ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
问题: ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点 首先,二叉搜索树是一种常见的数据结构,它具有以下特点: 每个节点最多有两个子节点,分别为左子节点和右子节…...

ChatGPT 这个风口,普通人怎么抓住?
最近在测试ChatGPT不同领域的变现玩法,有一些已经初见成效,接下来会慢慢分享出来。 今天先给大家分享一个,看完就能直接上手的暴力引流玩法。 所需工具: 1)ChatGPT(最好是plus版,需要保证快速…...

Python代码规范:企业级代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码规范自动编排(2)
本篇将总结实际项目开发中Python代码规范检查、自动编排的一些工具,特点,使用方法,以及如何在Pycharm中集成这些工具,如autoflake、yapf、black、isort、autopep8代码规范和自动编排工具。上一篇总结的pylint、pyproject-flake8、…...
acme.sh从 letsencrypt 生成SSL免费证书并自动更新证书
acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书 ACME 协议: Automatic Certificate Management Environment 自动化证书管理环境 文档: github: https://github.com/acmesh-official/acme.shgitee: https://gitee.com/neilpang/acme.sh中文文档: https://git…...

基于html+css的evenly布局
准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…...

【从零开始学习 UVM】10.5、UVM TLM —— UVM TLM Blocking Get Port
文章目录 UVM TLM Get Port Example1. 创建一个发送方类,其端口类型为 uvm_blocking_get_imp3. 创建接收器类,等待 get 方法。4. 在更高层次上连接端口及其实现Get端口阻塞行为任何组件都可以通过 TLM get 端口请求从另一个组件接收事务。发送组件应定义获取端口的实现。该实…...

English Learning - L2 第 10 次小组纠音 辅音 [m] [n] [ŋ] 半元音 [w] [j] 2023.3.29 周三
English Learning - L2 第 10 次小组纠音 辅音 [m] [n] [ŋ] [w] [j] 2023.3.29 周三共性问题more Autumn [ɔː] 舌位偏前gone evening 前后鼻音不分Hes proud of this name 双元音缺乏滑动感bank thing 中的后鼻音发成前鼻音week what yolk 元音 [iː] [ɒ] 舌位偏前 [əʊ] …...
从零开始实现一个C++高性能服务器框架----环境变量模块
此项目是根据sylar框架实现,是从零开始重写sylar,也是对sylar丰富与完善 项目地址:https://gitee.com/lzhiqiang1999/server-framework 简介 项目介绍:实现了一个基于协程的服务器框架,支持多线程、多协程协同调度&am…...
git常用命令的解释
解释git add . git add . 命令用于将当前目录下的所有文件添加到 Git 仓库的暂存区中。这个命令通常用于刚刚打开一个 Git 仓库时,或者用于将本地文件更新到远程仓库时。 具体来说,git add . 命令会将当前目录下的所有文件添加到 Git 仓库的暂存区中&am…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...