Ceph 的存储方式——RGW 对象存储

1、简介

Ceph 是一个开源分布式存储系统,支持块存储(RBD)、文件存储(CephFS)和对象存储三大类型。Ceph RGW(Rados Gateway)是 Ceph 提供的对象存储接口服务,兼容 Amazon S3 和 OpenStack Swift API,使得 Ceph 集群不仅能作为底层存储,还能通过标准接口为用户和应用提供对象存储服务。

RGW 对象存储架构核心概念包括 Realm、ZoneGroup、Zone 和 RGW 实例四个层次,能够支持多地域、多副本、高可用和灵活的访问控制,满足企业级云存储需求。

2、特点

  • 多层级管理:通过 Realm、ZoneGroup、Zone 的分层管理,实现灵活的多地域部署和数据复制。
  • 高可用性和容灾:跨 ZoneGroup 的数据复制与同步保障数据的高可靠性。
  • 兼容性强:支持 S3、Swift 标准接口,方便接入各种云原生应用和工具。
  • 可扩展性强:RGW 可以水平扩展,支持数以万计的并发请求。
  • 细粒度权限控制:支持用户和子用户管理,访问策略灵活。
  • 集成 Kubernetes:支持使用 Ceph Orchestrator 统一管理 RGW 部署和升级。

3、使用场景

  • 企业私有云存储利用 Ceph RGW 构建私有云对象存储,满足企业对数据安全和性能的双重需求。
  • 备份与归档通过多 ZoneGroup 配置实现跨数据中心的数据备份与异地容灾。
  • 大数据与AI训练数据存储高性能、高并发的对象存储服务,适合存储大规模训练数据和日志文件。
  • 云原生应用的持久化存储兼容 S3 的存储后端,支持 Kubernetes 环境下的云原生应用访问对象存储。
  • 混合云存储与公有云存储接口兼容,方便实现本地和云端数据同步与迁移。

4、架构说明

你需要先用 radosgw-admin 创建 Realm → ZoneGroup → Zone,然后再部署 RGW

Ceph RGW对象存储架构

Realm
 └── ZoneGroup
      └── Zone
           └── RGW (Rados Gateway, 即对象网关服务)

结构说明

  • Realm(领域)
    • 顶层逻辑实体,类似一个大业务范围或地理区域的划分。
    • 用于管理多个 ZoneGroup,支持全局复制和数据同步策略。
  • ZoneGroup(区域组)
    • Realm 下的一个区域集合。
    • 负责定义数据的复制和同步策略,保障数据的高可用性和容灾能力。
    • ZoneGroup 内的 Zone 之间会根据策略进行数据同步。
  • Zone(区域)
    • ZoneGroup 里的具体区域单元,可以是一个数据中心或逻辑分区。
    • 每个 Zone 运行一个或多个 RGW 实例,处理该区域的对象存储请求。
    • Zone 内的 RGW 实例通常配置负载均衡,保障请求高效处理。
  • RGW(Rados Gateway)
    • 对象存储的访问入口,兼容 S3 和 Swift API。
    • 负责处理客户端请求、鉴权、访问控制以及数据的读写。
    • RGW 运行在 Ceph 集群节点上,直接与底层存储交互。

5、创建RGW

创建 Realm

radosgw-admin realm create --rgw-realm=myrealm --default

创建 ZoneGroup

radosgw-admin zonegroup create --rgw-zonegroup=myzonegroup --master --default

创建 Zone

radosgw-admin zone create --rgw-zonegroup=myzonegroup --rgw-zone=myzone --master --default

同步配置

radosgw-admin period update --commit

再部署 RGW

ceph orch apply rgw myrealm --realm=myrealm --zonegroup=myzonegroup --zone=myzone --placement="1 ceph-01" --port=8080
  • myrealm:RGW 的 Realm 名称(类似逻辑隔离空间)。
  • myzonegroup:ZoneGroup 名称(区域组)。
  • myzone:Zone 名称(具体存储区域)。
  • --placement:指定运行 RGW 的节点,这里是在 ceph-01 上。

如果不想手动配置 Realm / ZoneGroup / Zone,可以直接:

ceph orch apply rgw default default default --placement="1 ceph-01"

创建用户

~ ❯ radosgw-admin user create --uid="testuser"--display-name="Test User"                                                                                                           root@ceph-01 15:32:36

