温馨提示×

kafka在ubuntu如何升级

小樊
48
2026-07-18 21:27:16
栏目: 智能运维

在 Ubuntu 上升级 Kafka 主要有两种方式:使用包管理器(如 apt)手动下载二进制包。由于 Kafka 依赖 Zookeeper(或 KRaft 模式下的内部元数据管理),升级时需要特别注意兼容性。

以下是详细的升级步骤和注意事项。


方式一:使用 apt 升级(如果最初是通过 apt 安装的)

如果你最初是通过 Confluent 的仓库或者社区仓库安装的,可以直接使用 apt。

  1. 更新包列表

    sudo apt update
    
  2. 升级 Kafka 包 通常包名可能是 kafka 或者 confluent-kafka

    # 如果是 Apache Kafka
    sudo apt upgrade kafka
    
    # 如果是 Confluent Platform
    sudo apt upgrade confluent-kafka
    
  3. 重启服务

    sudo systemctl restart kafka
    

方式二:手动升级(推荐,适用于大多数二进制安装)

这是最常见的情况。假设你原来的 Kafka 在 /opt/kafka,现在要升级到新版本。

1. 准备工作

  • 查看当前版本
    cd /opt/kafka
    ./bin/kafka-topics.sh --version
    
  • 备份配置和数据
    # 备份配置文件
    cp -r /opt/kafka/config /opt/kafka/config.backup
    # 备份数据目录(如果数据在 kafka 目录下)
    cp -r /opt/kafka/logs /opt/kafka/logs.backup
    

2. 下载新版本

访问 Apache Kafka 官方下载页 获取最新版本的链接。

# 假设下载 3.6.0 版本
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
tar -xzf kafka_2.13-3.6.0.tgz
sudo mv kafka_2.13-3.6.0 /opt/kafka-new

3. 迁移配置文件

不要直接覆盖整个文件夹,因为新版本的 libsbin 是不同的。只需要复制你的自定义配置。

# 复制 server.properties, zookeeper.properties 等
sudo cp /opt/kafka/config/server.properties /opt/kafka-new/config/
sudo cp /opt/kafka/config/zookeeper.properties /opt/kafka-new/config/ # 如果用 zk
# 如果你修改了其他文件(如 log4j.properties),也一并复制

4. 处理数据目录(关键步骤)

Kafka 的数据通常存储在 log.dirs 指定的路径(默认通常是 /tmp/kafka-logs/var/lib/kafka-logs)。

  • 情况 A:数据目录与程序目录分离(推荐) 如果你在 server.properties 中配置了 log.dirs=/var/lib/kafka-logs,那么你不需要移动数据。新版本的 Kafka 会直接读取旧数据。
  • 情况 B:数据在程序目录下 你需要将旧数据目录移动到新目录,或者修改新版本的 server.properties 指向旧目录。

5. 停止旧服务并启动新服务

# 停止旧版本
sudo systemctl stop kafka  # 或者手动 kill -9 <pid>

# 切换目录(可选,或者修改 systemd 文件指向新路径)
sudo rm /opt/kafka
sudo ln -s /opt/kafka-new /opt/kafka

# 启动新版本
sudo systemctl start kafka

关键注意事项(非常重要)

1. 滚动升级(生产环境)

如果是集群环境,不要同时重启所有节点

  1. 逐个升级 Broker。
  2. 先升级 Follower,最后升级 Leader。
  3. 确保集群状态为 InSync 再进行下一个节点。

2. 协议版本(Inter-broker Protocol Version)

如果你是从一个非常老的版本(如 2.0 升级到 3.x),升级后可能需要修改 server.properties 中的协议版本,以启用新特性。

  • 升级后,默认会使用新版本的协议。
  • 如果需要回滚,可能需要设置 inter.broker.protocol.version

3. Zookeeper vs KRaft

  • Zookeeper 模式:确保 Zookeeper 先升级或保持兼容。
  • KRaft 模式(Kafka 3.x+ 推荐):如果你是从 ZK 模式升级到 KRaft 模式,这是一个重大变更,需要迁移元数据,步骤非常复杂,建议查阅官方文档的 “ZooKeeper to KRaft Migration” 指南。

4. Java 版本

新版本的 Kafka 可能需要更高版本的 Java(例如 Kafka 3.x 通常需要 Java 11 或 17)。请检查官方文档的 “System Requirements”。


总结步骤(快速版)

  1. 备份 config/log.dirs 数据。
  2. 下载 新 TGZ 包并解压到新目录。
  3. 复制 你的 server.properties 到新目录。
  4. 停止 旧 Kafka。
  5. 启动 新 Kafka(指向旧的数据目录)。
  6. 观察 日志 logs/server.log 确认无报错。

0