9.11. 最接近数据的速率限值
作为存储管理员,您可以在使用 Ceph 对象网关配置在 Red Hat Ceph Storage 集群中保存对象时,根据操作和带宽设置用户和存储桶的速率限制。
9.11.1. 存储集群中的速率限制的目的
您可以在 Ceph 对象网关配置中设置用户和存储桶的速率限制。速率限制包括最大读取操作数、每分钟的写入操作数,以及每分钟可写入或读取的字节数或为每个存储桶读取。
在 REST 中使用 GET 或 HEAD 方法的请求是"读取请求",否则它们是"写入请求"。
Ceph 对象网关分别跟踪用户和 bucket 请求,不与其他网关共享,这意味着所需的配置的限制应除以活动对象网关的数量。
例如,如果用户 A 应每分钟限制为十个 ops,并且集群中有两个 Ceph 对象网关,则用户 A 的限制应该为五,即对于两个 Ceph 对象网关每分钟为十个 opss。如果 Ceph 对象网关之间没有平衡请求,则速率限制可能不足。例如,如果 ops 的限制是五,并且有两个 Ceph 对象网关,但负载平衡器仅向其中一个 Ceph 对象网关发送负载,则有效限制将是五个 ops,因为这个限制针对一个 Ceph 对象网关实施。
如果存储桶达到了限制,但没有供用户使用,反之亦然请求也会被取消。
请求被接受后发生带宽数。因此,即使存储桶或用户在请求期间达到其带宽限制,此请求也会进行。
Ceph 对象网关保留超过配置的值的"debt",并防止此用户或 bucket 发送更多请求,直到其"debt"被支付。"debt"最大大小是每分钟的 max-read/write-bytes 两倍。如果用户 A 每分钟有 1 字节读取限制,且此用户会尝试 GET 1 GB 对象,用户可以执行此操作。
用户 A 完成此 1 GB 操作后,Ceph 对象网关将阻止用户请求最多两分钟,直到用户 A 能够再次发送 GET 请求。
限制率的不同选项:
-
bucket:
--bucket
选项允许您为存储桶指定速率限制。 -
user:
--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]
示例
[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
示例
[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
示例
[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
示例
[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]
示例
[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
示例
[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
示例
[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
示例
[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
示例
[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]
示例
[ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope bucket --max-read-ops=1024
启用存储桶速率限制:
语法
radosgw-admin global ratelimit enable --ratelimit-scope=bucket
示例
[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]
示例
[ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope=user --max-read-ops=1024
启用用户速率限制:
语法
radosgw-admin global ratelimit enable --ratelimit-scope=user
示例
[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]
示例
[ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope=anonymous --max-read-ops=1024
启用用户速率限制:
语法
radosgw-admin global ratelimit enable --ratelimit-scope=anonymous
示例
[ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope=anonymous