升级 Apache Kafka 版本
您可以将现有的 MSK 集群升级为较新版本的 Apache Kafka。在升级集群的 Kafka 版本之前,请确认客户端软件版本支持新 Kafka 版本中的功能。
有关如何在升级期间使集群高度可用的信息,请参阅构建高度可用的集群。
使用 Amazon Web Services 管理控制台 升级 Apache Kafka 版本
在 https://console.amazonaws.cn/msk/
打开 Amazon MSK 控制台。 -
在导航栏上,选择您在其中创建 MSK 集群的区域。
-
选择要升级的 MSK 集群。
-
在属性选项卡上,在 Apache Kafka 版本部分中选择升级。
-
在 Apache Kafka 版本部分,执行以下操作:
-
在选择 Apache Kafka 版本下拉列表中,选择要升级至的目标版本。例如,选择
3.9.x。 -
(可选)选择查看版本兼容性,验证集群的当前版本与可用升级版本之间是否兼容。然后,选择选择以继续。
注意
Amazon MSK 支持大多数 Apache Kafka 版本进行就地升级。但是,从基于 Zookeeper 的 Kafka 版本升级到基于 Kraft 的版本时,必须创建新的集群。然后,将数据复制到新的集群,并将客户端切换至新集群。
-
(可选)选中更新集群配置复选框,应用与新版本兼容的配置更新。这就启用了新版本的功能和改进。
如果需要保持现有的自定义配置,可跳过这一步。
注意
-
服务器端升级不会自动更新客户端的应用程序。
-
为保持集群稳定性,不支持版本降级。
-
-
选择升级以开始升级过程。
-
使用 Amazon CLI 升级 Apache Kafka 版本
运行以下命令,并将
ClusterArn替换为创建集群时所获取的 Amazon 资源名称 (ARN)。如果您没有该集群的 ARN,可以通过列出所有集群来找到它。有关更多信息,请参阅 列出 Amazon MSK 集群。aws kafka get-compatible-kafka-versions --cluster-arnClusterArn此命令的输出包括您可以将集群升级到的 Apache Kafka 版本的列表。其内容类似于以下示例。
{ "CompatibleKafkaVersions": [ { "SourceVersion": "2.2.1", "TargetVersions": [ "2.3.1", "2.4.1", "2.4.1.1", "2.5.1" ] } ] }-
运行以下命令,并将
ClusterArn替换为创建集群时所获取的 Amazon 资源名称 (ARN)。如果您没有该集群的 ARN,可以通过列出所有集群来找到它。有关更多信息,请参阅 列出 Amazon MSK 集群。将
Current-Cluster-Version替换为集群的当前版本。对于TargetVersion,您可以指定上一个命令输出中的任何目标版本。重要
集群版本不是简单的整数。要查找集群的当前版本,请使用 DescribeCluster 操作或 describe-cluster
Amazon CLI 命令。示例版本是 KTVPDKIKX0DER。aws kafka update-cluster-kafka-version --cluster-arnClusterArn--current-versionCurrent-Cluster-Version--target-kafka-versionTargetVersion上一个命令的输出如以下 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" } -
要获取
update-cluster-kafka-version操作的结果,请运行以下命令,将ClusterOperationArn替换为您在update-cluster-kafka-version命令的输出中获得的 ARN。aws kafka describe-cluster-operation --cluster-operation-arnClusterOperationArn该
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 版本
调用 GetCompatibleKafkaVersions 操作以获取您可以将集群升级到的 Apache Kafka 版本的列表。
调用 UpdateClusterKafkaVersion 操作将集群升级到兼容的 Apache Kafka 版本之一。