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 设置为 userradosgw-admin ratelimit set 命令,在设置速率限制值后您可以对用户启用速率限制。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装了 Ceph 对象网关。

流程

  1. 为用户设置速率限制:

    语法

    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_OPERATIONSNUMBER_OF_BYTES 的值为 0,代表禁用特定的速率限制属性检查。

  2. 获取用户速率限制:

    语法

    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
        }
    }

  3. 启用用户速率限制:

    语法

    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
        }
    }

  4. 可选:禁用用户速率限制:

    语法

    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 对象网关。

流程

  1. 为存储桶设置速率限制:

    语法

    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_OPERATIONSNUMBER_OF_BYTES 的值为 0,代表禁用特定的速率限制属性检查。

  2. 获取存储桶速率限制:

    语法

    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
        }
    }

  3. 启用存储桶速率限制:

    语法

    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
        }
    }

  4. 可选:禁用存储桶速率限制:

    语法

    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 对象网关。

流程

  1. 查看全局速率限制设置:

    语法

    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
        }
    }

  2. 为存储桶配置和启用速率限制范围:

    1. 为存储桶设置全局速率限制:

      语法

      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

    2. 启用存储桶速率限制:

      语法

      radosgw-admin global ratelimit enable --ratelimit-scope=bucket

      示例

      [ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope bucket

  3. 为经过身份验证的用户配置和启用速率限制范围:

    1. 为用户设置全局速率限制:

      语法

      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

    2. 启用用户速率限制:

      语法

      radosgw-admin global ratelimit enable --ratelimit-scope=user

      示例

      [ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope=user

  4. 为未经身份验证的用户配置和启用速率限制范围:

    1. 为未经身份验证的用户设置全局速率限制:

      语法

      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

    2. 启用用户速率限制:

      语法

      radosgw-admin global ratelimit enable --ratelimit-scope=anonymous

      示例

      [ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope=anonymous

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.