当前位置: 首页 > 知识库问答 >
问题:

Kafka Broker找不到集群id,并在docker重启后创建新的集群id

韩宏朗
2023-03-14

我用kafka broker和zookeeper创建了docker,以运行脚本开始。如果我做了fresh start,它将正常启动并且运行正常(Windows->WSL->两个tmux窗口,一个会话)。如果我关闭kafka或zookeeper并重新启动它,它将正常连接。

当我停止docker容器时(docker stop my_kafka_container)出现问题。然后从脚本开始。/run_docker。在该脚本中,在开始之前,我删除旧容器docker rm my_kafka_container,然后docker运行。

Zookeeper在文件meta.properties中正常启动,它有以前启动时的旧集群id,但kafka broker由于某种原因无法通过znode cluster/id找到这个id,并创建了一个不是存储在meta.properties中的新id。我得到了

  ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.common.InconsistentClusterIdException: The Cluster ID m1Ze6AjGRwqarkcxJscgyQ doesn't match stored clusterId Some(1TGYcbFuRXa4Lqojs4B9Hw) 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)
[2020-01-04 15:58:43,303] INFO shutting down (kafka.server.KafkaServer)

共有1个答案

益阳平
2023-03-14

如果您100%确定您正在连接到正确的ZooKeeper和正确的Kafka日志目录,但由于某些原因,事情不匹配,并且您不想在试图恢复时丢失所有数据

Kafka数据目录(检查log.dirs属性的config/server.properties,默认为/tmp/kafka-logs)包含一个名为meta.properties的文件。它包含群集ID。应该与注册到ZK的ID匹配。要么编辑该文件以匹配ZK,要么编辑ZK以匹配该文件,要么删除该文件(它包含集群id和代理id,第一个当前已中断,第二个通常在配置文件中)。在这个小手术后,Kafka将从您所有现有的数据开始,因为您没有删除任何数据文件。

如下所示:mv/tmp/kafka-logs/meta.properties/tmp/kafka-logs/meta.properties_old

 类似资料:
  • 我有一个3节点Hadoop集群(Apache Hadoop-2.8.0)设置。我已经部署了2个使用QJM在HA模式下配置的名称代码。在安装namenode的同一台计算机上配置了2个数据阳极。第三个节点仅用于仲裁目的。 需要帮助..

  • OrientDB中的集群是一个重要的概念,用于存储记录,文档或顶点。 简而言之,群集是存储一组记录的地方。 默认情况下,OrientDB将为每个类创建一个群集。 一个类的所有记录都存储在同一个簇中,它与该类名称相同。最多可以在数据库中创建个群集。 是用于创建具有特定名称的集群的命令。 创建群集后,可以使用群集通过在创建任何数据模型期间指定名称来保存记录。 如果要将新群集添加到类中,请使用命令和命令

  • 创建 Swarm 集群 阅读 基本概念 一节我们知道 Swarm 集群由 管理节点 和 工作节点 组成。本节我们来创建一个包含一个管理节点和两个工作节点的最小 Swarm 集群。 初始化集群 在 Docker Machine 一节中我们了解到 Docker Machine 可以在数秒内创建一个虚拟的 Docker 主机,下面我们使用它来创建三个 Docker 主机,并加入到集群中。 我们首先创建一

  • 使用 ceph-deploy 的第一步就是新建一个集群,新集群具备: 一个 Ceph 配置文件,以及 一个监视器密钥环。 Ceph 配置文件至少要包含: 它自己的文件系统 ID ( fsid ) 最初的监视器(们)及其主机名(们),以及 最初的监视器及其 IP 地址。 详情见监视器配置参考。 ceph-deploy 工具也创建了一个监视器密钥环并置于 [mon.] 内,详情见 Cephx 手册。

  • 全球四套部署区域: 区域 地址 endpoint 金山云北京6区 https://cnbj6.cloud.mi.com http://cnbj2.emr.api.xiaomi.com AWS新加坡 https://sg.cloud.mi.com http://awssgp0.emr.api.xiaomi.com AWS俄勒冈 https://us.cloud.mi.com http://awsus

  • 现阶段,容器技术已经相当成熟了,就算是中小型公司,也可以基于 Gitlab、Aliyun 镜像仓库服务 和 Docker Swarm 轻松搭建自己的 Docker 集群服务。 安装 Docker curl -sSL https://get.daocloud.io/docker | sh # curl -sSL https://get.docker.com/ | sh 修改文件 /lib/syst