排查 MirrorMaker 2.0 连接器问题

本文档提供了有关排查使用 MirrorMaker 2.0 连接器时遇到的常见问题的指导。

常见的 MirrorMaker 2.0 错误

本部分列出了在使用 MirrorMaker 2.0 连接器时可能会看到的常见错误。

等待节点分配时超时

如果 Connect 集群无法访问 Kafka 集群,您会收到以下错误:

Timed out waiting for a node assignment.

导致此错误的原因包括:

  • Connect 集群无法向 Kafka 集群进行身份验证。检查连接器配置中的身份验证参数。如需了解详情,请参阅创建 MirrorMaker 2.0 连接器

  • 网络问题导致 Connect 集群无法访问 Kafka 集群。按照排查网络问题中的步骤操作。

DNS 解析失败

如果 Connect 集群无法解析引导地址,您会收到以下错误:

No resolvable bootstrap urls given in bootstrap.servers

您可能还会收到类似于以下内容的错误:

Couldn't resolve server BOOTSTRAP_ADDRESS from bootstrap.servers as DNS resolution failed for BOOTSTRAP_ADDRESS

如需解决此问题,请首先验证引导地址是否正确。如果确实如此,请按照排查域名解析问题中的步骤操作。

无效凭证

如果 Connect 集群无法通过其中一个 Kafka 集群进行身份验证,您会收到类似于以下内容的错误:

org.apache.kafka.clients.NetworkClient processDisconnection
SEVERE: [AdminClient clientId=source->target|mm2|offset-syncs-source-admin] Connection to
node 11 (broker-1.BOOTSTRAP_ADDRESS/IP_ADDRESS:9092) failed authentication due to: Authentication
failed during authentication due to invalid credentials with SASL mechanism OAUTHBEARER

造成此错误的可能原因包括:

  • 一个或两个集群的 Managed Kafka 服务账号缺少 Managed Kafka Service Agent 角色。

    对于每个 Managed Service for Apache Kafka 集群,请向相应集群项目的 Managed Kafka 服务账号授予 Managed Kafka Service Agent IAM 角色。如需了解详情,请参阅配置 Managed Service for Apache Kafka 网络

  • 向自行管理的集群或外部集群进行身份验证失败。

    对于自行管理的 Kafka 集群或外部 Kafka 集群,请确保集群的身份验证属性正确无误。具体细节取决于您的集群设置。如需了解详情,请参阅创建 MirrorMaker 2 连接器

  • 集群不在同一 VPC Service Controls 边界内。

    如果您使用 VPC Service Controls 来隔离 Kafka 集群,请确保这些集群位于同一边界内。如需了解详情,请参阅 VPC Service Controls 概览

正文被拒绝执行操作

如果您创建了 Apache Kafka 访问控制列表 (ACL),但该 ACL 未向 Managed Kafka 服务账号授予读取和写入权限,您会收到类似以下的错误:

Principal = User:SERVICE_ACCOUNT is Denied operation = OPERATION from host = HOST
on resource = Topic:LITERAL:TOPIC for request = TOPIC with resourceRefCount = 1 based on rule DefaultDeny

默认情况下,Managed Service for Apache Kafka 集群在 allow.everyone.if.no.acl.found 设置为 true 的情况下运行,这会为 Managed Kafka 服务账号授予对集群资源的读写权限。

不过,如果您设置了任何 ACL,这些 ACL 必须向服务账号授予读写权限。否则,Connect 集群将失去对所有主题的读写权限,并失去对所有消费群组的读取权限。

如需解决此问题,请添加 ACL 条目,以向 Managed Kafka 服务账号授予必要的权限。为此,请按照向托管 Kafka ACL 添加 ACL 条目中的步骤操作。

  • 相应正文为 User:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com。 将 PROJECT_NUMBER 替换为您的 Google Cloud 项目编号。

  • 授予对特定主题的读写权限,以及对特定使用方群组的读取权限。如需了解如何为 ACL 指定资源,请参阅 ACL ID

系统不会重复迁移消息

如需排查此问题,请检查连接器配置。如果您将 Kafka 主集群用作源集群,请将 producer.override.bootstrap.servers 设置为目标集群的引导地址。

排查网络问题

如果您在使用 MirrorMaker 2.0 连接器时遇到网络问题,请执行以下问题排查步骤。

  • 连接到 Managed Service for Apache Kafka 集群时:

    1. 查找 Connect 集群的工作器子网,然后找到该子网的 VPC 网络。

    2. 查看 Kafka 主集群的配置,然后找到子网列表。至少一个子网必须与 Connect 集群的子网位于同一 VPC 网络中。

    3. 针对辅助 Kafka 集群重复上一步。

    4. 确保防火墙规则允许 Private Service Connect 接口访问源 Kafka 集群和目标 Kafka 集群。

  • 连接到外部 Kafka 集群或自行管理的 Kafka 集群时:

    1. 查找 Connect 集群的工作器子网,然后找到该子网的 VPC 网络。

    2. 验证是否可以从 VPC 网络访问 Kafka 集群。例如,您可以将 Kafka 集群部署在同一 VPC 网络中,也可以使用共享 VPCDNS 可用区使该集群可从 VPC 网络访问。

    1 如果源 Kafka 集群或目标 Kafka 集群是通过互联网访问的,请配置 Cloud NAT,以允许 Connect 集群工作器访问互联网。

如需详细了解 Managed Service for Apache Kafka 中的网络,请参阅 Managed Service for Apache Kafka

排查域名解析问题

如果您在使用 MirrorMaker 2.0 连接器时遇到域名解析问题,请执行以下问题排查步骤:

  1. 查找 Connect 集群的工作器子网,然后找到该子网的 VPC 网络。

  2. 在 Google Cloud 控制台中,前往 Cloud DNS 区域页面。

    前往“DNS 区域”

  3. 选择包含 VPC 网络的 Google Cloud 项目。

  4. 点击区域,然后验证域名是否显示在 DNS 区域列表中。

  5. 查看 Connect 集群的配置,然后找到可解析的 DNS 域名列表。如果未列出该域名,请更新 Connect 集群以添加该 DNS 域名。请参阅更新 Connect 集群

后续步骤