文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Ceph RADOS Gateway安装,你学会了吗?

2024-11-30 13:47

关注

主要用于非结构化数据,例如多媒体内容、备份数据、分析数据等,以及任何需要大规模、易于访问和经济有效的数据存储的应用。Amazon S3、Google Cloud Storage 和 OpenStack Swift 是一些常见的公有云对象存储服务。在私有云或本地环境中,Ceph 和 MinIO 是两个常见的对象存储系统。 

与文件存储不同,对象存储不使用目录树结构。它把所有的数据都看作是对象,每个对象都由一个唯一的 ID 标识。对象包括数据本身,以及描述数据的元数据,还有一个全局唯一的 ID。 

对象存储的优势在于其扩展性和可访问性。对象存储是为大规模数据设计的,它能够很好地处理大量非结构化数据。对象可以跨多个服务器或地理区域分散存储,提供了高度的冗余和可用性。对象存储通常通过 RESTful API 访问,这使得它可以通过网络从任何地方访问,而且开发者可以轻松地集成到应用程序中。

总结起来,文件存储更适合于需要文件级别操作和低延迟访问的传统应用,而对象存储则适合于大规模、非结构化数据的存储和云环境。

对象存储的桶概念

在对象存储系统中,"桶"(Bucket)是一种容器,用于组织和管理存储的对象。每个桶都有一个唯一的名称,用于区分存储在同一对象存储系统中的其他桶。你可以将桶看作是一个逻辑上的存储区域,可以在其中存储、列举和删除对象。 

对象存储系统的用户可以创建一个或多个桶,并将对象上传到这些桶中。每个对象都有一个与其所在桶相关联的唯一键,可以用这个键在桶中定位对象。

这里需要注意的是,桶并不等同于传统文件系统的文件夹。在文件系统中,文件夹可以嵌套,形成一个层级结构,但在对象存储中,桶并不能嵌套。每个桶都是平等且独立的,它们只是一种组织对象的方式。 

另外,每个桶可以有其自己的配置,如访问权限和生命周期管理规则。例如,你可以为一个桶设置公共读取权限,而另一个桶则设置为私有。或者,你可以为一个桶设置一个规则,自动删除超过一定期限的对象。这为管理和控制存储的数据提供了灵活性。

例如,Amazon S3、Google Cloud Storage 和 Ceph RGW 都使用了桶的概念。你可以通过这些服务的 API 或工具创建桶,上传对象到桶,从桶下载对象,列举桶中的对象,以及管理桶的配置。

什么是RGW

RGW是RADOS Gateway的简称,是一套基于LIBRADOS接口封装而实现的FastCGI服务,对外提供基于 HTTP 的RESTful风格的对象存储数据访问和管理接口,使得 Ceph 存储集群可以像对象存储系统一样使用。 

RGW 支持两种主要的对象存储 API:Amazon S3 兼容的 API 和 OpenStack Swift 兼容的 API。这使得可以使用许多已经存在的 S3 或 Swift 工具和库来访问 Ceph 存储。RGW 的主要功能包括:

因此,如果需要在 Ceph 存储集群中使用对象存储,或者你需要与 S3 或 Swift 兼容的存储,那么 RGW 就会是一个很好的选择。

安装ceph RADOS Gateway

在线方式安装

sudo apt install ceph-radosgw

离线安装

在联网环境下安装 apt-rdepends:

sudo apt-get update
sudo apt-get install apt-rdepends

apt-rdepends 是一个工具,可以列出一个包及其所有递归依赖的包。使用 apt-rdepends 列出 radosgw 及其所有依赖的包:

apt-rdepends radosgw | grep -v "^ " > packages.txt

这会生成一个名为 packages.txt 的文件,包含 radosgw 及其所有依赖的包的名称。使用 apt-get download 下载这些包

mkdir packages
cd packages
xargs -a ../packages.txt apt-get download

这会在 packages 目录下下载 radosgw 及其所有依赖的包。

  1. 将下载的包拷贝到离线的环境中:
tar -zcvf ceph_radosgw.tar.gz packages
离线环境解压安装
tar -zxvf ceph_radosgw.tar.gz packages
cd packages
dpkg -i *.deb

配置ceph rados gateway

编辑 /etc/ceph/ceph.conf 文件以添加 client.rgw 部分,下面可以添加多个rgw主机,这样,每个 RGW 实例都有自己的配置,并且都可以被独立地启动和停止。这种方式可以提高系统的可用性和容错能力,因为即使一个 RGW 实例出现问题,其他的实例仍然可以继续提供服务。

[client.rgw.node1]
host = node1
rgw_frontends = "civetweb port=80"
[client.rgw.node2]
host = node2
rgw_frontends = "civetweb port=80"

创建keyring

