对MSK复制器进行故障排除 - Amazon Managed Streaming for Apache Kafka

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对MSK复制器进行故障排除

以下信息可以帮助您解决在使用 MSK Replicator 时可能遇到的问题。有关对您的亚马逊MSK集群进行故障排除其他 Amazon MSK 功能的问题解决信息,请参阅。您也可以将问题发布到 AWS re:Post

MSK复制器状态从变为 CREATING FAILED

以下是MSK复制器创建失败的一些常见原因。

  1. 请验证您在目标集群部分中为创建复制器提供的安全组具有出站规则,以允许流量进入目标集群的安全组。此外,请验证目标集群的安全组是否有入站规则,这些规则接受来自您在目标集群部分中为创建复制器提供的安全组的流量。请参阅 选择目标集群

  2. 如果您正在为跨区域复制创建 Replicator,请确认您的源集群已为IAM访问控制身份验证方法开启了多VPC连接。请参阅 单个区域中的 Amazon MSK 多VPC私有连接。此外,请验证是否已在源集群上设置群集策略,以便 MSK Replicator 可以连接到源集群。请参阅 准备 Amazon MSK 源集群

  3. 验证您在创建 MSK Replicator 期间提供的IAM角色是否具有读取和写入源集群和目标集群所需的权限。此外,请验证该IAM角色是否有权写入主题。请参阅 配置复制器设置和权限

  4. 确认您的网络ACLs没有阻止 MSK Replicator 与源集群和目标集群之间的连接。

  5. 当 MSK Replicator 尝试连接源集群或目标集群时,它们可能无法完全可用。这可能是由于负载、磁盘使用量或CPU使用率过高导致 Replicator 无法连接到代理所致。修复代理的问题,然后重试创建复制器。

执行上述验证后,再次创建MSK复制器。

MSKReplicator 显示处于停滞状态 CREATING

有时,创建MSK复制器最多可能需要 30 分钟。请等待 30 分钟,然后再次检查集群的状态。

MSKReplicator 没有复制数据或只复制部分数据

请按照以下步骤排查数据复制问题。

  1. 使用亚马逊 Replicator 提供的 AuthError 指标,验证您的 Repl MSK icator 是否没有遇到任何身份验证错误。 CloudWatch如果此指标大于 0,请检查您为复制器提供的IAM角色策略是否有效,并且没有为集群权限设置拒绝权限。根据 clusterAlias 维度,您可以确定源集群还是目标集群是否遇到身份验证错误。

  2. 请验证您的源集群和目标集群没有遇到任何问题。复制器可能无法连接到您的源集群或目标集群。这可能是由于连接过多、磁盘容量已满或CPU使用率过高所致。

  3. 使用亚马逊 CloudWatch中的 KafkaClusterPingSuccessCount 指标,验证您的源集群和目标集群是否可以从 MSK Replicator 访问。根据clusterAlias维度,您可以确定源集群还是目标集群是否遇到身份验证错误。如果该指标为 0 或没有数据点,则连接不正常。您应该检查 MSK Replicator 用于连接到您的集群的网络和IAM角色权限。

  4. 使用 Amazon 中的指标,确认您的 Replicator 没有因为缺少主题级别权限而出现故障。 ReplicatorFailure CloudWatch如果此指标大于 0,请检查您为主题级别权限提供的IAM角色。

  5. 验证您在创建复制器时在允许列表中提供的正则表达式是否与您要复制的主题的名称相匹配。此外,请确认主题没有因为拒绝列表中的正则表达式而被排除在复制之外。

  6. 请注意,Replicator 最多可能需要 30 秒才能在目标集群上检测和创建新的主题或主题分区。如果复制器的起始位置为最新(默认),则不会复制在目标集群上创建主题之前向源主题生成的任何消息。或者,如果您想在目标集群上复制主题上的现有消息,则可以从源集群主题分区中最早的偏移量开始复制。请参阅 配置复制器设置和权限

目标集群中的消息偏移量与源集群中的消息偏移量不同

