无法使用 zookeeper 启动 kafka (kafka.common.InconsistentClusterIdException)

Unable to start kafka with zookeeper (kafka.common.InconsistentClusterIdException)

下面是我解决这个问题的步骤:

  1. 启动 ZooKeeper
  2. 启动卡夫卡:.\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

编辑这里是

我通过以下步骤设法解决了这个问题:

  1. 只需删除所有创建(或生成)到的log/Data文件 动物园管理员和卡夫卡。
  2. 运行 动物园管理员
  3. 运行卡夫卡

[由于这个 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 文件并查找 dataDirpath 并将路径 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 文件夹的所有文件