{
    "user_id": "testuser",
    "display_name": "Test User",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "testuser",
            "access_key": "JSS7YU6E5YBOLRO6IC2S",
            "secret_key": "PkjgC46Zi5zDNQiBmWXRMKBoZTzvwj5LjoFCJHs5"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

6、使用对象存储

方式 1:S3 CLI(aws-cli)

安装 AWS CLI
pip install awscli
配置
~ ❯ aws configure                                                                                           
AWS Access Key ID [None]: JSS7YU6E5YBOLRO6IC2S
AWS Secret Access Key [None]: PkjgC46Zi5zDNQiBmWXRMKBoZTzvwj5LjoFCJHs5
Default region name [None]: us-east-1
Default output format [None]: json
创建桶(bucket)
~ ❯ aws --endpoint-url http://172.22.1.101:8080 s3 mb s3://mybucket                                         
make_bucket: mybucket
上传文件
~/vdbench50407 ❯ aws --endpoint-url http://172.22.1.101:8080 s3 cp read.txt s3://mybucket/                   
upload: ./read.txt to s3://mybucket/read.txt   
列出文件
~/vdbench50407 ❯ aws --endpoint-url http://172.22.1.101:8080 s3 ls s3://mybucket/                           
2025-08-12 15:50:27        710 read.txt

方式 2:s3cmd

安装 s3cmd
  • Ubuntu/Debian:
apt update && apt install -y s3cmd
  • CentOS/RHEL:
yum install -y s3cmd
运行配置命令
s3cmd --configure
按提示填写参数
配置项描述示例填写说明
Access KeyH1YK9X4WT4PMC3U4TZ8G你用 radosgw-admin user create 创建用户时得到的 Access Key
Secret Keyh7QAmj9sKQoBROkOArxg7I2xjVYQ3w6xNx1pMkGA同上 Secret Key
Default Regionus-east-1任何有效值即可,推荐和 RGW Realm 一致
S3 Endpointhttp://172.22.1.101:8080你的 RGW 节点 IP 和端口
DNS-style bucket+hostname:port template%(bucket)s必须是这个,不要写成 URL,表示 path-style 访问
Encryption password空(直接回车)用于本地文件加密,Ceph RGW 不需要
Path to GPG program/usr/bin/gpg默认即可
Use HTTPS protocolNo你的 RGW 是 HTTP,不是 HTTPS
HTTP Proxy server name空(直接回车)如果有代理才填
HTTP Proxy server port0同上
配置示例

你也可以直接创建 ~/.s3cfg 文件,内容如下(替换成你的实际信息):

[default]
access_key = JSS7YU6E5YBOLRO6IC2S
secret_key = PkjgC46Zi5zDNQiBmWXRMKBoZTzvwj5LjoFCJHs5
host_base = 172.22.1.101:8080
host_bucket =
use_https = False
signature_v2 = False
dns_bucket = False
常用命令示范
# 列出所有bucket
~/vdbench50407 ❯ s3cmd ls                                                                                   
2025-08-1207:49  s3://mybucket

# 创建bucket
s3cmd mb s3://testbucket123

# 上传文件
~/vdbench50407 ❯ s3cmd put write.txt s3://testbucket123/                                                     
upload: 'write.txt'-> 's3://testbucket123/write.txt'  [1 of 1]
710 of 710   100% in    0s    92.25 KB/s  done

# 下载文件
~/vdbench50407 ❯ s3cmd get s3://testbucket123/write.txt /tmp                                                 
download: 's3://testbucket123/write.txt'-> '/tmp/write.txt'  [1 of 1]
710 of 710   100% in    0s    15.53 KB/s  done

# 删除文件
s3cmd del s3://testbucket123/write.txt

# 删除bucket(必须空桶)
s3cmd rb s3://testbucket123

7、注意事项

  • 确保 RGW 端口 8080 在防火墙和网络上是可访问的
  • host_bucket = %(bucket)s 是关键,使用 path-style 访问,避免 DNS 解析问题
  • use_https = False,因为默认 RGW HTTP 监听,除非你启用了 HTTPS
  • 如果之前用主机名访问失败,尝试用 IP 地址,或者配置 DNS/hosts

8、常见问题

  • 端口访问不了
    • 检查防火墙、SELinux(setenforce 0 测试)。
  • AWS CLI 提示签名错误
    • 确认 --endpoint-url 写对(必须带 http://)。
  • 上传大文件很慢
    • 调整 RGW 线程数:
ceph config set client.rgw rgw_thread_pool_size 512

声明:来自IT运维大爆炸,仅代表创作者观点。链接:https://eyangzhen.com/2249.html

IT运维大爆炸的头像IT运维大爆炸

相关推荐

关注我们
关注我们
购买服务
购买服务
返回顶部