9.11. 最高数据的速率限值
作为存储管理员,您可以使用 Ceph 对象网关配置在 Red Hat Ceph Storage 集群中保存对象时,根据操作和带宽设置用户和 bucket 的速率限值。
9.11.1. 存储集群中速率限制的目的
您可以在 Ceph 对象网关配置中设置用户和 bucket 的速率限值。速率限制包括读取操作的最大数量、每分钟写入操作数,以及每分钟可以写入或为每个存储桶写入或读取的字节数。
在 REST 中使用 GET 或 HEAD 方法的请求为"读取请求",否则它们是"写入请求"。
Ceph 对象网关单独跟踪用户和 bucket 请求,且不与其他网关共享,这意味着配置的限制应该被活跃对象网关的数量划分。
例如,如果用户 A 应每分钟限制为十个 ops,并且集群中有两个 Ceph 对象网关,则用户 A 的限制应该为五,即对于两个 Ceph 对象网关每分钟为十个 opss。如果请求在 Ceph 对象网关之间没有平衡,则速率限制可能会使用率不足。例如,如果 ops 的限制是五,并且有两个 Ceph 对象网关,但负载平衡器仅向其中一个 Ceph 对象网关发送负载,则有效限制将是五个 ops,因为这个限制针对一个 Ceph 对象网关实施。
如果存储桶达到了限制,但不是用户,则也会取消请求。
带宽计数在请求被接受后发生。因此,即使存储桶或用户在请求中间达到其带宽限制,此请求也会进行。
Ceph 对象网关保留比配置的值超过配置的字节的"debt",并防止此用户或 bucket 发送更多请求,直到其"debt"被支付为止。"debt"最大大小为每分钟最大读/写字节的两倍。如果用户 A 每分钟有 1 个字节读取限制,并且此用户尝试 GET 1 GB 对象,用户可以这样做。
用户 A 完成此 1 GB 操作后,Ceph 对象网关将阻止用户请求最多两分钟,直到用户 A 能够再次发送 GET 请求。
限制率的不同选项:
-
Bucket
:--bucket
选项允许您为存储桶指定速率限制。 -
user
: The-uid
选项允许您为用户指定速率限制。 -
最大读取 ops
:--max-read-ops
设置允许您指定每个 Ceph 对象网关每分钟读取 ops 的最大数量。0
代表禁用此设置,这意味着无限访问。 -
最大读取字节数
:--max-read-bytes
设置允许您指定每个 Ceph 对象网关每分钟的最大读取字节数。0
代表禁用此设置,这意味着无限访问。 -
最大写入 ops
:--max-write-ops
设置允许您指定每个 Ceph 对象网关每分钟写入 ops 的最大数量。0
代表禁用此设置,这意味着无限访问。 -
最大写入字节数 :
--max-write-bytes
设置允许您指定每个 Ceph 对象网关每分钟写入字节数上限。0
代表禁用此设置,这意味着无限访问。 -
速率限制范围
:--rate-limit-scope
选项设置速率限制的范围。选项为bucket
、用户
和匿名
。bucket 速率限制适用于存储桶,用户速率限制适用于用户,匿名应用到未经身份验证的用户。匿名范围仅适用于全局速率限制。
9.11.2. 启用用户速率限制
您可以在 Ceph 对象网关配置中为用户设置速率限值。用户的速率限制包括最大读取操作数、每分钟写入操作数,以及每分钟可以写入或读取的字节数。
当使用带有将 ratelimit-scope
设置为 user
的 radosgw-admin ratelimit set
命令,在设置速率限制值后您可以对用户启用速率限制。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装了 Ceph 对象网关。
流程
为用户设置速率限制:
语法
radosgw-admin ratelimit set --ratelimit-scope=user --uid=USER_ID [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
Example
[ceph: root@host01 /]# radosgw-admin ratelimit set --ratelimit-scope=user --uid=testing --max-read-ops=1024 --max-write-bytes=10240
如果 NUMBER_OF_OPERATIONS 或 NUMBER_OF_BYTES 的值为
0
,代表禁用特定的速率限制属性检查。获取用户速率限制:
语法
radosgw-admin ratelimit get --ratelimit-scope=user --uid=USER_ID
Example
[ceph: root@host01 /]# radosgw-admin ratelimit get --ratelimit-scope=user --uid=testing { "user_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 10240, "enabled": false } }
启用用户速率限制:
语法
radosgw-admin ratelimit enable --ratelimit-scope=user --uid=USER_ID
Example
[ceph: root@host01 /]# radosgw-admin ratelimit enable --ratelimit-scope=user --uid=testing { "user_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 10240, "enabled": true } }
可选:禁用用户速率限制:
语法
radosgw-admin ratelimit disable --ratelimit-scope=user --uid=USER_ID
Example
[ceph: root@host01 /]# radosgw-admin ratelimit disable --ratelimit-scope=user --uid=testing
9.11.3. 启用存储桶速率限制
您可以在 Ceph 对象网关配置中设置存储桶的速率限值。bucket 的速率限制包括最大读取操作数、每分钟写入操作数,以及每分钟可以写入或读取的字节数。
在使用 radosgw-admin ratelimit set
命令并将 ratelimit-scope
设为 bucket 时,您可以在设置速率限制值后启用 存储桶
的速率限制。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装了 Ceph 对象网关。
流程
为存储桶设置速率限制:
语法
radosgw-admin ratelimit set --ratelimit-scope=bucket --bucket= BUCKET_NAME [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
Example
[ceph: root@host01 /]# radosgw-admin ratelimit set --ratelimit-scope=bucket --bucket=mybucket --max-read-ops=1024 --max-write-bytes=10240
如果 NUMBER_OF_OPERATIONS 或 NUMBER_OF_BYTES 的值为
0
,代表禁用特定的速率限制属性检查。获取存储桶速率限制:
语法
radosgw-admin ratelimit get --ratelimit-scope=bucket --bucket=BUCKET_NAME
Example
[ceph: root@host01 /]# radosgw-admin ratelimit get --ratelimit-scope=bucket --bucket=mybucket { "bucket_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 10240, "enabled": false } }
启用存储桶速率限制:
语法
radosgw-admin ratelimit enable --ratelimit-scope=bucket --bucket=BUCKET_NAME
Example
[ceph: root@host01 /]# radosgw-admin ratelimit enable --ratelimit-scope=bucket --bucket=mybucket { "bucket_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 10240, "enabled": true } }
可选:禁用存储桶速率限制:
语法
radosgw-admin ratelimit disable --ratelimit-scope=bucket --bucket=BUCKET_NAME
Example
[ceph: root@host01 /]# radosgw-admin ratelimit disable --ratelimit-scope=bucket --bucket=mybucket
9.11.4. 配置全局速率限值
您可以在期间配置内读取或写入全局速率限制设置。您可以通过带有 global ratelimit
参数的全局速率限制设置来覆盖用户或存储桶的速率限制配置,这与 ratelimit set
, ratelimit enable
, 和 ratelimit disable
命令相对应。
在存在 realm 和 period 的多站点配置中,必须使用 period update --commit
命令提交对全局速率限制的更改。如果没有 period,则必须重启 Ceph 对象网关,才能使更改生效。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装了 Ceph 对象网关。
流程
查看全局速率限制设置:
语法
radosgw-admin global ratelimit get
Example
[ceph: root@host01 /]# radosgw-admin global ratelimit get { "bucket_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 0, "enabled": false }, "user_ratelimit": { "max_read_ops": 0, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 0, "enabled": false }, "anonymous_ratelimit": { "max_read_ops": 0, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 0, "enabled": false } }
为存储桶配置并启用速率限制范围:
为存储桶设置全局速率限值:
语法
radosgw-admin global ratelimit set --ratelimit-scope=bucket [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
Example
[ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope bucket --max-read-ops=1024
启用存储桶速率限制:
语法
radosgw-admin global ratelimit enable --ratelimit-scope=bucket
Example
[ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope bucket
为经过身份验证的用户配置和启用速率限制范围:
为用户设置全局速率限值:
语法
radosgw-admin global ratelimit set --ratelimit-scope=user [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
Example
[ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope=user --max-read-ops=1024
启用用户速率限制:
语法
radosgw-admin global ratelimit enable --ratelimit-scope=user
Example
[ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope=user
为未经身份验证的用户配置并启用速率限制范围:
为未经身份验证的用户设置全局速率限值:
语法
radosgw-admin global ratelimit set --ratelimit-scope=anonymous [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
Example
[ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope=anonymous --max-read-ops=1024
启用用户速率限制:
语法
radosgw-admin global ratelimit enable --ratelimit-scope=anonymous
Example
[ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope=anonymous