You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Kafka集群从Kraft模式切换至ZooKeeper模式的方法咨询

从Kraft模式切换到ZooKeeper模式(无数据丢失、允许停机)

前置准备

  • 已搭建好与当前Kafka版本兼容的ZooKeeper集群(未搭建则先完成ZK集群部署初始化)
  • 确保所有Kafka broker处于停机状态
  • 备份所有Kafka节点的数据目录(含元数据文件),避免操作失误导致数据丢失

操作步骤

  1. 停止所有Kafka Broker
    逐个在每个节点执行停止命令:

    bin/kafka-server-stop.sh
    

    Windows环境替换为.bat脚本。

  2. 导出Kraft元数据到ZooKeeper
    使用Kafka自带工具将Kraft集群元数据同步到ZK,执行时替换占位符:

    bin/kafka-storage.sh format --ignore-formatted -t <你的Kraft集群ID> -c config/server.properties --bootstrap-servers <任意Broker地址:端口> --zookeeper <ZK集群地址:端口>
    

    注:Kraft集群ID可在节点的meta.properties文件中找到cluster.id字段。

  3. 修改Broker配置文件
    编辑每个节点的config/server.properties:

    • 注释所有Kraft相关配置:process.roles、node.id、controller.quorum.voters、CONTROLLER类型的listeners条目
    • 添加/启用ZooKeeper相关配置:
      zookeeper.connect=<ZK集群地址:端口>
      zookeeper.session.timeout.ms=18000
      
    • 确保listeners仅保留业务相关监听器(如PLAINTEXT://:9092)
  4. 重新格式化Broker存储(ZK模式)
    对每个Broker节点执行格式化命令(基于修改后的ZK配置):

    bin/kafka-storage.sh format -c config/server.properties
    
  5. 启动Kafka集群并验证

    • 逐个启动Broker节点:
      bin/kafka-server-start.sh config/server.properties
      
    • 验证主题完整性:
      bin/kafka-topics.sh --list --bootstrap-servers <Broker地址:端口>
      
    • 验证数据可用性:消费历史消息确认无丢失,生产测试消息确认集群正常运行

注意事项

  • 确保ZooKeeper版本与Kafka版本兼容,避免版本不匹配引发异常
  • 操作全程保持所有Broker停机,禁止中途启动任何节点
  • 若切换失败,可通过备份的数据目录回滚至原Kraft集群

内容的提问来源于stack exchange,提问作者Dojo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:31:03