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

1 分钟阅读
0

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

解决方案

注意事项和最佳实践

在升级您的 Amazon MSK 集群之前,请注意以下几点:

  • 确保将集群的复制因子设置为 3 或更高的值。将复制因子设置为 1 可能会导致滚动更新期间出现分区脱机的情况。将复制因子设置为 2 可能会导致数据丢失。
  • 将最少同步副本 (minISR) 设置为(复制因子 - 1)或更小的值。如果 minISR 值等于复制因子,则可能导致您在滚动更新期间无法向集群写入数据。minISR 为 2 时,允许在一个副本离线时依然可以使用三路复制的主题。
  • 确保客户端的连接字符串中包含每个可用区的至少一个代理。在客户端的连接字符串中包含多个代理,这样,当某个特定代理处于脱机状态进行更新时,系统可以进行失效转移。
  • 在更新集群的配置之前,请确保集群处于 ACTIVE 状态。
  • 最佳做法是在低流量时段升级您的集群。升级 Apache Kafka 版本所需的时间取决于您集群中代理的数量。
  • 升级集群版本时,您无法对集群进行其他更新。在升级期间,您仍然可以使用集群生产和消费。
  • 只要没有复制不足的主题(例如:复制因子小于 3 的主题),升级期间就没有数据丢失的风险。即使在这种情况下,在代理在线后,分区也会重新可用。
  • 您可以通过 Amazon MSK 控制台或 AWS 命令行界面 (AWS CLI) 更新 Amazon MSK 集群的 Apache Kafka 版本
  • 您可以将自己的 Amazon MSK 集群升级到更新版本的 Apache Kafka。您无法将其降级到旧版本。
  • Amazon MSK 仅更新服务器软件,不更新您的客户端。因此,在升级您的集群时,请确认您的客户端软件版本可以使用 Apache Kafka 新版本的功能。
  • 更新实例类型不会升级集群版本。

监控升级操作

在创建 Amazon MSK 集群时,您需要指定集群上的 Apache Kafka 版本。在创建集群后,您还可以通过执行以下操作将集群升级到更新版本的 Apache Kafka:

  1. 打开 Amazon MSK 控制台
  2. 选择要升级的集群。
  3. 属性选项卡上,在 Apache Kafka 版本部分选择升级

有关更多信息,请参阅更新 Apache Kafka 版本

您可以在集群操作选项卡上监控升级进度。您可以通过此选项卡监控升级的每个步骤,例如初始化升级更新 Apache Kafka 版本完成升级。升级进度达到 17% 后,可能需要几个小时才能完成升级。请注意,Amazon MSK 平台以滚动方式进行升级。一次只从集群中下线一个代理,并升级其 Kafka 版本。当下线下一个代理时,该代理会重新加入集群。系统会重复这个过程,直到最后一个代理升级到新的 Kafka 版本为止。

常见错误排除

更新群集配置时出错 更新群集配置时出现问题。如果问题仍然存在,请联系 AWS Support。每个代理的分区数量超过了建议的数量限制。添加更多代理,并重新安排每个代理的分区,以让每个代理的分区数量少于建议的数量限制,然后重试请求。

-或-

升级停留在“初始化升级”阶段

当每个代理的分区数量超过建议的数量值时,就会出现此错误。在一个代理上处理多个分区的读写请求是资源密集型工作负载。如果分区的数量超过建议的数量限制,可能会对集群中的可用资源造成压力。在这种情况下,您无法在集群上执行以下任何操作:

  • 更新集群配置
  • 更新集群的 Apache Kafka 版本
  • 将集群更新为较小的代理类型

要排除此错误,请尝试以下操作:

  • 增加集群内的代理数量。然后,重新分配分区以减少每个代理的分区数量。使用 Amazon CloudWatch 指标来查看每个代理的分区数量。分区总数是每个代理的主题分区总数,包括副本。默认情况下,每个主题的分区数量为 1,三可用区集群的复制因子为 3。因此,每个主题有 3 个分区,因为复制因子为 3 的三个分区包括了主分区。要将分区移动到同一集群上的不同代理中,可以使用名为 kafka-reassign-partitions.sh 的分区重新分配工具。
  • 您可以通过删除未使用的主题来减少分区数量。您可以使用以下命令查看集群上的所有主题以及分区数量。在运行命令之前,请务必在一台 Amazon Elastic Compute Cloud (Amazon EC2) 机器上设置 Apache Kafka 客户端。
bin/kafka-topics.sh —bootstrap-server localhost:9092 —describe —topic test
AWS 官方
AWS 官方已更新 1 年前
没有评论