部署kafka集群遇到的问题?以及出现错误ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server

原本想着了解一下kafka是如何进行在客户端进行编写的,想着总不能进行理论,不进行实战操作。没想到上手就出现各种各样的问题。问题是一开始,启动了kafka,输入jps,也显示成功启动了。没想到后面自己又关闭了。一开始我还以为是客户端启动,我虚拟机的内存不够用。但是一个朋友告诉我,遇到问题不能主观臆断,需要定位错误。确实这一点我做的不够好。有时候总是先入为主,没有考虑是不是其他情况。我一开始想着是不是内存爆了,于是上网搜和我出现一样情况的人,结果还真搜出一堆关于内存问题导致kafka服务器集群失败。后面我就不想解决了,心里想着既然是内存的问题,那我操作也没用,改内存吧。这完全是思维上的懒惰。

话不多说。复盘下当时的情况。

当时启动了kafka,启动java客户端之后,jps再次查看发现kafka没了。再后来发现他是过一会就消失不见了。后面查看日志报错如下:

ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.common.InconsistentClusterIdException: The Cluster ID rfuaibyfSxigyAA_51OiKA doesn't match stored clusterHKoNGU0MRjS5bQgE92PPgA) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeepet may be wrong.
    at kafka.server.KafkaServer.startup(KafkaServer.scala:242)
    at kafka.Kafka$.main(Kafka.scala:113)
    at kafka.Kafka.main(Kafka.scala)

 解决方案:

这个错误其实是没有配置好,再配置集群的时候。server.properties文件没有配置好导致的。1.Zookeeper 配置错误:
文章中提到,Zookeeper 的 dataDir 配置设置不正确,导致 Zookeeper 无法正常启动。
应该将 dataDir 设置为一个持久化的目录,而不是使用临时目录。
2.Kafka 配置错误:
Kafka 的 log.dirs 参数也需要指定一个持久化的目录,而不是使用默认的临时目录。
否则在 Kafka 服务重启时,会出现 InconsistentClusterIdException 错误。

以下参考这位博主:阅读网址https://gautambangalore.medium.com/resolved-error-fatal-error-during-kafkaserver-startup-37f638c2c00c

翻译如下:

上述错误非常常见,当我们更新现有集群中每个 Kafka Broker 上的server.properties文件以添加额外的 zookeeper 服务器条目时可能会遇到该错误,因为集群中增加了新的 Kafka Broker。如果在 Zookeeper 的 zoo.cfg 或 Kafka 服务器上执行任何配置更改,系统重启后单节点 Kafka Broker 也可能会遇到此问题。properties 文件替换/更新/tmp 目录位置。

问题的根本原因是 zookeeper 数据存储在临时文件夹中,而 Kafka 日志存储在持久文件夹中,反之亦然。理想情况下,zookeeper 用于存储快照的 zoo.cfg 中dataDir 的默认值为/tmp/zookeeper ,同样,Kafka broker 的server.propertieslog.dirs的默认值为/tmp/kafka-logs。系统重启后,由于 Kafka 集群的全新注册,存储在该临时目录中的文件将被清理,并生成一个新的集群 ID。最终,这种配置不匹配或集群 ID 编号变化会导致上述错误。

有两种方法可以快速解决上述错误,但不建议在生产环境中使用。

选项 1:更新文件 meta.properties 中的 Cluster ID

如果server.propertieslog.dir键的值未更新为持久文件夹位置,则meta.properties文件可能位于/tmp/kafka-logs。打开 meta.properties,内容将类似于如下所示。将 cluster.id 值替换为错误日志中存在的新集群 ID,然后重新启动 Kafka 服务器。

选项 2:- 删除保存了上次/失败会话的错误 cluster.id 的 /tmp/kafka-logs/meta.properties。

我的理解是,是重新关机之后,重启服务器,系统会删除临时文件,你配置的时候没有更改配置文件的输出目录,导致一个被删除了,一个没有删除。所以会产生问题。

我的操作如下(已经解决):

首先要检查下zookeeper有没有启动,成功启动的话先关闭。

第一步:进入config文件夹,修改zookeeper.propertie配置文件

修改server.properties文件

第二步: 重新启动zookeeper

cd ../
cd bin
./zookeeper-server-start.s -daemon ../config/zookeeper.properties

再输入jps,或者netstat -tulnp | g命令,看看有没有成功启动。  

第三步:进入data文件夹,再进入对应的kafka-logs文件进行删除meta.properties文件就可以。

第四步:

接下来启动kafka服务器,都是在bin目录下执行的。

./kafka-server-start.sh -daemon ../config/server.properties

此时输入 jps看看有没有启动成功

  • 27
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值