背景
- 项目使用docker swarm部署
- 服务之间使用消息中间件 kafka 通信
- Kafka 使用 star 3.7k 的
wurstmeister/kafka:2.12-2.2.1镜像 - Zookeeper 使用
zookeeper:3.5.5镜像
问题描述
每当Kafka和Zookeeper服务重启后,项目就会报以下错误:
org.apache.kafka.common.errors.UnknownTopicOrPartitionException:
This server does not host this topic-partition
由于是开发环境,之前每次遇到这种问题,都是粗鲁的直接清掉Kafka和Zookeeper的存储文件,随后重启就工作正常。
在切CICD环境之前,我们一直使用物理机部署程序在跑,在物理机上安装的Kafka和Zookeeper, 项目运行了一年多从来没出现过这种问题。
排查问题
首先仔细阅读了kafka镜像的readme文件,问题出现在下面这块:
By default each broker will get a new port number and broker id on restart. Depending on your use case this might not be desirable. If you need to use specific ports and broker ids, modify the docker-compose configuration accordingly.
默认情况下,在重启Kafk

项目在docker swarm上使用Kafka和Zookeeper时,重启服务后出现错误。原因是Kafka镜像在重启时获取新broker id。解决方法是修改docker-compose配置,固定Kafka的broker id,如设置BROKERIDCOMMAND为'hostname | awk -F'-' '{print $2}''.此外,讨论了如何在自动伸缩环境中保持partitions不变。
最低0.47元/天 解锁文章
2306

被折叠的 条评论
为什么被折叠?



