恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Ceph radosgw 手册解读:RADOS 对象存储的 HTTP REST 网关部署与使用日志配置

  • 首页
  • 资讯中心
  • /
  • Ceph radosgw 手册解读:RADOS 对象存储的 HTTP REST 网关部署与使用日志配置

相关资讯

工业配套变压器选型指南:进口设备电压不匹配的解决方案 2026/9/23 4:55:51
Java生产级RAG架构:LangChain4j+LangGraph4j实战指南 2026/9/23 4:50:50
动态规划进阶:数位 DP(Digit DP)与记忆化搜索模板(数字计数与无重复数字排列) 2026/9/23 4:50:50

最新资讯

3个关键优化让朝鲜语输入法输入延迟降低60%的速查手册
告别白色图标:前端加载失败的3个最佳实践
Thunderbird「Export for Mobile」二维码数据格式规范(Version 1)深度解析
Apache Druid Graphite Emitter 扩展完全指南:将 Druid 指标实时接入 Graphite 监控体系
Druid 与 Kudu 对比分析:面向 OLAP 的预聚合列式存储与面向 OLTP 的可更新行式存储
按需求选择免费查重和AIGC工具:字数、隐私与报告对比

今日推荐

3招搞定手机怎么下载微信面试难题实战项目解析
清单计价规范2013手写实现:3个血泪坑教你避开90%的返工
搞定msn股票中国数据延迟:实战项目里省下的200ms

本周热门

BrewUI:给Homebrew套上图形界面,让macOS软件包管理更简单
BrewUI:让Homebrew包管理变得可视化与高效
公式与文本对齐全攻略:从Word到LaTeX的实用技巧

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

Ceph radosgw 手册解读:RADOS 对象存储的 HTTP REST 网关部署与使用日志配置

