linux

Kafka在Linux上如何进行版本升级

小樊
43
2025-10-08 14:42:33
栏目: 智能运维

一、升级前准备工作

  1. 备份关键数据:备份Kafka的所有配置文件(如server.propertieszookeeper.properties)、数据目录(log.dirs指定路径)、日志文件及自定义Topic配置,防止升级过程中数据丢失。
  2. 下载新版本包:从Apache Kafka官方网站下载目标版本的二进制包(如kafka_2.13-3.6.0.tgz),建议选择稳定 release 版本。
  3. 检查兼容性:查阅新版本的升级指南(Upgrade Notes)和发布说明(Release Notes),确认与现有集群的兼容性,重点关注:
    • Broker与Zookeeper的版本兼容性(如Kafka 3.6.x需搭配Zookeeper 3.5.x及以上);
    • 配置项变更(如inter.broker.protocol.versionlog.message.format.version的默认值调整);
    • API或命令行工具的变化(如kafka-topics.sh的参数调整)。

二、具体升级步骤

  1. 停止现有服务
    先停止Kafka Broker,再停止Zookeeper(Kafka依赖Zookeeper管理元数据),避免数据损坏:

    # 停止Kafka(若使用systemd)
    sudo systemctl stop kafka
    # 或通过脚本停止
    /opt/kafka_old/bin/kafka-server-stop.sh /opt/kafka_old/config/server.properties
    
    # 停止Zookeeper
    /opt/zk_old/bin/zkServer.sh stop
    
  2. 解压新版本包
    将下载的新版本包解压到指定目录(如/opt/kafka_new),保持目录结构清晰:

    tar -xzf kafka_2.13-3.6.0.tgz -C /opt/
    mv /opt/kafka_2.13-3.6.0 /opt/kafka_new
    
  3. 迁移配置文件
    将旧版本的config目录复制到新版本中,修改关键配置以适配新版本要求:

    cp -r /opt/kafka_old/config/* /opt/kafka_new/config/
    

    需重点检查的配置项

    • broker.id:确保集群内唯一;
    • listeners/advertised.listeners:更新Broker的监听地址(如从PLAINTEXT://:9092改为PLAINTEXT://your.domain:9092);
    • zookeeper.connect:确认Zookeeper集群地址正确;
    • log.dirs:确保新目录存在且有写入权限;
    • 新版本新增配置(如message.format.version若升级到3.5+需设置为对应版本)。
  4. 启动新版本服务
    先启动Zookeeper,再启动Kafka Broker,确保元数据服务正常:

    # 启动Zookeeper
    /opt/kafka_new/config/zookeeper-server-start.sh /opt/kafka_new/config/zookeeper.properties &
    
    # 启动Kafka Broker
    /opt/kafka_new/bin/kafka-server-start.sh /opt/kafka_new/config/server.properties &
    
  5. 验证升级结果
    使用Kafka命令行工具检查集群状态,确认新版本运行正常:

    # 检查Broker版本(应显示新版本号)
    /opt/kafka_new/bin/kafka-topics.sh --version
    
    # 列出所有Topic,确认元数据正常
    /opt/kafka_new/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
    
    # 生产测试消息(向test Topic发送一条消息)
    echo "Upgrade test message" | /opt/kafka_new/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
    
    # 消费测试消息(从test Topic读取)
    /opt/kafka_new/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
    

三、后续操作建议

  1. 监控集群状态:升级后24小时内密切监控Kafka集群的:
    • Broker CPU、内存、磁盘IO使用率;
    • Topic分区Leader分布(确保均衡);
    • 消息生产/消费延迟(通过kafka-consumer-groups.sh查看);
    • Zookeeper节点状态(zkServer.sh status)。
  2. 清理旧版本:确认新版本运行稳定后,删除旧版本的Kafka目录(如/opt/kafka_old),释放磁盘空间。
  3. 回退预案:若升级后出现严重问题(如数据损坏、服务无法启动),可快速回退到旧版本:
    # 停止新版本Kafka
    sudo systemctl stop kafka
    
    # 启动旧版本Kafka
    /opt/kafka_old/bin/kafka-server-start.sh /opt/kafka_old/config/server.properties
    

注意事项

0
看了该问题的人还看了