View a markdown version of this page

从 Kraft 模式迁移 ZooKeeper 到 - Amazon Managed Streaming for Apache Kafka

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

从 Kraft 模式迁移 ZooKeeper 到

您可以使用 API 将现有 ZooKeeper-based MSK 集群迁移到 Kraft 模式。UpdateClusterKafkaVersion迁移是在原地执行的 — 您的集群在整个过程中保持可用,不会移动任何数据。亚马逊 MSK 配置 Kraft 控制器,将集群元数据从 Kraft 法定数目迁移 ZooKeeper 到 Kraft 法定人数,并自动停用节点。 ZooKeeper

先决条件

在将集群从 ZooKeeper Kraft 模式迁移之前,请确保满足以下条件:

  • 您的集群正在 ZooKeeper 模式下运行 Apache Kafka 版本3.9.x。如果您的集群使用的是旧版本,请3.9.x先使用标准版本升级流程升级到。

  • 您的集群处于没有待处理操作的ACTIVE状态。

  • 如果您使用依赖直接 ZooKeeper 访问的工具(例如旧版本的 Cruise Control 或自定义管理工具),请将其更新为使用 Kafka 管理员 API 而不是直接 ZooKeeper 连接。

  • 对于标准(已配置)集群:必须禁用 ZooKeeper 客户端访问权限。在启动迁移ZookeeperAccess.Enabled=false之前使用 UpdateConnectivity API 进行设置。快速集群不需要此步骤。

  • 所有客户端应用程序都使用--bootstrap-server连接字符串,而不是--zookeeper连接字符串。迁移后 ZooKeeper 连接字符串不可用。

  • 您的集群没有同时启用公共访问和开放监控。

  • 您的集群不使用kafka.t3.small代理实例。

  • 您的集群不使用动态广告监听器。要检查该advertised.listeners属性是否已在代理上动态设置,请运行以下命令,其中$bs是集群的引导服务器连接字符串,并确保输出不包括:advertised.listeners

    bin/kafka-configs.sh --bootstrap-server $bs --entity-type brokers --describe

    有关动态设置属性的更多信息,请参阅动态 Amazon MSK 配置

迁移过程中会发生什么

当您启动 ZooKeeper-to-KRaft 迁移时,Amazon MSK 会自动执行以下步骤:

  1. 亚马逊 MSK 在您的集群中配置 Kraft 控制器节点。这些控制器均包含在内,无需额外付费。

  2. 数据平面迁移正在运行:代理商经过重新配置,在继续为客户流量提供服务的同时,使用 Kraft 法定人数获取元数据。

  3. 在所有经纪人向 Kraft 法定人数注册后,亚马逊 MSK 将停用这些节点。 ZooKeeper

  4. 集群管理模式已更新为 Kraft。

迁移是一项长时间运行的操作,可能需要几个小时,具体取决于集群的大小。您可以使用 DescribeClusterOperation API 监控操作状态。

重要

迁移是无法逆转的。一旦集群迁移到 Kraft 模式,就无法将其切换回 ZooKeeper 模式。

使用迁移 AWS CLI

  1. 验证集群的可用目标版本:

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

    如果您的集群符合迁移条件,则输出包括 Kraft 目标版本(带.kraft后缀)。

  2. 通过指定 Kraft 目标版本开始迁移:

    aws kafka update-cluster-kafka-version \ --cluster-arn ClusterArn \ --current-version Current-Cluster-Version \ --target-kafka-version "3.9.x.kraft"
    重要

    集群版本不是简单的整数。使用DescribeCluster操作查找集群的当前版本。

  3. 监控迁移进度:

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

    操作状态随之过渡UPDATE_IN_PROGRESS并完成UPDATE_COMPLETE

迁移后

迁移完成后:

  • 您的集群在 Kraft 模式下运行。所有元数据均由 Kraft 控制器管理。

  • ZooKeeper 节点被移除。 ZooKeeper 连接字符串不再可用。

  • 如果客户端应用程序使用--bootstrap-server连接字符串,则无需任何更改即可继续运行。

  • 如果您需要Kraft控制器端点进行开放式监控,则可以使用 ListNodes API 查看它们。