本页面介绍了如何解决在创建或配置 Managed Service for Apache Kafka 集群时遇到的问题。
Kafka 集群创建错误
本部分列出了在创建 Kafka 集群时可能会遇到的错误。
相应服务无权访问 Cloud KMS 密钥
当 Managed Service for Apache Kafka 服务代理缺少访问 Cloud KMS 密钥所需的权限时,会出现以下问题。
Service agent service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com
has not been granted the required role cloudkms.cryptoKeyEncrypterDecrypter to
encrypt data using the KMS key.`
如需解决此问题,请向服务账号授予 Cloud KMS 密钥的 Cloud KMS CryptoKey Encrypter/Decrypter 角色。如需了解详情,请参阅配置 CMEK 所需的角色。
相应服务无权检索子网
当 Managed Service for Apache Kafka 服务代理缺少在运行 Kafka 客户端的 VPC 网络中配置网络所需的角色时,会出现以下问题。
Service does not have permission to retrieve subnet. Please grant
service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com the
managedkafka.serviceAgent role in the IAM policy of the project
${SUBNET_PROJECT} and ensure the Compute Engine API is enabled in project
${SUBNET_PROJECT}`
如需解决此问题,请向服务账号授予 Managed Kafka Service Agent 角色。如需了解详情,请参阅跨项目连接集群。
网络连接错误
本部分列出了在为 Kafka 集群配置网络时可能会遇到的错误。
服务未能设置网络
如果 Managed Service for Apache Kafka 无法将 Kafka 集群连接到您的 Virtual Private Cloud 子网,则会出现以下问题。
Managed Service for Apache Kafka failed to set up networking in VPC subnet.
如需解决此问题,请执行以下步骤:
在消费者 VPC 网络的父项目中启用 Compute Engine 和 Cloud DNS API。
如果 Managed Service for Apache Kafka 集群和消费者 VPC 网络位于不同的项目中,请配置所需的权限。请参阅跨项目连接集群。
确保没有组织政策限制条件阻止该服务在使用方 VPC 网络的项目中创建必要的资源。
如需了解详情,请参阅为 Managed Service for Apache Kafka 配置网络。
客户端应用无法连接
如果客户端应用无法连接到集群,请检查以下问题:
确保客户端使用的是正确的引导地址。
确保 Kafka 客户端在配置为可访问 Managed Service for Apache Kafka 集群的 VPC 网络中运行。
如果您在计算机或笔记本电脑上运行 Kafka 客户端,则可以设置一个 Compute Engine 实例作为代理,以访问 Managed Service for Apache Kafka 集群。如需了解详情,请参阅设置客户端机器。
身份验证错误
本部分列出了客户端应用向 Kafka 集群进行身份验证时可能会遇到的错误。
SASL 身份验证失败
当客户端无法使用 SASL 身份验证连接到集群时,会出现以下问题。
Exception in thread "main" java.util.concurrent.ExecutionException:
org.apache.kafka.common.errors.SaslAuthenticationException:
Authentication failed: Invalid username or password
如需解决此问题,请检查以下原因:
密码格式有误,在经过 Base64 解码后,无法表示有效的服务账号密钥 JSON blob 或有效的访问令牌。
进行身份验证的主账号对集群没有
managedkafka.clusters.connect权限。所提供的用户名与凭据的主账号不匹配。
如果客户端每 30 分钟频繁断开连接,可能是因为客户端不支持定期重新身份验证。Managed Service for Apache Kafka 代理要求客户端每 30 分钟重新进行身份验证,这是由 connections.max.reauth.ms 代理属性强制执行的。验证您的 Kafka 客户端库版本是否为 2.2.0 或更高版本,并且支持重新身份验证。
如需了解详情,请参阅配置 SASL 身份验证。
操作错误
本部分列出了 Kafka 工作负载运行时可能发生的错误。
磁盘空间不足错误
如果代理的磁盘可用空间不足,代理将无法滚动有效段或写入新段,从而导致客户端无法生成或使用消息。症状包括:
客户端性能意外下降。例如,提供方会遇到超时错误,而使用方的延迟会稳步增加。
broker 磁盘利用率非常高(>85%)。
同步副本 (ISR) 数量降至低于复制因子。
集群日志显示如下错误:
Error processing append operation on partition PARTITION_ID. org.apache.kafka.common.errors.NotEnoughReplicasException: The size of the current ISR Set(10) is insufficient to satisfy the min.isr requirement of 2 for partition PARTITION_ID
为避免磁盘空间不足错误,请监控集群容量和分区复制。 如需了解详情,请参阅监控 Kafka 集群的可靠性。
如果代理磁盘空间不足,请增加代理磁盘大小。您还可以考虑扩大集群规模以添加新的代理。
日志压缩与非常大的键空间相结合可能会导致磁盘空间不足错误。启用日志压缩后,Kafka 会将每个键的最新消息存储在本地存储空间中,因此 broker 磁盘利用率会随着唯一键的数量而增加。
客户端遇到暂时性断开连接的情况
Managed Service for Apache Kafka 可能会执行需要对代理进行滚动重启的更新。在此过程中,对单个代理的请求可能会失败,但这些失败是暂时性的。如需了解详情,请参阅升级和补丁。
在代理重启期间,您无需采取任何行动。不过,您可能会发现以下情况:
在分区领导者和消费群组协调器故障转移到其他代理时,处理会暂停。
重新平衡消费群体,暂时暂停消费。
提交偏移量时出现临时连接错误或超时。常用的客户端库会自动处理这些错误。
当代理重新启动时,未复制分区 (
broker/under_replicated_partitions) 的数量暂时性激增。低于 MinISR 的分区数指标 (
broker/under_min_isr_partitions) 出现峰值。此峰值可能对应于未复制的内部监控主题,只要每个代理的计数为 1,就属于预期行为。 值大于 1 可能表示数据或元数据主题存在问题。
手动更新某些集群属性(例如 vCPU 数量和内存)也可能会导致服务执行滚动重启。请参阅更新 Managed Service for Apache Kafka 集群。