配置代理磁盘大小

本文档介绍了 Managed Service for Apache Kafka 如何管理 Kafka 集群的存储空间,以及如何在集群中配置磁盘容量。该服务会在您创建集群时自动预配磁盘,但根据您的 Kafka 工作负载,您可能需要分配比默认值更多的磁盘容量。

概览

Managed Service for Apache Kafka 使用分层存储。 分层存储结合了两个存储层级:

  • 少量快速本地存储,以预配置的附加到代理的磁盘的形式提供。
  • 几乎无限的远程存储空间。远程存储的费用较低,且无需预先配置。

分层存储系统可让您存储大量数据,同时降低磁盘可用空间不足的风险。与仅使用本地存储相比,它还可以节省费用。

当代理接收到消息时,会将消息写入本地段文件。 当段文件达到最大大小或存在时间上限时,系统会关闭(或“滚动”)该文件并将其移至远程存储空间。在任何时间,每个分区都只有一个打开的段文件,因此本地存储的容量会随着分区数量和段文件的最大大小而扩展。处理更多分区的代理需要更多本地存储空间。

如需设置段文件的大小,请设置 log.roll.ms 和 log.segment.bytes 代理配置。

如果您启用日志压缩,则该主题仅使用本地存储。

默认磁盘配置

默认情况下,Managed Service for Apache Kafka 会为每个 broker 的每个 vCPU 至少预配 100 GiB 的磁盘容量。当您扩缩集群时,该服务会确保每个 CPU 的代理至少有 100 GiB。即使每个代理的 vCPU 数量减少,每个代理的磁盘容量也永远不会减少。

如需查看已分配的磁盘容量,请查看集群的有效磁盘容量。

自定义磁盘配置

默认磁盘配置可提供安全且经济实惠的本地存储空间,适合大多数用户。不过,您也可以在创建或更新集群时,通过设置自定义磁盘配置来指定本地磁盘大小。

您可能会出于以下原因而选择增加磁盘大小:

  • 具有较大键空间的日志压缩。如果主题启用了日志压缩,Kafka 会将每个键的最新消息存储在磁盘上。较大的键空间可能会导致大量消息无限期地保留在磁盘上。

  • 分区数量过多。每个分区都需要有足够的空间来存储已滚动处理的段,以及在代理将已滚动处理的段文件复制到远程存储空间时存储新段文件的空间。如果每个 vCPU 的分区数超过 200,请考虑设置自定义存储配置。

  • 高负荷。过载的代理可能没有足够的磁盘容量来快速将滚动的文件移至远程存储空间,因此可能需要更多本地存储空间。

  • 磁盘空间不足错误。如果集群中的某个代理磁盘可用空间不足,您可以增加磁盘容量,使集群正常运行。

如需了解详情,请参阅估算所需的磁盘大小。

磁盘配置要求

自定义磁盘配置必须满足以下要求:

  • 每个代理的磁盘大小必须至少等于每个代理上的 vCPU 数量乘以 100 GiB。

    例如,如果集群有 6 个 vCPU 和 3 个代理,则每个代理至少需要 200 GiB。

  • 每个代理的磁盘大小不得超过 32768 GiB (32 TiB)。

  • 每个代理的磁盘大小无法减少。如果您更新集群,新磁盘的大小必须等于或大于当前的有效磁盘容量。

  • 如果您纵向扩缩集群,更新后的 vCPU 数量和磁盘大小必须满足之前的要求,同时考虑到可能会添加新的代理。如需计算代理的数量,请参阅扩缩集群。

    例如,假设您有一个集群,其中每个代理都有 3 个 vCPU 和 200 GiB 的磁盘。如果您将集群扩缩为 9 个 vCPU,则最小磁盘大小为 300 GiB(9 个 vCPU / 3 个代理 × 100 GiB)。为了满足此要求,您需要在同一更新请求中同时设置磁盘大小和 vCPU 数量。

设置自定义磁盘配置

您可以在创建集群时或通过更新现有集群来设置自定义磁盘配置。该配置适用于集群中的所有代理。

控制台

在创建 Kafka 集群或修改 Kafka 集群页面中,执行以下步骤:

  1. 在容量配置下,点击启用自定义本地存储空间大小切换开关,将其切换到开启位置。

  2. 在自定义本地存储空间字段中,输入每个代理的磁盘大小(以 GiB 为单位)。该值必须满足磁盘配置要求,否则会发生错误。

  3. 点击保存。

gcloud

在 gcloud managed-kafka clusters create 或 gcloud managed-kafka clusters update 命令中指定 --broker-disk-size-gib 标志。

创建集群:

gcloud managed-kafka clusters create CLUSTER_ID \
  --location=LOCATION \
  --broker-disk-size-gib=DISK_SIZE

  # Other configruration flags
  ...

更新集群:

gcloud managed-kafka clusters update CLUSTER_ID \
  --location=LOCATION \
  --broker-disk-size-gib=DISK_SIZE

替换以下内容:

  • CLUSTER_ID:集群的名称。
  • LOCATION:集群的位置。
  • DISK_SIZE:每个代理的磁盘大小(以 GiB 为单位)。该值必须满足磁盘配置要求,否则会发生错误。

如需详细了解如何创建和更新 Kafka 集群,请参阅以下文档:

查看自定义磁盘配置

如需查看 Managed Service for Apache Kafka 集群上的自定义磁盘配置,请执行以下步骤。

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到“集群”

  2. 在集群列表中,点击要查看的集群。

  3. 选择配置标签页。

  4. 在容量下,如果集群具有自定义磁盘配置,则自定义本地存储行会显示每个代理的磁盘大小。否则,相应行会显示 Disabled。

gcloud

运行 gcloud managed-kafka clusters describe 命令:

gcloud managed-kafka clusters describe CLUSTER_ID \
  --location=LOCATION

替换以下内容:

  • CLUSTER_ID:集群的名称。
  • LOCATION:集群的位置。

在返回的集群说明中,brokerCapacityConfig 字段显示了配置:

brokerCapacityConfig:
  diskSizeGib: '3000'

如果您未设置自定义磁盘配置,此字段为空:

brokerCapacityConfig: {}

查看有效磁盘容量

集群的有效磁盘容量是指每个代理已预配的磁盘可用空间量。如需查看集群的有效磁盘容量,请运行带有 --full 标志的 gcloud managed-kafka clusters describe 命令。

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到“集群”

  2. 在集群列表中,点击要查看的集群。

  3. 选择配置标签页。

  4. 在容量下,有效本地存储空间行显示每个代理的磁盘大小。

gcloud

gcloud managed-kafka clusters describe CLUSTER_ID --full \
  --location=LOCATION

替换以下内容:

  • CLUSTER_ID:集群的名称。
  • LOCATION:集群的位置。

在返回的集群说明中,effectiveCapacityConfig 字段包含每个代理的磁盘大小和代理数量:

effectiveCapacityConfig:
  brokerCount: '3'
  brokerDiskSizeGib: '1024'

总磁盘容量等于 brokerCount × brokerDiskSizeGib。

价格

如果您的集群使用默认磁盘配置,则系统会按每个集群 vCPU 100 GiB 的标准向您收取费用,不过每个代理的实际磁盘大小可能会超过此值。

在集群上设置自定义磁盘配置后,系统会根据所有代理的实际磁盘大小向您收费。

后续步骤

Apache Kafka® 是 Apache Software Foundation 或其关联公司在美国和/或其他国家/地区的注册商标。