您可以修改 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% 的限制。
如需了解详情,请参阅 更新集群大小。
修改集群
如需修改集群,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往 集群 页面。
在集群列表中,点击您要修改其属性的集群。
系统会显示集群详情页面。
在集群详情页面中,点击修改 。
根据需要修改属性。您可以在控制台中修改集群的以下属性:
- 内存
- vCPUs
- 子网
- 重新平衡配置
- mTLS 配置
- 标签
点击保存 。
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 集群后,您无法更新以下属性:
- 集群名称
- 集群位置
- 加密类型
虽然您无法更改加密类型,但可以 轮替加密密钥。