本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 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之前使用UpdateConnectivityAPI 进行设置。快速集群不需要此步骤。所有客户端应用程序都使用
--bootstrap-server连接字符串,而不是--zookeeper连接字符串。迁移后 ZooKeeper 连接字符串不可用。您的集群没有同时启用公共访问和开放监控。
您的集群不使用
kafka.t3.small代理实例。您的集群不使用动态广告监听器。要检查该
advertised.listeners属性是否已在代理上动态设置,请运行以下命令,其中是集群的引导服务器连接字符串,并确保输出不包括:$bsadvertised.listenersbin/kafka-configs.sh --bootstrap-server $bs --entity-type brokers --describe有关动态设置属性的更多信息,请参阅动态 Amazon MSK 配置。
迁移过程中会发生什么
当您启动 ZooKeeper-to-KRaft 迁移时,Amazon MSK 会自动执行以下步骤:
亚马逊 MSK 在您的集群中配置 Kraft 控制器节点。这些控制器均包含在内,无需额外付费。
数据平面迁移正在运行:代理商经过重新配置,在继续为客户流量提供服务的同时,使用 Kraft 法定人数获取元数据。
在所有经纪人向 Kraft 法定人数注册后,亚马逊 MSK 将停用这些节点。 ZooKeeper
集群管理模式已更新为 Kraft。
迁移是一项长时间运行的操作,可能需要几个小时,具体取决于集群的大小。您可以使用 DescribeClusterOperation API 监控操作状态。
重要
迁移是无法逆转的。一旦集群迁移到 Kraft 模式,就无法将其切换回 ZooKeeper 模式。
使用迁移 AWS CLI
-
验证集群的可用目标版本:
aws kafka get-compatible-kafka-versions --cluster-arnClusterArn如果您的集群符合迁移条件,则输出包括 Kraft 目标版本(带
.kraft后缀)。 -
通过指定 Kraft 目标版本开始迁移:
aws kafka update-cluster-kafka-version \ --cluster-arnClusterArn\ --current-versionCurrent-Cluster-Version\ --target-kafka-version "3.9.x.kraft"重要
集群版本不是简单的整数。使用
DescribeCluster操作查找集群的当前版本。 -
监控迁移进度:
aws kafka describe-cluster-operation --cluster-operation-arnClusterOperationArn操作状态随之过渡
UPDATE_IN_PROGRESS并完成UPDATE_COMPLETE。
迁移后
迁移完成后:
您的集群在 Kraft 模式下运行。所有元数据均由 Kraft 控制器管理。
ZooKeeper 节点被移除。 ZooKeeper 连接字符串不再可用。
如果客户端应用程序使用
--bootstrap-server连接字符串,则无需任何更改即可继续运行。如果您需要Kraft控制器端点进行开放式监控,则可以使用
ListNodesAPI 查看它们。