作为复制数据的一部分,Rep MSK licator 使用来自源集群的消息并将其生成到目标集群。这可能会导致消息在源集群和目标集群上具有不同的偏移量。但是,如果您在 Replicator 创建期间启用了使用者组偏移同步功能,MSKReplicator 将在复制元数据时自动转换偏移量,以便在故障转移到目标集群后,您的使用者可以从源集群中停下来的位置附近恢复处理。

MSKReplicator 未同步使用者组偏移量或目标集群上不存在使用者组

请按照以下步骤解决元数据复制问题。

  1. 验证您的数据复制是否按预期运行。如果不是,请参阅 MSKReplicator 没有复制数据或只复制部分数据

  2. 验证您在创建 Replicator 时在允许列表中提供的正则表达式是否与要复制的使用者组的名称相匹配。此外,还要确认没有因为拒绝列表中存在正则表达式而将使用者组排除在复制之外。

  3. 验证 MSK Replicator 是否已在目标集群上创建了该主题。Replicator 最多可能需要 30 秒才能在目标集群上检测和创建新的主题或主题分区。如果复制器的起始位置为最(默认),则在目标集群上创建主题之前向源主题生成的任何消息都不会被复制。如果源集群上的使用者组仅使用了 MSK Replicator 未复制的消息,则该使用者组不会被复制到目标集群。在目标集群上成功创建主题后,Repl MSK icator 将开始将源集群上新写入的消息复制到目标群集。一旦您的使用者组开始从源读取这些消息,MSKReplicator 就会自动将该使用者组复制到目标集群。或者,如果您想在目标集群上复制主题上的现有消息,则可以从源集群主题分区中最早的偏移量开始复制。请参阅 配置复制器设置和权限

注意

MSKReplicator 为源集群上的消费者优化了使用者组偏移量同步,这些消费者正在从更接近主题分区末端的位置进行读取。如果您的消费组在源集群上滞后,则与源集群相比,目标集群上的消费组的延迟可能会更高。这意味着在故障转移到目标集群后,您的使用者将重新处理更多重复的消息。为了减少这种延迟,源集群上的消费者需要赶上 catch 并从直播的末端(主题分区的末尾)开始消费。当你的消费者赶上时,MSKReplicator 将自动减少延迟。

复制延迟很高或持续增加

以下是复制延迟较高的一些常见原因。

  1. 确认您的源集群和目标MSK群集上的分区数量是否正确。分区过少或过多会影响性能。有关选择分区数量的指导,请参阅 使用 MSK Replicator 的最佳做法。下表显示了使用 MSK Replicator 获得所需吞吐量的建议的最小分区数。

    吞吐量和建议的最小分区数
    吞吐量(MB/s) 需要的最小分区数量
    50 167
    100 334
    250 833
    500 1666
    1000 3333
  2. 验证您的源集群和目标MSK集群中是否有足够的读取和写入容量来支持复制流量。MSKReplicator 充当源集群(出口)的使用者,充当目标集群(入口)的生产者。因此,除了集群上的其他流量外,您还应预置集群容量以支持复制流量。使用 MSK Replicator 的最佳做法有关调整MSK集群规模的指导,请参阅。

  3. 不同源和目标 AWS 区域对中的MSK集群的复制延迟可能会有所不同,具体取决于集群在地理上相隔的距离。例如,与欧洲地区(爱尔兰)和亚太地区(悉尼)区域的集群之间的复制相比,在欧洲地区(爱尔兰)和欧洲地区(伦敦)区域的集群之间进行复制时,复制延迟通常较低。

  4. 验证复制器没有因为在源集群或目标集群上设置的限额过于激进而受到限制。您可以在 Amazon 中使用 MSK Replicator 提供的 ThrottleTime指标 CloudWatch 来查看源/目标集群上代理限制请求的平均时间(以毫秒为单位)。如果此指标大于 0,则应调整 Kafka 限额以减少节流,以便复制器能够赶上。有关管理复制器的 Kafka 限额的信息,请参阅 使用 Kafka 配额管理MSK复制器吞吐量

  5. ReplicationLatency 当一个 AWS 区域退化时, MessageLag 可能会增加。使用 S AWS ervice Health Das hboard 检查您的主MSK集群所在区域是否存在MSK服务事件。如果有服务事件,可以临时将应用程序的读取和写入重定向到另一个区域。