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

升级 Apache Kafka 版本

您可以将现有的 MSK 集群升级为较新版本的 Apache Kafka。在升级集群的 Kafka 版本之前,请确认客户端软件版本支持新 Kafka 版本中的功能。

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

使用 Amazon Web Services 管理控制台 升级 Apache Kafka 版本
  1. https://console.amazonaws.cn/msk/ 打开 Amazon MSK 控制台。

  2. 在导航栏上,选择您在其中创建 MSK 集群的区域。

  3. 选择要升级的 MSK 集群。

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

  5. Apache Kafka 版本部分,执行以下操作:

    1. 选择 Apache Kafka 版本下拉列表中,选择要升级至的目标版本。例如,选择 3.9.x

    2. (可选)选择查看版本兼容性,验证集群的当前版本与可用升级版本之间是否兼容。然后,选择选择以继续。

      注意

      Amazon MSK 支持大多数 Apache Kafka 版本进行就地升级。但是,从基于 Zookeeper 的 Kafka 版本升级到基于 Kraft 的版本时,必须创建新的集群。然后,将数据复制到新的集群,并将客户端切换至新集群。

    3. (可选)选中更新集群配置复选框,应用与新版本兼容的配置更新。这就启用了新版本的功能和改进。

      如果需要保持现有的自定义配置,可跳过这一步。

      注意
      • 服务器端升级不会自动更新客户端的应用程序。

      • 为保持集群稳定性,不支持版本降级。

    4. 选择升级以开始升级过程。

使用 Amazon CLI 升级 Apache Kafka 版本
  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 操作或 describe-cluster Amazon CLI 命令。示例版本是 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 替换为您在 update-cluster-kafka-version 命令的输出中获得的 ARN。

    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 版本之一。