Kafka滚动升级报错:inter.broker.protocol.version设为1.0等版本无效
为啥设置
inter.broker.protocol.version=1.0会报错? 你遇到的这个错误核心原因其实很明确:当前启动的Kafka代码根本不认识1.0这个协议版本号。大概率是下面两种情况之一:
1. 代码升级没真正生效
你虽然做了"更新代码"的操作,但重启后的broker其实还是跑着旧的0.11.0版本代码。Kafka的协议版本是和代码版本绑定的——0.11.0的代码里压根没定义1.0这个协议版本,所以一读取配置就直接炸了。
怎么确认是不是这个问题?
- 在报错的那台机器上跑个命令:
kafka-server-start.sh --version,看看输出是不是1.0.0; - 翻一下broker启动日志的开头,一般都会打印当前Kafka的版本号,核对下是不是目标版本。
如果真的还是0.11.0,那就是你升级代码的步骤出问题了:
- 可能没把新的1.0.0文件覆盖到正确的安装目录;
- 启动脚本还指着旧版本的路径;
- 要是用的Cloudera Manager,手动改文件很容易和CM的配置冲突,导致实际启动的还是旧版本——这种情况建议直接用CM来做升级操作,别手动折腾。
2. 搞混了软件版本和协议版本的写法
虽然Apache Kafka 1.0.0对应的协议版本确实是1.0,但你试的1.0.0和1.0-IV0都是错的:
1.0.0是Kafka的软件版本号,不是协议版本的标识;1.0-IV0是Kafka内部用的协议代号,根本不是给用户配置的。
不过这不是核心问题——要是你的broker真的跑着1.0.0代码,1.0这个配置是完全有效的,不会报错。
该怎么修复?
先确保所有broker都真的升级到1.0.0了:
- 挨个检查每台机器的Kafka版本,确认全都是1.0.0;
- Cloudera环境优先用Cloudera Manager升级,避免手动操作踩坑。
重新走协议版本升级的流程:
- 等所有broker都确认是1.0.0版本后,再挨个改
server.properties里的inter.broker.protocol.version=1.0; - 逐个重启broker,这时候应该就不会再报版本无效的错了。
- 等所有broker都确认是1.0.0版本后,再挨个改
验证下升级结果:
- 重启完用
kafka-topics.sh --describe --zookeeper <你的ZK地址>:<端口>看看集群状态; - 翻下broker日志,确认没有协议相关的报错就搞定了。
- 重启完用
内容的提问来源于stack exchange,提问作者adamista
相关产品推荐
相关产品推荐

