CentOS上升级Kafka版本的详细操作步骤
备份关键数据
升级前必须备份Kafka和ZooKeeper的所有重要数据,避免操作失误导致数据丢失。常用工具包括rsync(增量备份)或tar(全量归档),备份路径需覆盖:
log.dirs配置项指定,如/var/lib/kafka/data);dataDir配置项指定,如/var/lib/zookeeper);server.properties、zookeeper.properties等)。确认当前版本
执行以下命令查看当前Kafka集群版本(需替换your_topic_name为实际Topic名称):
bin/kafka-topics.sh --describe --topic your_topic_name --bootstrap-server localhost:9092
输出结果中的Version字段即为当前Kafka版本。
下载并校验新版本
访问Apache Kafka官方下载页面(https://kafka.apache.org/downloads),选择目标版本(如3.9.0)的预编译包(tgz格式)下载。建议通过sha512sum命令校验文件完整性,避免下载损坏的包。
停止现有服务
按先ZooKeeper后Kafka的顺序停止服务(若Kafka与ZooKeeper在同一服务器):
# 停止ZooKeeper(若使用系统服务)
sudo systemctl stop zookeeper
# 停止Kafka(若使用系统服务)
sudo systemctl stop kafka
# 若未使用systemd,需进入Kafka目录手动停止
cd /opt/kafka/kafka_xxx_xxx/bin
./kafka-server-stop.sh ../config/server.properties
确认服务完全停止(可通过ps -ef | grep kafka或ps -ef | grep zookeeper检查)。
解压并部署新版本
将下载的新版本压缩包解压到Kafka安装目录(如/opt/kafka),并覆盖旧版本文件:
# 解压新版本(以3.9.0为例)
tar -xzf kafka_2.13-3.9.0.tgz -C /opt/kafka --strip-components=1
# 备份旧版本(可选,便于回滚)
mv /opt/kafka/kafka_xxx_xxx /opt/kafka/kafka_old_version
注:
--strip-components=1用于去除压缩包内的顶层目录(如kafka_2.13-3.9.0),直接将内容解压到目标目录。
更新配置文件
进入新版本的config目录,修改以下关键配置:
server.properties:检查log.dirs(数据目录)、zookeeper.connect(ZooKeeper地址)、listeners(Broker监听地址)等配置是否符合当前环境;inter.broker.protocol.version=<当前集群版本> # 如0.10.0(需与旧版本一致)
log.message.format.version=<当前集群版本> # 如0.10.0(需与旧版本一致)
例如,若当前集群版本为0.10.0,则两项均设置为0.10.0。启动新版本服务
启动ZooKeeper和Kafka服务(推荐使用systemd管理,便于后续维护):
# 启动ZooKeeper
sudo systemctl start zookeeper
# 启动Kafka
sudo systemctl start kafka
# 检查服务状态
sudo systemctl status zookeeper
sudo systemctl status kafka
若使用systemd,需提前将Kafka配置为系统服务(参考Kafka官方文档的systemd脚本)。
检查服务状态
查看Kafka和ZooKeeper日志(默认路径:/var/log/kafka/server.log、/var/log/zookeeper/zookeeper.log),确认无ERROR或WARN级别的错误信息。
测试基本功能
使用Kafka命令行工具创建Topic、发送/接收消息,验证集群功能是否正常:
# 创建Topic(若已存在可跳过)
bin/kafka-topics.sh --create --topic test_topic --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
# 启动生产者,发送测试消息
bin/kafka-console-producer.sh --topic test_topic --bootstrap-server localhost:9092
# 启动消费者,接收测试消息
bin/kafka-console-consumer.sh --topic test_topic --from-beginning --bootstrap-server localhost:9092
若能正常收发消息,说明升级成功。
检查版本一致性
执行以下命令确认所有Broker已升级至新版本:
bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092
输出结果中的Supported versions应包含新版本的协议版本(如3.9-IV3)。
滚动升级剩余Broker
若集群有多个Broker节点,需逐个停止旧版本Broker、替换为新版本、启动新版本(步骤同上),确保集群始终有可用节点,避免服务中断。
调整消息格式版本
当所有Broker升级完成后,可逐步提高log.message.format.version至新版本(如从0.10.0调整至3.9),以启用新版本的消息格式特性。调整后需重启所有Broker使配置生效。
监控集群性能
升级后需密切关注集群的各项指标(如CPU、内存、磁盘IO、消息吞吐量、延迟),通过Kafka自带的kafka-run-class.sh工具或第三方监控系统(如Prometheus+Grafana)进行监控,确保性能符合预期。
Compatibility Matrix)。