跳至内容

如何解决在升级 Amazon MSK 集群时出现的问题?

2 分钟阅读
0

我需要解决在升级 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 集群时出现的问题。

解决方案

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

注意事项和最佳实践

在升级 Amazon MSK 集群之前,请查看以下最佳实践:

  • 将集群的复制因子设置为 3 或更高。将复制因子设置为 1 可能会导致滚动更新期间出现分区脱机的情况。将复制因子设置为 2 可能会导致数据丢失。
  • 将最少同步副本 (minISR) 设置为复制因子 - 1 或更小的值。如果 minISR 值等于复制因子,则它可能会在滚动更新期间阻止集群生产。minISR 为 2 时,允许在一个副本离线时依然可以使用三路复制的主题。
  • 在更新集群的配置之前,请确保集群处于 ACTIVE(活动)状态。
  • 创建新的 Amazon MSK 集群时,请使用推荐的 Apache Kafka 版本。
  • 在客户端字符串中至少包含来自每个可用区的一名代理。在客户端的连接字符串中包含多个代理,这样,当某个特定代理处于脱机状态进行更新时,系统可以进行失效转移。
  • 使用 Apache Kafka AdminClient 版本 2.8.0 或更高版本进行主题管理
  • 将连接客户端升级到推荐版本或更高版本。客户端升级不受 Amazon MSK 集群的 Kafka 版本的生命周期终止 (EOL) 日期的限制。
    **注意:**Apache Kafka 提供了双向客户端兼容性策略,允许较旧的客户端与较新的集群配合工作,并允许较新的客户端与较旧的集群配合工作。有关详细信息,请参阅 Apache Kafka 网站上的 Compatibility(兼容性)
  • 在低流量时段升级您的集群。升级 Apache Kafka 版本所需的时间取决于您集群中代理的数量。
    **注意:**升级集群版本时,在版本升级完成之前,您无法进行其他更新。但是,在升级期间,您仍然可以使用集群生产和消费。

**注意:**更新实例类型时,您不会自动升级集群版本。

有关详细信息,请参阅版本升级的最佳实践

监控升级

在创建 Amazon MSK 集群时,您可以在集群上指定所需的 Apache Kafka 版本。在创建集群后,您还可以将集群升级到更新版本的 Apache Kafka

您可以在 Amazon MSK 控制台Cluster operations(集群操作)选项卡中监控更新进度。升级进度达到 17% 后,可能需要几个小时才能完成升级。

**注意:**Amazon MSK 在滚动重启过程中执行升级。Amazon MSK 一次将一个代理从集群中移出并升级其 Kafka 版本。升级后的代理将重新加入集群,Amazon MSK 会移出下一个代理。该过程一直持续到 Amazon MSK 使用新的 Kafka 版本升级最后一个代理为止。

要监控集群的升级进度,请通过 AWS CLI 运行 describe-cluster-operations 命令:

aws kafka describe-cluster-operation —cluster-operation-arn ClusterOperationArn

如果操作处于 Incomplete(未完成)或 Failed(失败)状态,请联系 AWS Support

对错误进行故障排除

代理上的分区操作会消耗大量的系统资源。如果您的分区数量超过建议的限制,则可能会对集群中的可用资源造成压力。当集群资源变得紧张时,您无法更新集群配置、集群的 Apache Kafka 版本或将集群更新为较小的代理类型。当每个代理的分区数超过建议值时,您会收到以下错误之一:

“Error updating cluster configuration There was a problem updating cluster configuration.If the problem persists, contact AWS Support.The number of partitions per broker is above the recommended limit.Add more brokers and rearrange the partitions per broker to be below the recommended limit, then retry the request.”

-或-

“Upgrade is stuck in the stage 'Initializing upgrade'”

要解决上述错误,请执行以下操作:

  • 增加集群内的代理数量。然后,重新分配分区以减少每个代理的分区数量。使用 Amazon CloudWatch 指标来监控每个代理的分区数量。有关详细信息,请参阅默认 Amazon MSK 配置
  • 删除未使用的主题。要查看有关集群的所有主题和分区数量,请运行以下命令:
    KAFKA_ROOT/bin/kafka-topics.sh --bootstrap-server
    BOOTSTRAP_SERVER --describe --topic Topic_name
    **注意:**将 Topic_name 替换为主题名称。
    在运行上述命令之前,请在 Amazon Elastic Compute Cloud (Amazon EC2) 计算机上设置 Apache Kafka 客户端
  • 将实例类型修改为更高级别的实例类型
AWS 官方已更新 4 个月前