首页/系统与基础设施/存储速查/Ceph 对象网关与 S3 兼容接口
分布式与对象存储70 条

Ceph 对象网关与 S3 兼容接口

RGW(radosgw)把 RADOS 对象存储包装成 S3 与 Swift 兼容的 HTTP 接口,应用可用标准 SDK 直接读写 Ceph。实例本身无状态,可多副本部署并置于负载均衡之后。本文说明其组成、依赖池与常见运维命令。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​​‌​‌​‌‌‌​​​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌‌‌​‌‌‌​‌‌‌​​‌​‌‌​‌​‌‌‌​​‌‌​​‌‌​​‌‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

对象网关的定位

Ceph 底层只有对象接口,radosgw(RGW)在其上实现 S3 与 Swift 兼容的 HTTP API,应用不必改造就能使用标准对象存储 SDK。RGW 实例本身无状态,可以横向扩展多个实例并置于负载均衡之后,桶索引与对象数据则落在 RADOS 池中。

基本信息

服务名radosgw(软件包 ceph-radosgw)
兼容接口S3 与 Swift,多站点可组织为 realm、zonegroup、zone
前端内置 civetweb 或 beast,默认端口与 TLS 配置以官方文档为准
依赖池根池、元数据池、桶索引池、数据池与日志池
鉴权方式S3 使用访问密钥对,需与上层网关配合控制来源
扩展方式多实例无状态,前置 HAProxy 或 nginx 做负载均衡

典型使用场景

  • 应用从公有云对象存储迁到自建:S3 兼容接口可复用现有 SDK
  • 需要容量大、单位成本可控的备份与归档落点
  • 多机房容灾:用 realm 与 zonegroup 建立单向或双向同步
  • 与容器平台或大数据组件集成:这些生态多数只认 S3 接口
  • 本地开发与测试:用兼容接口替代线上对象存储做联调

用户与桶管理

用户与桶管理
radosgw-admin user create --uid=app1 --display-name=app1   # 建用户并生成访问密钥
radosgw-admin user info --uid=app1           # 查看密钥与用量
radosgw-admin bucket stats --bucket=bk1      # 单桶对象数与容量
radosgw-admin sync status                    # 多站点同步状态
radosgw-admin period update --commit         # 提交周期变更,多站点场景
ceph osd pool application enable <pool> rgw  # 标记池用途便于识别与调优

网关依赖池作用

池用途注意点
根池保存 realm、zonegroup 与用户等元数据必须存在,不可随意删除或重建
元数据池保存用户、桶等元数据对象占用随对象数量增长,容量要留余量
索引池保存桶内对象索引,可分片分片不足时大桶写入形成热点
数据池保存对象数据本体可用纠删码池降低空间成本
日志池运行日志与用量统计可定期清理,占用会持续增长
对象数据可以放在纠删码池上节省空间,但桶索引池必须使用副本池,因为索引需要频繁的原地更新。索引分片数偏小时,单个大桶的写入会集中到少数分片,表现为延迟抖动。具体池名与分片配置以官方文档和当前版本为准。
根池保存着 realm 与用户元数据,删除或重建会导致所有访问密钥失效、桶映射丢失。清理存储池之前先确认它不属于对象网关的根池或元数据池。

能力边界

对象网关提供的是对象语义,不支持文件系统的目录结构与原地随机写,需要 POSIX 语义的应用应改用 CephFS。S3 特性覆盖度随版本演进,分段上传、桶策略、版本控制等能力在不同版本存在差异,落地前应先按官方文档的功能矩阵逐项核对。

易错点

  • 单实例直接对外服务:实例故障即业务中断,应多实例加负载均衡
  • 桶索引池分片过少:大桶写入集中在少量分片,出现明显热点与延迟抖动
  • 网关仅靠密钥鉴权就暴露公网:缺少限流与来源控制易被刷量,应叠加网关与访问策略
  • 用对象接口替代数据库:对象不支持原地随机写,会产生大量重写与额外开销
  • 多站点环境忘记提交周期变更:配置只在本地生效,同步关系实际并未建立

数据来源与参考

  • Ceph 官方文档《Ceph Object Gateway (RGW)》章节
  • Amazon S3 API Reference 官方接口规范
  • Ceph 官方文档《S3 API 兼容性说明》

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/ceph-rgw-s3-compatible.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​​‌​‌​‌‌‌​​​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌‌‌​‌‌‌​‌‌‌​​‌​‌‌​‌​‌‌‌​​‌‌​​‌‌​​‌‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​