无法使用 zookeeper 启动 kafka (kafka.common.InconsistentClusterIdException)
Unable to start kafka with zookeeper (kafka.common.InconsistentClusterIdException)
下面是我解决这个问题的步骤:
- 启动 ZooKeeper
- 启动卡夫卡:
.\bin\windows\kafka-server-start.bat .\config\server.properties
然后在第二步发生错误:
ERROR Fatal error during KafkaServer startup. Prepare to shutdown
(kafka.server.KafkaServer)
kafka.common.InconsistentClusterIdException: The Cluster ID
Reu8ClK3TTywPiNLIQIm1w doesn't match stored clusterId
Some(BaPSk1bCSsKFxQQ4717R6Q) in meta.properties. The broker is trying
to join the wrong cluster. Configured zookeeper.connect may be wrong.
at kafka.server.KafkaServer.startup(KafkaServer.scala:220)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)
at kafka.Kafka$.main(Kafka.scala:84)
at kafka.Kafka.main(Kafka.scala)
当我触发 .\bin\windows\kafka-server-start.bat .\config\server.properties
zookeeper 控制台 returns :
INFO [SyncThread:0:FileTxnLog@216] - Creating new log file: log.1
如何解决此问题以获取 kafka 运行?
编辑您可以在正确的站点访问正确的问题(服务器故障)here
编辑这里是
我通过以下步骤设法解决了这个问题:
- 只需删除所有创建(或生成)到的log/Data文件
动物园管理员和卡夫卡。
- 运行 动物园管理员
- 运行卡夫卡
[由于这个 post 再次开放,我 post 我的答案在那里,所以你得到了相同的 post]
** 1. 最简单的解决方案是去掉kafka日志,重新开始。
** 2. 但根本原因是Kafka在meta.properties中保存了失败的集群ID。**
尝试从您的 tmp 文件夹中删除 kafka-logs/meta.properties,windows 上默认位于 C:/tmp 文件夹中,Linux 上 /tmp/kafka-logs
如果 kafka 在 docker 容器中 运行,日志路径可以由 docker-compose 中的卷配置指定 - 参见 docs.docker.com/compose/compose-file/compose-file-v2/#volumes -- Chris Halcrow
** 3.如何查找Kafka日志路径:**
打开位于您的kafka文件夹kafka_2.11-2.4.0\config\server.properties中的服务器server.properties文件(考虑到您的kafka版本,文件夹名称可以是kafka_< kafka_version>):
然后搜索条目 log.dirs 以检查日志所在的位置
log.dirs=/tmp/kafka-logs
我删除了以下目录:-
a.) 从 kafka-server 的配置位置记录目录,即 log.dir 属性 路径。
b.) 来自 kafka 代理位置的 tmp 目录。
log.dirs=../tmp/kafka-logs-1
对于mac,需要以下步骤。
- 停止kafka服务:
brew services stop kafka
- 打开kafka server.properties 文件:
vim /usr/local/etc/kafka/server.properties
- 在此文件中查找 log.dirs 的值。对我来说,是
/usr/local/var/lib/kafka-logs
- 删除
path-to-log.dirs/meta.properties
文件
- 启动kafka服务
brew services start kafka
如果您像我一样在 Java 项目中使用带有 Testcontainer 的嵌入式 Kafka,那么只需删除您的 build/kafka
文件夹和 Bob 是您的叔叔。
提到的 meta.properties
可以在 build/kafka/out/embedded-kafka
下找到。
我有一些旧书还在身边。我检查了这样的卷:
docker volume list
并修剪旧卷:
docker volume prune
并且还删除了那些是 kafka 的:
示例:
docker volume rm test_kafka
我正在使用 docker-compose 在 Linux 服务器上重新设置 Kafka,并使用已知的工作 docker -compose.config 设置了许多 Kafka 组件(代理、zookeeper、连接、rest 代理),我遇到了 OP 中描述的问题。我通过执行以下 dev 服务器实例 修复了此问题
docker-compose down
- 使用
cp kafka-logs -r kafka-logs-bak
备份kafka-logs
目录
- 删除
kafka-logs/meta.properties
文件
docker-compose up -d
docker-compose 用户注意事项:
我的日志文件 不在 默认位置 (/tmp/kafka-logs
)。如果你是 运行 Kafka 在 Docker 容器中,日志路径可以由 docker-compose 中的卷配置指定,例如
volumes:
- ./kafka-logs:/tmp/kafka-logs
这是指定 SOURCE:TARGET。 ./kafka-logs
是源(即名为 kafka-logs
的目录,与 docker-compose 文件位于同一目录中)。然后将其作为 kafka 容器 中的已安装卷 的目标 /tmp/kafka-logs
。因此,可以从主机上的源文件夹中删除日志,或者在对 kafka 容器执行 docker exec
后从已安装的卷中删除它们。
见https://docs.docker.com/compose/compose-file/compose-file-v2/#volumes
无需删除 Kafka 上的 log/data 个文件。检查 Kafka 错误日志并找到新的集群 ID。使用集群 ID 更新 meta.properties 文件,然后重新启动 Kafka。
/home/kafka/logs/meta.properties
要永久解决此问题,请遵循以下内容。
检查您的 zookeeper.properties 文件并查找 dataDir
path 并将路径 tmp
位置更改为服务器重启后不应删除的任何其他位置。
/home/kafka/kafka/config/zookeeper.properties
将 zookeeper 文件夹和文件复制到新的(低于或非 tmp)位置,然后重新启动 zookeeper 和 Kafka。
cp -r /tmp/zookeeper /home/kafka/zookeeper
现在服务器重启不会影响Kafka的启动
对我来说,meta.properties 在 /usr/local/var/lib/kafka-logs
通过删除它,kafka 开始工作。
我还删除了包含 Kafka 生成的所有数据的文件夹的所有内容。我可以在我的 .yml
文件中找到该文件夹:
kafka:
image: confluentinc/cp-kafka:7.0.0
ports:
- '9092:9092'
environment:
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "true"
volumes:
- ./kafka-data/data:/var/lib/kafka/data
depends_on:
- zookeeper
networks:
- default
volumes:
下保留位置。因此,就我而言,我删除了位于 kafka-data
.
下的 data
文件夹的所有文件
下面是我解决这个问题的步骤:
- 启动 ZooKeeper
- 启动卡夫卡:
.\bin\windows\kafka-server-start.bat .\config\server.properties
然后在第二步发生错误:
ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) kafka.common.InconsistentClusterIdException: The Cluster ID Reu8ClK3TTywPiNLIQIm1w doesn't match stored clusterId Some(BaPSk1bCSsKFxQQ4717R6Q) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong. at kafka.server.KafkaServer.startup(KafkaServer.scala:220) at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44) at kafka.Kafka$.main(Kafka.scala:84) at kafka.Kafka.main(Kafka.scala)
当我触发 .\bin\windows\kafka-server-start.bat .\config\server.properties
zookeeper 控制台 returns :
INFO [SyncThread:0:FileTxnLog@216] - Creating new log file: log.1
如何解决此问题以获取 kafka 运行?
编辑您可以在正确的站点访问正确的问题(服务器故障)here
编辑这里是
我通过以下步骤设法解决了这个问题:
- 只需删除所有创建(或生成)到的log/Data文件 动物园管理员和卡夫卡。
- 运行 动物园管理员
- 运行卡夫卡
[由于这个 post 再次开放,我 post 我的答案在那里,所以你得到了相同的 post]
** 1. 最简单的解决方案是去掉kafka日志,重新开始。
** 2. 但根本原因是Kafka在meta.properties中保存了失败的集群ID。**
尝试从您的 tmp 文件夹中删除 kafka-logs/meta.properties,windows 上默认位于 C:/tmp 文件夹中,Linux 上 /tmp/kafka-logs
如果 kafka 在 docker 容器中 运行,日志路径可以由 docker-compose 中的卷配置指定 - 参见 docs.docker.com/compose/compose-file/compose-file-v2/#volumes -- Chris Halcrow
** 3.如何查找Kafka日志路径:**
打开位于您的kafka文件夹kafka_2.11-2.4.0\config\server.properties中的服务器server.properties文件(考虑到您的kafka版本,文件夹名称可以是kafka_< kafka_version>):
然后搜索条目 log.dirs 以检查日志所在的位置
log.dirs=/tmp/kafka-logs
我删除了以下目录:-
a.) 从 kafka-server 的配置位置记录目录,即 log.dir 属性 路径。
b.) 来自 kafka 代理位置的 tmp 目录。
log.dirs=../tmp/kafka-logs-1
对于mac,需要以下步骤。
- 停止kafka服务:
brew services stop kafka
- 打开kafka server.properties 文件:
vim /usr/local/etc/kafka/server.properties
- 在此文件中查找 log.dirs 的值。对我来说,是
/usr/local/var/lib/kafka-logs
- 删除
path-to-log.dirs/meta.properties
文件 - 启动kafka服务
brew services start kafka
如果您像我一样在 Java 项目中使用带有 Testcontainer 的嵌入式 Kafka,那么只需删除您的 build/kafka
文件夹和 Bob 是您的叔叔。
提到的 meta.properties
可以在 build/kafka/out/embedded-kafka
下找到。
我有一些旧书还在身边。我检查了这样的卷:
docker volume list
并修剪旧卷:
docker volume prune
并且还删除了那些是 kafka 的: 示例:
docker volume rm test_kafka
我正在使用 docker-compose 在 Linux 服务器上重新设置 Kafka,并使用已知的工作 docker -compose.config 设置了许多 Kafka 组件(代理、zookeeper、连接、rest 代理),我遇到了 OP 中描述的问题。我通过执行以下 dev 服务器实例 修复了此问题
docker-compose down
- 使用
cp kafka-logs -r kafka-logs-bak
备份 - 删除
kafka-logs/meta.properties
文件 docker-compose up -d
kafka-logs
目录
docker-compose 用户注意事项:
我的日志文件 不在 默认位置 (/tmp/kafka-logs
)。如果你是 运行 Kafka 在 Docker 容器中,日志路径可以由 docker-compose 中的卷配置指定,例如
volumes:
- ./kafka-logs:/tmp/kafka-logs
这是指定 SOURCE:TARGET。 ./kafka-logs
是源(即名为 kafka-logs
的目录,与 docker-compose 文件位于同一目录中)。然后将其作为 kafka 容器 中的已安装卷 的目标 /tmp/kafka-logs
。因此,可以从主机上的源文件夹中删除日志,或者在对 kafka 容器执行 docker exec
后从已安装的卷中删除它们。
见https://docs.docker.com/compose/compose-file/compose-file-v2/#volumes
无需删除 Kafka 上的 log/data 个文件。检查 Kafka 错误日志并找到新的集群 ID。使用集群 ID 更新 meta.properties 文件,然后重新启动 Kafka。
/home/kafka/logs/meta.properties
要永久解决此问题,请遵循以下内容。
检查您的 zookeeper.properties 文件并查找 dataDir
path 并将路径 tmp
位置更改为服务器重启后不应删除的任何其他位置。
/home/kafka/kafka/config/zookeeper.properties
将 zookeeper 文件夹和文件复制到新的(低于或非 tmp)位置,然后重新启动 zookeeper 和 Kafka。
cp -r /tmp/zookeeper /home/kafka/zookeeper
现在服务器重启不会影响Kafka的启动
对我来说,meta.properties 在 /usr/local/var/lib/kafka-logs 通过删除它,kafka 开始工作。
我还删除了包含 Kafka 生成的所有数据的文件夹的所有内容。我可以在我的 .yml
文件中找到该文件夹:
kafka:
image: confluentinc/cp-kafka:7.0.0
ports:
- '9092:9092'
environment:
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "true"
volumes:
- ./kafka-data/data:/var/lib/kafka/data
depends_on:
- zookeeper
networks:
- default
volumes:
下保留位置。因此,就我而言,我删除了位于 kafka-data
.
data
文件夹的所有文件