义乌网站建设成都网站设计,在线网页翻译软件,番禺网站建设哪里好,济南优化网站排名新钛云服已累计为您分享883篇技术干货简 介Ceph Tentacle 版本对对象网关 (RGW) 的速率限制功能进行了重大增强#xff0c;解决了长期以来多租户对象存储环境管理的一大空白。通过增加对 LIST 和 DELETE 操作的速率限制#xff0c;以及改进的 STS 集成#xff0c;管理员现在…新钛云服已累计为您分享883篇技术干货简 介Ceph Tentacle 版本对对象网关 (RGW) 的速率限制功能进行了重大增强解决了长期以来多租户对象存储环境管理的一大空白。通过增加对 LIST 和 DELETE 操作的速率限制以及改进的 STS 集成管理员现在可以对其存储基础设施中的资源消耗进行更精细的控制。了解 Ceph 对象网关 (RGW) 中的速率限制Ceph 对象网关中的速率限制一直是控制资源消耗、防止个别用户或应用程序过度占用集群资源的强大工具。在此增强功能之前RGW 支持以下速率限制读取操作 (max-read-ops)控制 GET 请求频率写入操作 (max-write-ops)限制 PUT 请求速率读取带宽 (max-read-bytes)限制数据流出 (egress)写入带宽 (max-write-bytes)控制数据流入 (ingress)这些限制在可配置的时间窗口内运行由 rgw_ratelimit_interval 选项控制传统上默认为 60 秒。系统使用令牌桶算法来跟踪资源消耗当超过限制时RGW 返回 HTTP 503 响应以节流客户端。速率限制的范围速率限制可以应用于多个范围用户范围限制适用于特定用户在所有桶中的操作桶范围限制适用于特定桶中的操作全局范围限制适用于整个集群中所有用户和桶的操作匿名范围针对未通过身份验证的请求的限制注意事项Ceph 对象网关的速率限制功能并不是一个完整的 QoS 系统。关键点包括基于RGW 实例的执行限制是在每个 RGW 实例上执行的而不是集群范围。如果有 2 个 RGW 且期望限制为 10 ops/min则应将每个 RGW 配置为 5 ops/min。如果客户端请求负载在端点之间分布不均所需的限制可能需要设得比预期更低。限制交集必须同时满足用户级和桶级限制。如果超过其中任何一个限制请求都将被拒绝。无流量整形被节流的请求会被立即拒绝 (503)而不是排队等待。无请求中途节流带宽是在请求完成后计算的而不是在进行过程中。超过限制的用户会进入“debt”状态最大为限制的 2 倍并在接下来的时间间隔偿还“debt”之前被阻止发起新请求。问题缺少对 List 和 Delete 操作的控制虽然读取和写入操作限制为数据传输操作提供了安全保障但有两种关键的操作类型仍未受到控制List 操作桶 LIST 操作特别是针对拥有数百万对象的桶会给集群带来巨大负载。这些操作广泛扫描桶索引消耗索引池上的 RADOS 读取 IOPS高频执行时会影响集群整体性能使用需要过滤的通配符 (prefix) 和分隔符 (delimiter) 时成本很高之前的局限性LIST 操作使用 GET/HEAD HTTP 方法被计入 max-read-ops 限制下的读取操作这使得无法将 LIST 操作与常规的 GET 操作分开控制。这意味着管理员无法在允许标准数据检索的同时防止 list-heavy(过渡查询) 工作负载消耗掉整个读取操作预算。考虑一个通过重复列出带有前缀的标识来进行检查点验证的工作负载$ aws s3api list-objects-v2 --bucket data --prefix checkpoint-flag --max-items 1即使返回的数据很少每个请求都会触发消耗集群资源的索引扫描操作。例如数据湖仓环境中的 Apache Iceberg 表在维护元数据时特别具有挑战性其 deleteOrphanFiles 过程用于清理未引用的数据文件需要完整的表列表这可能会使对象存储系统不堪重负。Delete 操作单对象和多对象删除操作也未受控制这给以下方面带来了挑战在批量删除场景中防止滥用管理垃圾回收工作负载控制存储容量回收的速率防范意外或恶意的海量删除事件之前的局限性DELETE 操作被归类为写入操作非 GET/HEAD HTTP 方法并计入 max-write-ops这使得无法将删除速率与 PUT 操作分开限制。结合了上传和删除的工作负载必须在两种操作类型之间平衡其写入操作预算。由于缺乏针对这些操作的专用控制管理员在管理混合了不同比例的列出、读取、写入和删除操作的工作负载时选择非常有限。解决方案Tentacle 中增强的速率限制笔尖划过的每一道题都是通往梦想的阶梯。熬过的每一个深夜从盛夏到寒冬从清晨到深夜你的坚持从不是孤军奋战这场考试只管全力以赴Tentacle 引入了两个新的速率限制参数来填补这些空白。新配置选项Max-list-ops指定每个累积间隔内的最大桶列表请求数。值为 0默认值表示禁用此限制以保持向后兼容性。Max-delete-ops指定每个累积间隔内的最大删除操作数。值为 0默认值表示禁用此限制。关键点向后兼容行为重要新限制与现有的读取/写入操作限制协同工作LIST 操作同时计入 max-read-ops和max-list-opsDELETE 操作同时计入 max-write-ops和max-delete-ops请求必须满足这两个限制才能继续。除非管理员显式配置新参数否则从早期版本升级的用户将看不到任何行为变化。可配置的时间窗口rgw_ratelimit_interval 配置选项允许管理员调整速率限制累积的时间间隔。这对于具有突发特性的工作负载尤为重要$ ceph config set client.rgw.rgw.1 rgw_ratelimit_interval 10默认的 60 秒间隔可能并不适合所有工作负载。突发性工作负载例如 Apache Iceberg 的元数据维护操作快照过期、孤立文件清理可能会在一个时间窗口的前几秒内就耗尽其 LIST 操作预算。由于 Iceberg 的 deleteOrphanFiles 过程会快速连续列出可能分布在数千个分区中的完整表累积的操作会迅速超过速率限制导致长时间的节流从而阻塞后续的维护任务。较短的间隔1-10 秒可以通过允许操作预算更频繁地补充来提供更一致的行为防止关键表维护工作流中出现长时间的停顿。STS 集成STS/IAM 功能的一项新增强确保了当用户使用通过安全令牌服务 (STS) 获取的临时凭证进行身份验证时速率限制现在可以正确应用当用户切换到 IAM 角色并使用临时凭证操作时账号上配置的用户速率限制将继续生效。对于使用 STS 凭证执行的操作无论用户如何通过身份验证桶速率限制都会得到充分执行。全局速率限制现在可以无缝处理联合身份验证流程例如 AssumeRoleWithWebIdentity。这填补了之前的空白即速率限制执行在 STS 会话中可能无法正常工作的情况确保了跨所有身份验证方法的一致速率限制策略。速率限制配置示例示例 1配置 LIST 操作速率限制设置具有列表操作限制的用户以控制桶列表的频率。创建测试用户$ radosgw-admin user create --uidtestuser --display-nameTest User{ user_id: testuser, display_name: Test User, email: , suspended: 0, max_buckets: 1000, subusers: [], keys: [ { user: testuser, access_key: TESTUSER_ACCESS_KEY, secret_key: TESTUSER_SECRET_KEY } ], caps: [], op_mask: read, write, delete, type: rgw}设置列表操作的速率限制。我们在集群中部署了两个 RGW 服务因此如果我们想将操作限制为 10我们需要将操作限制除以集群中运行的 RGW 数量$ radosgw-admin ratelimit set --ratelimit-scopeuser --uidtestuser \ --max-list-ops5 \ --max-read-ops100为该用户启用速率限制$ radosgw-admin ratelimit enable --ratelimit-scopeuser --uidtestuser验证配置$ radosgw-admin ratelimit get --ratelimit-scopeuser --uidtestuser{ user_ratelimit: { max_read_ops: 100, max_write_ops: 0, max_list_ops: 5, max_delete_ops: 0, max_read_bytes: 0, max_write_bytes: 0, enabled: true }}示例 2配置 DELETE 操作速率限制设置删除操作限制以控制删除速率。为同一用户设置删除操作的速率限制$ radosgw-admin ratelimit set --ratelimit-scopeuser --uidtestuser \ --max-delete-ops10 \ --max-write-ops100验证更新后的配置$ radosgw-admin ratelimit get --ratelimit-scopeuser --uidtestuser{ user_ratelimit: { max_read_ops: 100, max_write_ops: 100, max_list_ops: 5, max_delete_ops: 10, max_read_bytes: 0, max_write_bytes: 0, enabled: true }}观察速率限制的实际效果让我们看看当用户超过其配置的限制时会发生什么。测试场景超过列表操作限制根据示例 2 的配置每个 RGW 5 个 list ops每分钟总计 10 个 list ops使用测试凭证配置 AWS CLI$ aws configure set aws_access_key_id TESTUSER_ACCESS_KEY$ aws configure set aws_secret_access_key TESTUSER_SECRET_KEY创建测试桶$ aws --endpoint-url http://rgw.example.com s3 mb s3://test-bucketmake_bucket: test-bucket向桶中填充测试对象$ for i in {1..100}; do echo Test object $i | aws --endpoint-url http://rgw.example.com s3 cp - s3://test-bucket/object-$idone快速执行列表操作以超过限制。我将使用一个脚本利用 curl 重复列出 test-bucket 桶的内容bash script.shTesting Rate Limit with list-objects-v2...------------------------------------------------Attempt 1: ✅ SUCCESS (200)Attempt 2: ✅ SUCCESS (200)Attempt 3: ✅ SUCCESS (200)...Attempt 10: ✅ SUCCESS (200)Attempt 11: BLOCKED (503) - Limit ReachedAttempt 12: BLOCKED (503) - Limit ReachedAttempt 13: BLOCKED (503) - Limit Reached测试删除速率限制尝试使用 AWS CLI 客户端删除超过配置限制每分钟 20 次删除的对象$ for i in {1..25}; do echo Delete attempt $i aws --endpoint-url http://rgw.example.com s3 rm s3://test-bucket/object-$i 21 | grep -E delete:|errordoneDelete attempt 1delete: s3://test-bucket/object-1Delete attempt 2delete: s3://test-bucket/object-2Delete attempt 3delete: s3://test-bucket/object-3...Delete attempt 19delete: s3://test-bucket/object-19Delete attempt 20delete: s3://test-bucket/object-20Delete attempt 21delete failed: s3://limits-bucket/object-21 argument of type NoneType is not iterableDelete attempt 22delete failed: s3://limits-bucket/object-22 argument of type NoneType is not iterable已知限制和未来扩展当前限制向后兼容性限制LIST 操作仍会计入 max-read-ops而 DELETE 操作会计入 max-write-ops。新的 max-list-ops 和 max-delete-ops 限制提供了额外的约束但并没有取代旧的限制。请求必须同时满足两个限制才能继续。这种设计选择保持了向后兼容性但也意味着你无法将 LIST/DELETE 操作与通用读取/写入操作预算完全隔离。多对象删除S3 DeleteObjects API批量删除目前未受到速率限制但已被跟踪以供未来增强RFE (https://bugzilla.redhat.com/show_bug.cgi?id 2393080)IAM 账号限制针对 IAM 账号而非用户的速率限制目前无法正常工作。这作为未来版本的 RFE 被跟踪。RFE(https://bugzilla.redhat.com/show_bug.cgi?id 2394369)分段上传统计在具有写入操作限制的分段上传过程中CreateMultipartUpload、UploadPart 和 CompleteMultipartUpload 操作均会计入写入操作限制。对于被分成许多部分的大型文件这会迅速消耗操作预算。RFE(https://bugzilla.redhat.com/show_bug.cgi?id 2396664)改进日志输出目前在达到速率限制时我们在 RGW 日志中只能看到以下模糊的错误这些错误没有指定达到了哪个速率限制。RFE(https://bugzilla.redhat.com/show_bug.cgi?id 2396664)2025-11-20T16:39:40.0300000 7f9e6423a640 2 req 15365199512736087891 0.001000024s s3:delete_obj check rate limiting2025-11-20T16:39:40.0300000 7f9e6423a640 20 req 15365199512736087891 0.001000024s op-ERRORHANDLER: err_no-2218 new_err_no-22182025-11-20T16:39:40.0300000 7f9e6423a640 2 req 15365199512736087891 0.001000024s s3:delete_obj http status503结 论Tentacle 版本中增加的 LIST 和 DELETE 操作速率限制代表了对象网关在成熟度上的重大提升。结合新的 STS 集成和可配置的时间间隔管理员现在拥有了管理多租户对象存储工作负载的全面工具。这些增强功能对于以下场景特别有价值实施部门级计费和资源治理的企业使用 OIDC 联合身份验证的云原生应用程序混合了重读取和密集元数据操作的数据分析平台虽然仍存在一些限制特别是关于多对象删除和 IAM 账号但当前的实现提供了生产就绪的能力并已在从细小对象写入到数百万对象列表的各种工作负载中得到了广泛测试。如有相关问题请在文章后面给小编留言小编安排作者第一时间和您联系为您答疑解惑。原文 https://ceph.io/en/news/blog/2025/rgw-rate-limiting/推荐阅读