您可以修改 Managed Service for Apache Kafka 集群,以更新属性,例如集群大小(vCPU 数量和内存)、已连接子网的列表、自动重新平衡配置和 mTLS 配置。
如需修改集群,您可以使用 Google Cloud 控制台、Google Cloud CLI、客户端库或 Managed Kafka API。您无法使用开源 Apache Kafka API 更新集群。
更新某些属性(例如 vCPU 数量和内存)可能需要服务重启集群。集群一次重启一个代理。 在此过程中,对单个代理的请求可能会失败,但这些失败是暂时性的。常用的客户端库会自动处理这些错误。
所需的角色和权限
如需获得更新集群所需的权限,请让您的管理员为您授予项目的 Managed Kafka Cluster Editor (roles/managedkafka.clusterEditor) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含更新集群所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需更新集群,您需要具备以下权限:
-
修改集群:
managedkafka.clusters.update
调整集群大小
如果您更新集群的 vCPU 数量或内存,则需遵守以下规则:
集群的总体 vCPU 与内存比率必须始终保持在 1:1 到 1:8 之间。
每个现有代理必须至少有 1 个 vCPU 和 1 GiB 内存。代理的数量永远不会减少。
如果进行扩容,与更新前的平均值相比,每个代理的平均 vCPU 和内存不能减少超过 10%。例如,如果您尝试将集群从 45 个 vCPU(3 个代理)向上扩展到 48 个 vCPU(4 个代理),则每个代理的平均 vCPU 会从 15 个减少到 12 个,减少了 20%,超过了 10% 的限制。
如果您需要将 vCPU 数量减少 10% 以上,建议分阶段减少。每次更新后,监控资源利用率,并根据需要重新平衡分区。
不过,如果您确信更新后您的代理将有足够的容量,则可以通过运行带有
allow_broker_downscale_on_cluster_upscale=true标志的gcloud managed-kafka clusters update命令来停用此检查。此标志表示您接受潜在的性能风险。
如需详细了解如何调整集群大小,请参阅规划 Kafka 集群的大小。
修改集群
如需修改集群,请按以下步骤操作:
控制台
gcloud
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
运行
gcloud managed-kafka clusters update命令:gcloud managed-kafka clusters update CLUSTER_ID \ --location=LOCATION \ --cpu=CPU \ --memory=MEMORY \ --subnets=SUBNETS \ --auto-rebalance \ --labels=LABELS替换以下内容:
- CLUSTER_ID:集群的 ID 或名称。您无法更新此值。
- LOCATION:集群的位置。您无法更新此值。
- CPU:集群的虚拟 CPU 数量。
- MEMORY:集群的内存量。 使用“MB”“MiB”“GB”“GiB”“TB”或“TiB”单位。例如,“10GiB”。
- SUBNETS:要连接到的子网列表。 使用英文逗号分隔多个子网值。
auto-rebalance:当集群中的 CPU 数量发生变化时,启用在代理之间自动重新平衡主题分区的功能。此功能默认处于启用状态。- LABELS:要与集群关联的标签。
如果您在命令中使用 --async 标志,系统会发送更新请求并立即返回响应,而无需等待操作完成。使用 --async 标志,您可以在后台进行集群更新的同时继续执行其他任务。如果不使用 --async 标志,系统会等待操作完成,然后再返回响应。您必须等到集群完全更新后才能继续执行其他任务。
REST
在使用任何请求数据之前,请先进行以下替换:
-
PROJECT_ID:您的 Google Cloud 项目 ID -
LOCATION:集群的位置 -
CLUSTER_ID:集群的 ID -
UPDATE_MASK:要更新的字段,以完全限定名称的逗号分隔列表的形式表示。示例:capacityConfig.vcpuCount,capacityConfig.memoryBytes -
CPU_COUNT:集群的 vCPU 数量 -
MEMORY:集群的内存量(以字节为单位) -
SUBNET_ID:要连接到的子网的子网 ID
HTTP 方法和网址:
PATCH https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID?updateMask=UPDATE_MASK
请求 JSON 正文:
{
"capacityConfig": {
"vcpuCount": CPU_COUNT,
"memoryBytes": MEMORY
},
"gcpConfig": {
"accessConfig": {
"networkConfigs": [
{
"subnet": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET_ID"
}
]
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"name": "projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID",
"partitionCount": PARTITION_COUNT,
"replicationFactor": REPLICATION_FACTOR
}
在请求正文中,仅包含您要更新的字段,如 UPDATE_MASK 查询参数中所指定的那样。如需添加子网,请向 networkConfigs 添加新条目。
Go
在尝试此示例之前,请按照 安装客户端库中的 Go 设置说明进行操作。如需了解详情,请参阅 Managed Service for Apache Kafka Go API 参考文档。
如需向 Managed Service for Apache Kafka 进行身份验证,请设置应用默认凭据(ADC)。 如需了解详情,请参阅为本地开发环境设置 ADC。
Java
在尝试此示例之前,请按照 安装客户端库中的 Java 设置说明进行操作。如需了解详情,请参阅 Managed Service for Apache Kafka Java API 参考文档。
如需向 Managed Service for Apache Kafka 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置 ADC。
Python
在尝试此示例之前,请按照 安装客户端库中的 Python 设置说明进行操作。如需了解详情,请参阅 Managed Service for Apache Kafka Python API 参考文档。
如需向 Managed Service for Apache Kafka 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置 ADC。
限制
创建 Managed Service for Apache Kafka 集群后,您无法更新以下属性:
- 集群名称
- 集群位置
- 加密类型
虽然您无法更改加密类型,但可以轮替加密密钥。