

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

# 升级 Apache Kafka 版本
<a name="version-upgrades"></a>

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

有关如何在升级期间使集群高度可用的信息，请参阅[构建高度可用的集群](bestpractices.md#ensure-high-availability)。

**使用 Apache Kafka 版本升级 AWS 管理控制台**

1. 在 [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/) 打开 Amazon MSK 控制台。

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

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

1. 在**属性**选项卡上，在 **Apache Kafka 版本**部分中选择**升级**。

1. 在 **Apache Kafka 版本**部分，执行以下操作：

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

   1. （可选）选择**查看版本兼容性**，验证集群的当前版本与可用升级版本之间是否兼容。然后，选择**选择**以继续。
**注意**  
Amazon MSK 支持大多数 Apache Kafka 版本进行就地升级。但是，从 ZooKeeper基于 Kafka 的版本升级到 KRaft基于 Kafka 的版本时，必须创建一个新集群。然后，将数据复制到新的集群，并将客户端切换至新集群。

   1. （可选）选中**更新集群配置**复选框，应用与新版本兼容的配置更新。这就启用了新版本的功能和改进。

      如果需要保持现有的自定义配置，可跳过这一步。
**注意**  
服务器端升级不会自动更新客户端的应用程序。
为保持集群稳定性，不支持版本降级。

   1. 选择**升级**以开始升级过程。

**使用 Apache Kafka 版本升级 AWS CLI**

1. 运行以下命令，并将 *ClusterArn* 替换为创建集群时所获取的 Amazon 资源名称（ARN）。如果您没有该集群的 ARN，可以通过列出所有集群来找到它。有关更多信息，请参阅 [列出 Amazon MSK 集群](msk-list-clusters.md)。

   ```
   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"
               ]
           }
       ]
   }
   ```

1. 运行以下命令，并将 *ClusterArn* 替换为创建集群时所获取的 Amazon 资源名称（ARN）。如果您没有该集群的 ARN，可以通过列出所有集群来找到它。有关更多信息，请参阅 [列出 Amazon MSK 集群](msk-list-clusters.md)。

   将 *Current-Cluster-Version* 替换为集群的当前版本。因为*TargetVersion*你可以从上一个命令的输出中指定任何目标版本。
**重要**  
集群版本不是简单的整数。要查找集群的当前版本，请使用[DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)操作或 desc [ribe-](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html) AWS 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"
   }
   ```

1. 要获得`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](https://docs.aws.amazon.com//msk/1.0/apireference/compatible-kafka-versions.html#GetCompatibleKafkaVersions)操作以获取您可以将集群升级到的 Apache Kafka 版本列表。

1. 调用该[UpdateClusterKafkaVersion](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-version.html#UpdateClusterKafkaVersion)操作将集群升级到兼容的 Apache Kafka 版本之一。