Boh*_*huk 15 apache-kafka docker apache-zookeeper
我已经使用 kafka 代理和动物园管理员创建了 docker 以使用运行脚本启动它。如果我重新启动,它会正常启动并运行正常(Windows -> WSL -> 两个 tmux 窗口,一个会话)。如果我关闭 kafka 或 zookeeper 并重新启动它,它将正常连接。
当我停止 docker 容器(docker stop my_kafka_container)时出现问题。然后我从我的脚本 ./run_docker 开始。在开始之前的那个脚本中,我删除旧容器docker rm my_kafka_container
,然后 docker run。
Zookeeper 正常启动,并且在文件 meta.properties 中,它具有上次启动时的旧集群 ID,但 kafka 代理由于某种原因无法通过 znode cluster/id 找到此 id 并创建新的,这不是存储在 meta.properties 中的。我得到
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)
Run Code Online (Sandbox Code Playgroud)
如何避免代理更改它的集群 ID?
Gwe*_*ira 22
如果您 100% 确定您正在连接到正确的 ZooKeeper 和正确的 Kafka 日志目录,但由于某些原因,事情不匹配,并且您不想在尝试恢复时丢失所有数据:
Kafka 数据目录(检查 config/server.properties 的log.dirs
属性,默认为/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
Mar*_*cel 11
我在使用 Docker 时遇到了同样的问题。此问题自 Kafka 2.4 以来出现,因为添加了检查以查看 Zookeeper 中的集群 ID 是否匹配。它将集群 ID 存储在 meta.properties 中。
这可以通过使 Zookeeper 数据持久化而不仅仅是 Zookeeper 日志来解决。例如使用以下配置:
volumes:
- ~/kafka/data/zookeeper_data:/var/lib/zookeeper/data
- ~/kafka/data/zookeeper_log:/var/lib/zookeeper/log
Run Code Online (Sandbox Code Playgroud)
您还应该删除 Kafka 日志中的 meta.properties 文件一次,以便 Kafka 从 Zookeeper 检索正确的集群 ID。之后,ID 应该匹配,您就不必再这样做了。
您还可能会遇到 2.4 中也添加的 snapshot.trust.empty 错误。您可以通过添加 snapshot.trust.empty=true 设置或在升级到 2.4 之前使 Zookeeper 数据持久化来解决此问题。
NAV*_*NGH 10
我已经尝试了大部分答案,并找到了真正有效的方法(丢失我的所有数据和记录)。
仅适用于 WINDOWS 操作系统
所以正如其他人所建议的,我们确实需要更改并设置两者的数据目录的默认路径
server.properties 中的 Kafka 和
zookeeper.properties 中的 Zookeeper
//记住这很重要,如果你在windows上给双斜线。
对于 kafka
log.dirs=C://kafka_2.13-2.5//data//kafka
同样适用于 zookeeper
dataDir=C://kafka_2.13-2.5//data//zookeeper
显然你需要在设置任何东西之前先创建上面列出的文件夹
然后尝试运行zookeeper和Kafka自从改变路径后就没有遇到过这个问题。
在此之前,我有一个“/”,它只工作了一次,然后又变成了“”,这也只工作了一次。
编辑
并且不要忘记正确
终止进程kafka-server-stop.bat 和
zookeeper-server-stop.bat
要解决这个问题:
小智 6
Kafka 过去是与其他 Zookeeper 实例一起启动的,因此旧的 Zookeeper ID 已在其中注册。在 Kafka 配置目录中,打开 kafka 配置属性文件,例如 server.properties 使用参数 log.dirs= 查找日志路径目录,然后转到日志路径目录并在其中找到文件 meta.properties。打开文件meta.properties并更新cluster.id=或删除该文件或日志路径目录中的所有日志文件并重新启动kafka。
meta.properties 中有一个cluster.id属性,只需将 id 替换为错误日志中的说明即可。
meta.properties 文件在kafka.logdir 中。你可以从 Kafka config server.properties 中学习 kafka.logdir。下面举个例子。
cat /opt/kafka/config/server.properties | grep log.dirs
Expected output:
log.dirs=/data/kafka-logs
Run Code Online (Sandbox Code Playgroud)
一旦你找到 meta.properties 文件就改变它。更改后它应该是这样的。
#
#Tue Apr 14 12:06:31 EET 2020
cluster.id=m1Ze6AjGRwqarkcxJscgyQ
version=0
broker.id=0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22660 次 |
最近记录: |