适用场景
- 产品: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,使每次请求实时查询配额。
判断方法
- 确认当前环境属于本文适用范围,并记录当前版本、目标版本、系统架构、操作系统、部署形态和存储类型等关键信息。
- 执行
ceph -s,确认集群状态为HEALTH_OK或HEALTH_WARN,且告警项不影响本次操作。 - 检查 RGW 节点
ceph.conf当前是否已配置rgw_bucket_quota_ttl。 - 配置完成后通过
ceph daemon ... config show | grep rgw_bucket_quota_ttl验证参数生效。
原因说明
根因是多 RGW 场景下用户配额缓存存在时延,可能导致读取到旧值或 0。将 rgw_bucket_quota_ttl 设为 0 后,每次请求都实时查询配额,从而消除缓存不一致问题,但会让每个写入请求多一次 IO。
解决方案
1. 执行前准备
- 风险等级:中风险
- 整体变更过程中,以不影响现有业务正常运行为基本原则。
- 调整前先确认集群状态健康,并备份所有 RGW 节点配置文件。
2. 处理步骤
- 确认集群状态。
ceph -s
- 预期结果:集群状态为
HEALTH_OK或HEALTH_WARN,且警告项不影响本次操作。
- 备份所有 RGW 节点配置文件。
cp /var/lib/ceph/etc/ceph/ceph.conf /root
- 预期结果:
ceph.conf备份完成,可用于回滚。
- 登录所有 RGW 节点并编辑配置文件。
vi /var/lib/ceph/etc/ceph/ceph.conf
- 可通过 6680 界面对象网关管理查看 RGW 节点。
- 预期结果:进入配置文件编辑状态。
- 在
[global]或对应 RGW 实例配置段中添加参数。
rgw_bucket_quota_ttl = 0
- 预期结果:配额缓存时间调整为 0。
- 在所有 RGW 节点重启 RGW 服务,使配置生效。
systemctl restart radosgw@<rgw-name>.service
systemctl status radosgw@<rgw-name>.service
<rgw-name>需替换为实际 RGW 实例名称,可用 tab 补全。- 预期结果:服务状态为
active (running)。
- 验证配置参数是否已经生效。
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。
- 执行业务功能验证。
- 通过客户端进行少量对象上传、下载操作。
- 预期结果:业务功能正常。
验证方法
- 执行
ceph -s确认集群状态正常。 - 检查
systemctl status radosgw@<rgw-name>.service为active (running)。 - 执行配置检查命令,确认
rgw_bucket_quota_ttl = 0已生效。 - 进行少量对象上传、下载,确认业务访问正常。
风险与回滚
- 风险:每个写入请求会多一次 IO,对对象写入性能有轻微影响。
- 风险等级:中。
- 回滚:根据方案,通过恢复备份的
ceph.conf配置并重新重启 RGW 服务进行回退。
异常处理建议
如变更过程中出现异常,应立即停止后续操作,并按回退方案进行恢复;必要时恢复备份配置并执行回退。