创建 keyring 文件:使用 ceph-authtool 命令来创建 keyring 文件,然后使用 chown 命令来更改文件的所有者为 ceph 用户。

sudo mkdir -p /var/lib/ceph/radosgw/ceph-rgw.`hostname`/
sudo ceph-authtool /var/lib/ceph/radosgw/ceph-rgw.`hostname`/keyring --create-keyring --gen-key -n client.rgw.`hostname`
sudo chown ceph:ceph /var/lib/ceph/radosgw/ceph-rgw.`hostname`/keyring

添加 keyring 到 Ceph 集群:你需要将新创建的 keyring 添加到你的 Ceph 集群中。

sudo ceph auth add client.rgw.`hostname` osd 'allow rwx' mon 'allow rwx' -i /var/lib/ceph/radosgw/ceph-rgw.`hostname`/keyring

重启ceph rados gateway

sudo systemctl start ceph-radosgw@rgw.`hostname`

创建rgw 数据池

创建数据池以供 RGW 使用。在命令行中运行 ceph 命令以创建所需的池。

ceph osd pool create .rgw.root 64
ceph osd pool create default.rgw.control 64
ceph osd pool create default.rgw.data.root 64
ceph osd pool create default.rgw.gc 64
ceph osd pool create default.rgw.log 64
ceph osd pool create default.rgw.users.uid 64
ceph osd pool create default.rgw.users.email 64
ceph osd pool create default.rgw.users.swift 64
ceph osd pool create default.rgw.buckets.index 64
ceph osd pool create default.rgw.buckets.data 64

解释下上面创建的数据池的作用

在执行上面操作中可能会报如下错误

pg_num 64 size 3 would mean 771 total pgs, which exceeds max 750 (mon_max_pg_per_osd 250 * num_in_osds 3

新创建的 placement groups(PG)数量超过了 Ceph 集群的限制。Ceph 集群设置了每个 OSD 可以支持的最大 PG 数量,这是通过参数 mon_max_pg_per_osd 来控制的。

mon_max_pg_per_osd 的值被设置为了 250,而此时的集群中有 3 个 OSDs,因此,集群总共可以支持 250 * 3 = 750 个 PGs。现在尝试创建的 PG 数量为 64 * 3 = 192 个(因为 size 参数设置为 3,每个 PG 都会有两个副本),加上集群中已经存在的 PG 数量,总数超过了 750。可以采取以下几种策略来解决这个问题:

  1. 增加 mon_max_pg_per_osd 的值:这将增加每个 OSD 支持的 PG 数量,从而增加集群总体可以支持的 PG 数量。但是过多的 PGs 可能会消耗更多的内存和 CPU 资源,可能导致性能下降。
ceph config set global mon_max_pg_per_osd 300
查看当前osd可以支持的最大pg数
ceph config get mon mon_max_pg_per_osd
  1. 添加更多的 OSDs:通过增加 OSD 的数量,增加集群总体可以支持的 PG 数量。
  2. 减小 pg_num 的值:降低 pg_num 的值可以减少新创建的 PG 数量,从而使得总 PG 数量不超过限制。但是,pg_num 的值应该根据你的数据分布和性能需求来设置,过小的 pg_num 可能会导致数据分布不均,性能下降。

使用radosgw-admin 命令行工具来创建用户

radosgw-admin user create --uid="wanger" --display-name="wanger"

创建完成后需要保存好access_key和secret_key,后面配置 S3 客户端和其他工具会用到

在 Ceph RADOS Gateway (RGW) 中,可以使用 S3 兼容的客户端工具(例如 AWS CLI、s3cmd、boto3 等)或者 librgw API 来上传数据。下面以awscli为例进行实验

  1. 安装 AWS CLI
apt-get install awscli
  1. 配置 AWS CLI:运行 aws configure 命令来配置 S3 客户端。需要提供访问密钥、安全密钥、默认区域名称(可以设置为 us-east-1),以及默认输出格式(可以设置为 json)。
aws configure

将访问密钥和安全密钥设置为你在 RGW 中创建的用户的密钥。

  1. 创建bucket:使用aws s3api create-bucket命令来创建新的bucket。例如:
aws s3api create-bucket --bucket mybucket --endpoint-url http://node1
  1. 上传数据:使用 aws s3 cp 命令来上传文件到 bucket。例如:
aws s3 cp myfile.txt s3://mybucket/myfile.txt --endpoint-url http://node1
  1. 列出 bucket 中的文件:使用 aws s3 ls 命令来列出 bucket 中的所有文件。例如:
aws s3api head-object --bucket mybucket --key myfile.txt --endpoint-url http://node1
  1. 删除文件:使用 aws s3 rm 命令来删除 bucket 中的文件。例如:
aws s3 rm s3://mybucket/myfile.txt --endpoint--url http://node1


来源:运维开发故事内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