亚马逊 MSK 版本支持 - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

亚马逊 MSK 版本支持

本主题介绍的亚马逊 MSK 版本支持政策和过程更新 Apache Kafka 版本。如果您要升级 Kafka 版本,请遵循中版本升级的最佳实践概述的最佳实践。

亚马逊 MSK 版本支持政策

本节介绍亚马逊 MSK 支持的 Kafka 版本的支持政策。

  • 所有 Kafka 版本均受支持,直至其终止支持日期。有关终止支持日期的详细信息,请参阅支持的 Apache Kafka 版本。在支持终止日期之前,将您的 MSK 集群升级到推荐的 Kafka 版本或更高版本。有关更新 Apache Kafka 版本的详细信息,请参阅。更新 Apache Kafka 版本在终止支持日期之后使用 Kafka 版本的集群会自动升级到推荐的 Kafka 版本。

  • MSK 将逐步停止对使用 Kafka 版本且已公布支持终止日期的新创建集群的支持。

更新 Apache Kafka 版本

您可以将现有的 MSK 集群更新为较新版本的 Apache Kafka。您无法将它更新为较旧版本。在更新 MSK 集群的 Apache Kafka 版本时,还要检查您的客户端软件,以确保其版本允许您使用集群的新 Apache Kafka 版本的功能。Amazon MSK 仅更新服务器软件。它不会更新您的客户端。

有关如何在更新期间使集群高度可用的信息,请参阅构建高度可用的集群

重要

对于超出 调整集群的大小:每个代理的分区数量 中所述限制的 MSK 集群,您无法更新 Apache Kafka 版本。

使用更新 Apache Kafka 版本 Amazon Web Services Management Console
  1. https://console.amazonaws.cn/msk/ 打开 Amazon MSK 控制台。

  2. 选择要更新 Apache Kafka 版本的 MSK 集群。

  3. 属性选项卡上,在 Apache Kafka 版本部分中选择升级

使用更新 Apache Kafka 版本 Amazon CLI
  1. 运行以下命令,ClusterArn替换为您在创建集群时获得的 Amazon 资源名称 (ARN)。如果您没有该集群的 ARN,可以通过列出所有集群来找到它。有关更多信息,请参阅 列出 Amazon MSK 集群

    aws kafka get-compatible-kafka-versions --cluster-arn ClusterArn

    此命令的输出包括您可以将集群更新到的 Apache Kafka 版本的列表。其内容类似于以下示例。

    { "CompatibleKafkaVersions": [ { "SourceVersion": "2.2.1", "TargetVersions": [ "2.3.1", "2.4.1", "2.4.1.1", "2.5.1" ] } ] }
  2. 运行以下命令,ClusterArn替换为您在创建集群时获得的 Amazon 资源名称 (ARN)。如果您没有该集群的 ARN,可以通过列出所有集群来找到它。有关更多信息,请参阅 列出 Amazon MSK 集群

    Current-Cluster-Version 替换为集群的当前版本。因为TargetVersion你可以从上一个命令的输出中指定任何目标版本。

    重要

    集群版本不是简单的整数。要查找集群的当前版本,请使用DescribeCluster操作或 desc ribe- Amazon CLI cluster 命令。示例版本是 KTVPDKIKX0DER

    aws kafka update-cluster-kafka-version --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-kafka-version TargetVersion

    上一个命令的输出如以下 JSON 所示。

    { "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef" }
  3. 要获得update-cluster-kafka-version操作结果,请运行以下命令,ClusterOperationArn替换为在命令输出中获得的 ARN。update-cluster-kafka-version

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

    describe-cluster-operation 命令的输出如以下 JSON 示例所示。

    { "ClusterOperationInfo": { "ClientRequestId": "62cd41d2-1206-4ebf-85a8-dbb2ba0fe259", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2021-03-11T20:34:59.648000+00:00", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_IN_PROGRESS", "OperationSteps": [ { "StepInfo": { "StepStatus": "IN_PROGRESS" }, "StepName": "INITIALIZE_UPDATE" }, { "StepInfo": { "StepStatus": "PENDING" }, "StepName": "UPDATE_APACHE_KAFKA_BINARIES" }, { "StepInfo": { "StepStatus": "PENDING" }, "StepName": "FINALIZE_UPDATE" } ], "OperationType": "UPDATE_CLUSTER_KAFKA_VERSION", "SourceClusterInfo": { "KafkaVersion": "2.4.1" }, "TargetClusterInfo": { "KafkaVersion": "2.6.1" } } }

    如果 OperationState 的值为 UPDATE_IN_PROGRESS,请等待一段时间,然后再次运行 describe-cluster-operation 命令。操作完成后,OperationState 的值变为 UPDATE_COMPLETE。由于 Amazon MSK 完成操作所需的时间各不相同,您可能需要反复检查直到操作完成。

使用 API 更新 Apache Kafka 版本
  1. 调用该GetCompatibleKafkaVersions操作以获取您可以将集群更新到的 Apache Kafka 版本列表。

  2. 调用该UpdateClusterKafkaVersion操作将集群更新到兼容的 Apache Kafka 版本之一。

版本升级的最佳实践

为了确保在 Kafka 版本升级过程中执行的滚动更新期间的客户端连续性,请按以下方式查看客户端的配置和 Apache Kafka 主题:

  • 2对于双可用区集群,将主题重复因子 (RF) 设置为最小值,将三可用区集群的最小值设置3为。RF 值为可能2导致在修补期间出现脱机分区。

  • 将同步副本的最小值 (miniSR) 设置为最大值,RF - 1以确保分区副本集可以容忍一个副本离线或复制不足。

  • 将客户端配置为使用多个代理连接字符串。如果开始修补支持客户端 I/O 的特定代理,则在客户端的连接字符串中包含多个代理可以进行故障转移。有关如何获取多个代理的连接字符串的信息,请参阅获取 Amazon MSK 集群的引导程序代理。

  • 我们建议您将连接客户端升级到推荐版本或更高版本,以便从新版本中提供的功能中受益。客户端升级不受您的 MSK 集群 Kafka 版本的生命周期结束 (EOL) 日期的约束,也不需要在 EOL 日期之前完成。Apache Kafka 提供了双向客户端兼容性策略,允许较旧的客户端使用较新的集群,反之亦然。

  • 使用 3.x.x 版本的 Kafka 客户端可能具有以下默认值:和。acks=all enable.idempotence=true acks=all与之前的默认值不同acks=1,它通过确保所有同步副本都确认生产请求来提供额外的耐久性。同样,的默认值enable.idempotence是之前的false。更改enable.idempotence=true为默认值可降低出现重复消息的可能性。这些更改被视为最佳实践设置,可能会在正常性能参数范围内引入少量额外延迟。

  • 创建新的 MSK 集群时,请使用推荐的 Kafka 版本。使用推荐的 Kafka 版本可以让你受益于最新的 Kafka 和 MSK 功能。