排查 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 服务账号授予必要的权限。为此,请按照向 Managed Kafka ACL 添加 ACL 条目中的步骤操作。

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

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

消息不会重复

如需排查此问题,请检查以下各项:

  • 目标主题名称:默认情况下,MirrorMaker 2.0 使用 DefaultReplicationPolicy,并在目标集群中复制的主题名称前加上 source.cluster.alias。例如,如果源集群别名为 source,则源集群中名为 my-topic 的主题将复制到 source.my-topic。验证您的使用方是否从带前缀的主题名称中读取,或在连接器配置中设置 replication.policy.class=org.apache.kafka.connect.mirror.IdentityReplicationPolicy 以保留原始主题名称。

排查网络问题

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

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

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

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

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

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

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

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

    2. 验证是否可以从 VPC 网络访问 Kafka 集群。例如,您可以在同一 VPC 网络中部署 Kafka 集群,也可以使用共享 VPC 或 DNS 区域使该集群可从 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 集群。

后续步骤

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