发布时间:2026/9/23 4:55:51
Ceph radosgw 手册解读:RADOS 对象存储的 HTTP REST 网关部署与使用日志配置 存储分布式文件系统对象存储后端高可用【免费下载链接】cephCeph is a distributed object, block, and file storage platform项目地址https://gitcode.com/gh_mirrors/ce/ceph点击查看免费下载Ceph 的radosgwRADOS Gateway又称 Ceph Object Gateway / RGW是连接 S3/Swift 风格 HTTP 接口与底层 RADOS 对象存储的守护进程本文以 doc/man/8/radosgw.rst 手册页为骨架完整讲解其启动选项、基于 Apachemod_proxy_fcgi的 FastCGI 部署配置、认证密钥生成与守护进程启动流程并结合仓库源码剖析使用日志usage log的异步收集、分片与刷盘机制。读完本文你将掌握radosgw从配置、认证到运维排障的完整实战方案。radosgw 是什么:program:radosgw 是 RADOS 对象存储的 HTTP REST 网关属于 Ceph 分布式存储系统的组成部分。它的核心职责是把用户发来的 HTTP 请求翻译成对 RADOS 集群的对象操作从而让应用可以通过标准对象存储接口访问 Ceph。手册页明确指出它传统上是基于 libfcgi 实现的 FastCGI 模块可配合任何支持 FastCGI 的 Web 服务器如 Apache、Nginx使用在现代 Ceph 中前端解析逻辑 显示rgw_frontends配置项默认会启用内置的beast基于 Boost.Beast 的异步 HTTP 服务器前端而fastcgi仍是可配置的经典选项。radosgw守护进程需要与集群中的 MON 通信以获得 RADOS 访问能力因此其启动参数与 Ceph 通用的-c、-m、--cluster等选项完全兼容。命令行选项详解radosgw的启动选项与 Ceph 其他守护进程如ceph-mon、ceph-osd保持一致均为 Ceph 通用配置体系的子集选项说明-c ceph.conf, --confceph.conf使用指定的ceph.conf配置文件替代默认的/etc/ceph/ceph.conf用于在启动时确定 MON 地址-m monaddress[:port]直接连接指定的 MONmonaddress[:port]跳过对ceph.conf的解析-i ID, --id ID设置 radosgw 名称中的 ID 部分-n TYPE.ID, --name TYPE.ID设置网关使用的 RADOS 用户名例如client.radosgw.gateway--cluster NAME设置集群名称默认ceph-d前台运行日志输出到 stderr-f前台运行日志输出到常规位置如/var/log/ceph/--rgw-regionregion指定 radosgw 运行所在的 region旧版多站点配置--rgw-zonezone指定 radosgw 运行所在的 zone其中--rgw-region与--rgw-zone属于多站点历史遗留参数。从 前端初始化代码 可以看到当同时设置了rgw_region而未设置rgw_zonegroup时Ceph 会自动将 region 值转换并赋给rgw_zonegroup保证旧配置平滑迁移到 zonegroup 体系。基于 Apache 的 FastCGI 部署配置手册页指出早期 RADOS Gateway 需要配合Apache与mod_fastcgi使用如今改用mod_proxy_fcgi模块替代mod_fastcgi。两者工作方式不同mod_proxy_fcgi需要依赖mod_proxy提供 FastCGI 协议支持因此服务器中必须同时加载mod_proxy和mod_proxy_fcgi两个模块。与mod_fastcgi不同mod_proxy_fcgi不能自行拉起应用进程。部分平台提供fcgistarter工具来完成该职责否则需要使用外部进程管理如 systemd、supervisord来启动 radosgw。第 1 步配置 Ceph 配置文件对于使用 localhost TCP 的 Apache 2.2 及早期 Apache 2.4在/etc/ceph/ceph.conf中追加如下[client.radosgw.gateway]段[client.radosgw.gateway] host {hostname} keyring /etc/ceph/ceph.client.radosgw.keyring log_file /var/log/ceph/client.radosgw.gateway.log rgw_frontends fastcgi socket_port9000 socket_host0.0.0.0 rgw_print_continue false要点说明host必须是本机可解析的主机名作为该实例的标识。keyring指向 radosgw 用于与集群认证的密钥环文件。rgw_frontends声明使用fastcgi前端监听0.0.0.0:9000。注意该配置项同时支持beast、civetweb等前端从 前端解析实现 可以看到当配置串中出现beast时会被标记为 HTTP 前端并且代码会检查port写法是否存在多余空格如port 80避免最常见的配置笔误。rgw_print_continue false关闭 100-continue 行为避免与前端代理产生兼容性问题。第 2 步配置网关 VirtualHostDebian/Ubuntu在/etc/apache2/conf-available/rgw.conf中添加VirtualHost *:80 ServerName localhost DocumentRoot /var/www/html ErrorLog /var/log/apache2/rgw_error.log CustomLog /var/log/apache2/rgw_access.log combined # LogLevel debug RewriteEngine On RewriteRule .* - [EHTTP_AUTHORIZATION:%{HTTP:Authorization},L] SetEnv proxy-nokeepalive 1 ProxyPass / fcgi://localhost:9000/ /VirtualHostCentOS/RHEL在/etc/httpd/conf.d/rgw.conf中添加VirtualHost *:80 ServerName localhost DocumentRoot /var/www/html ErrorLog /var/log/httpd/rgw_error.log CustomLog /var/log/httpd/rgw_access.log combined # LogLevel debug RewriteEngine On RewriteRule .* - [EHTTP_AUTHORIZATION:%{HTTP:Authorization},L] SetEnv proxy-nokeepalive 1 ProxyPass / fcgi://localhost:9000/ /VirtualHost两者唯一的差别在于日志目录/var/log/apache2与/var/log/httpd。关键配置行解析RewriteRule .* - [EHTTP_AUTHORIZATION:%{HTTP:Authorization},L]把请求的Authorization头注入环境变量HTTP_AUTHORIZATION。这是 S3 签名认证能否生效的关键——S3 的 AWS Signature 通过 HTTPAuthorization头传递Apache 默认不会把它暴露给后端必须通过该规则透传。SetEnv proxy-nokeepalive 1关闭后端 keepalive避免 FastCGI 连接复用造成请求串扰。ProxyPass / fcgi://localhost:9000/将所有请求反向代理到 9000 端口的 radosgw FastCGI 服务。第 3 步可选Unix Socket 方式代理对于 CentOS/RHEL手册页还给出基于 Unix Domain Socket 的替代配置VirtualHost *:80 ServerName localhost DocumentRoot /var/www/html ErrorLog /var/log/httpd/rgw_error.log CustomLog /var/log/httpd/rgw_access.log combined # LogLevel debug RewriteEngine On RewriteRule .* - [EHTTP_AUTHORIZATION:%{HTTP:Authorization},L] SetEnv proxy-nokeepalive 1 ProxyPass / unix:///var/run/ceph/ceph.radosgw.gateway.fastcgi.sock|fcgi://localhost:9000/ /VirtualHostProxyPass使用unix://socket 路径|fcgi://...语法将请求通过本地 Unix socket 转发给 radosgw可避免 TCP 回环开销并提高安全性。此时需保证 ceph.conf 中rgw_frontends的socket_port/socket_host与 socket 文件路径匹配。第 4 步生成 radosgw 认证密钥ceph-authtool -C -n client.radosgw.gateway --gen-key /etc/ceph/keyring.radosgw.gateway ceph-authtool -n client.radosgw.gateway --cap mon profile rgw --cap osd profile rgw /etc/ceph/keyring.radosgw.gateway第一条命令创建新密钥环并生成随机密钥用户名取client.radosgw.gateway。第二条命令为该用户授予 MON 的profile rgw与 OSD 的profile rgw权限。profile rgw是 Ceph 为对象网关预定义的最小权限集合只允许访问 RADOS 网关所需的对象与池遵循最小权限原则。第 5 步将密钥加入集群认证库ceph auth add client.radosgw.gateway --in-filekeyring.radosgw.gateway该命令把上一步生成的密钥环导入集群的认证数据库ceph auth此后网关即可凭该 keyring 完成与 MON/OSD 的握手认证。注意把keyring.radosgw.gateway换成实际相对路径且保持与ceph.conf中keyring /etc/ceph/ceph.client.radosgw.keyring的引用一致。第 6 步启动 Apache 与 radosgwDebian/Ubuntusudo /etc/init.d/apache2 start sudo /etc/init.d/radosgw startCentOS/RHELsudo apachectl start sudo /etc/init.d/ceph-radosgw start启动顺序上应先启动 radosgw提供 FastCGI 服务再启动 Apache作为反向代理或两者并行启动后验证连通性。部署完成后通过 curl 访问http://localhost/即可看到网关的响应。使用日志Usage Log机制异步日志架构radosgw维护一份异步使用日志usage log用于累积用户操作的统计信息并周期性刷写flush。日志可通过radosgw-admin查询与管理。日志记录的信息包括总数据传输量total data transfer总操作数total operations成功操作数total successful operations从 UsageLogger 实现 可以看到其核心工作机制每条使用记录按rgw_user_bucket用户 桶聚合到内存中的usage_map同一桶的多次操作会合并merge成一条 entry。时间按小时取整round_to_hour()见 rgw_log.cc因此统计以小时为分辨率归档。记账归属规则数据默认记在bucket 所有者名下但服务级操作如 list bucket会记在操作发起用户名下。insert()中还处理了payer字段——存在付费方payer时记账到付费方否则记到属主。系统请求system request如多站点复制产生的内部操作不记入使用日志rgw_log.cc。配置参数与默认值手册页给出的示例配置如下[client.radosgw.gateway] rgw_enable_usage_log true rgw_usage_log_tick_interval 30 rgw_usage_log_flush_threshold 1024 rgw_usage_max_shards 32 rgw_usage_max_user_shards 1各参数含义与仓库中 src/common/options/rgw.yaml.in 声明的默认值汇总参数类型默认值含义rgw_enable_usage_logboolfalse是否启用使用日志rgw_usage_log_tick_intervalint30周期性刷写日志的间隔秒数未达到阈值也会按此周期刷新rgw_usage_log_flush_thresholdint1024待刷写的合并条目数达到该值即触发同步刷写一条 entry 对应一个桶上的一次或多次操作rgw_usage_max_shardsint32使用日志数据分布的 RADOS 对象分片总数上限必须全集群一致rgw_usage_max_user_shardsint1单个用户的记录最多横跨的分片数最小值1用于限制单用户记录的扇出其中rgw_usage_log_tick_interval与rgw_usage_log_flush_threshold的配合逻辑在 rgw_log.cc 中有清晰体现set_timer()通过timer.add_event_after(tick_interval, ...)周期触发flush()而insert_user()在num_entries flush_threshold时立即执行一次同步刷写。守护进程退出时析构函数也会执行最后一次flush()并取消定时器保证残留数据不丢失。分片一致性警告重点手册页特别给出warning所有 RGW 实例与radosgw-admin命令必须使用相同的rgw_usage_max_shards值。如果守护进程之间或集群与 admin 工具之间取值不同使用日志的写入与读取/清理会命中不同的对象表现为usage show结果看似为空或清理trim失败。因为在 options 定义 中该参数被标记为必须全集群统一推荐用以下方式强制统一ceph config set global rgw_usage_max_shards N或者在使用radosgw-admin时显式传入命令行参数radosgw-admin usage show --rgw-usage-max-shards N radosgw-admin usage trim --rgw-usage-max-shards N通过 radosgw-admin 管理与查询使用日志的管理命令注册在 radosgw-admin 命令表 中radosgw-admin usage show展示使用统计。支持--start-date/--end-date限定时间范围解析逻辑 使用utime_t::parse_date解析也支持按 bucket 过滤。radosgw-admin usage trim清理/删除指定范围的使用日志数据用于释放 RADOS 中的日志对象空间。典型的查询命令# 查看最近一小时的使用统计 radosgw-admin usage show --start-date 2026-09-22 00:00:00 # 按用户查看 radosgw-admin usage show --uid user-id # 清理 30 天前的使用日志 radosgw-admin usage trim --start-date 2026-08-01 --end-date 2026-08-23与 ops log 的区分使用日志usage log统计带宽与操作计数而**操作日志ops log**记录每一次具体操作明细两者通过 rgw.yaml.in 中相互独立的开关控制rgw_enable_usage_log与rgw_enable_ops_log默认均为false。ops log 可写入 RADOSrgw_ops_log_rados、Unix socketrgw_ops_log_socket_path或本地文件rgw_ops_log_file_path且 RADOS 方式不会自动清理需配合radosgw-admin log rm管理。日常容量规划与计量应使用 usage log安全审计与排障则依赖 ops log。参考手册原文doc/man/8/radosgw.rst前端初始化与rgw_frontends解析src/rgw/rgw_appmain.cc使用日志实现UsageLogger、tick/flush 逻辑src/rgw/rgw_log.cc使用日志配置项定义与默认值src/common/options/rgw.yaml.inadmin 工具命令注册与解析src/rgw/radosgw-admin/radosgw-admin.cc相关手册radosgw-admin(8)、ceph(8)赞分享存储分布式文件系统对象存储后端高可用【免费下载链接】cephCeph is a distributed object, block, and file storage platform项目地址https://gitcode.com/gh_mirrors/ce/ceph点击查看免费下载相关推荐Rook对象存储配置RGW网关的部署和使用完全教程Rook对象存储配置RGW网关的部署和使用完全教程 Rook是一个专为Kubernetes设计的存储编排系统能够简化分布式存储的部署和管理。本文将详细介绍如云原生存储容器编排运维Ceph SQLite VFS 实战指南将 SQLite 数据库无缝落地到 RADOS 对象存储Ceph SQLite VFS 实战指南将 SQLite 数据库无缝落地到 RADOS 对象存储 SQLite 是最流行的嵌入式关系数据库Ceph 是分布式存储分布式文件系统对象存储后端高可用ceph-clsinfo 详解Ceph RADOS 对象类objclass的名称、版本与架构信息查看工具ceph clsinfo 详解Ceph RADOS 对象类objclass的名称、版本与架构信息查看工具 导读 ceph clsinfo 是 Ceph 发存储分布式文件系统对象存储后端高可用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号