文档目录

适用场景

  • 产品:ZCF
  • 组件:ZCE-S
  • 涉及对象:RGW、对象网关、配额缓存参数 rgw_bucket_quota_ttl
  • 版本:6.3.205
  • 触发条件: 多 RGW 场景下,用户配额缓存可能导致 total_size_b 读取到旧值或 0,需要调整 RGW 配额缓存时间。

问题现象

  • 当前版本用户配额通过异步任务更新缓存。
  • 在多 RGW 场景中,可能概率性出现 RGW 缓存导致 total_size_b 读取旧值或 0。
  • 需要将 rgw_bucket_quota_ttl 调整为 0,使每次请求实时查询配额。

判断方法

  1. 确认当前环境属于本文适用范围,并记录当前版本、目标版本、系统架构、操作系统、部署形态和存储类型等关键信息。
  2. 执行 ceph -s,确认集群状态为 HEALTH_OK 或 HEALTH_WARN,且告警项不影响本次操作。
  3. 检查 RGW 节点 ceph.conf 当前是否已配置 rgw_bucket_quota_ttl。
  4. 配置完成后通过 ceph daemon ... config show | grep rgw_bucket_quota_ttl 验证参数生效。

原因说明

根因是多 RGW 场景下用户配额缓存存在时延,可能导致读取到旧值或 0。将 rgw_bucket_quota_ttl 设为 0 后,每次请求都实时查询配额,从而消除缓存不一致问题,但会让每个写入请求多一次 IO。

解决方案

1. 执行前准备

  • 风险等级:中风险
  • 整体变更过程中,以不影响现有业务正常运行为基本原则。
  • 调整前先确认集群状态健康,并备份所有 RGW 节点配置文件。

2. 处理步骤

  1. 确认集群状态。
   ceph -s
  • 预期结果:集群状态为 HEALTH_OK 或 HEALTH_WARN,且警告项不影响本次操作。
  1. 备份所有 RGW 节点配置文件。
   cp /var/lib/ceph/etc/ceph/ceph.conf /root
  • 预期结果:ceph.conf 备份完成,可用于回滚。
  1. 登录所有 RGW 节点并编辑配置文件。
   vi /var/lib/ceph/etc/ceph/ceph.conf
  • 可通过 6680 界面对象网关管理查看 RGW 节点。
  • 预期结果:进入配置文件编辑状态。
  1. 在 [global] 或对应 RGW 实例配置段中添加参数。
   rgw_bucket_quota_ttl = 0
  • 预期结果:配额缓存时间调整为 0。
  1. 在所有 RGW 节点重启 RGW 服务,使配置生效。
   systemctl restart radosgw@<rgw-name>.service
   systemctl status radosgw@<rgw-name>.service
  • <rgw-name> 需替换为实际 RGW 实例名称,可用 tab 补全。
  • 预期结果:服务状态为 active (running)。
  1. 验证配置参数是否已经生效。
   ceph daemon /var/lib/ceph/var/run/ceph/ceph-client.radosgw.rgw3.asok config show | grep rgw_bucket_quota_ttl
  • 预期结果:返回结果中可见 rgw_bucket_quota_ttl = 0。
  1. 执行业务功能验证。
  • 通过客户端进行少量对象上传、下载操作。
  • 预期结果:业务功能正常。

验证方法

  • 执行 ceph -s 确认集群状态正常。
  • 检查 systemctl status radosgw@<rgw-name>.service 为 active (running)。
  • 执行配置检查命令,确认 rgw_bucket_quota_ttl = 0 已生效。
  • 进行少量对象上传、下载,确认业务访问正常。

风险与回滚

  • 风险:每个写入请求会多一次 IO,对对象写入性能有轻微影响。
  • 风险等级:中。
  • 回滚:根据方案,通过恢复备份的 ceph.conf 配置并重新重启 RGW 服务进行回退。

异常处理建议

如变更过程中出现异常,应立即停止后续操作,并按回退方案进行恢复;必要时恢复备份配置并执行回退。

RGW 配额缓存调整 | 技术方案 · KB | ZStack 资源中心