ERROR Error while creating ephemeral at /brokers/ids/0, node already exists and owner '72067757872119809' does not match current session '72067836689711106' (kafka.zk.KafkaZkClient$CheckedEphemeral) 2021-05-05 02:19:44.796 [INF] [Kafka] [2021-05-05 02:19:44,786] ERROR [KafkaServer id=0] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
该错误表示代理已在以 id=0 运行,或者 Zookeeper 已损坏,因为代理之前没有完全关闭...
在后一种情况下,您可以尝试使用
zookeeper-shell
到 rmr /brokers/ids/0
,但是,这可能会比重新启动 Zookeeper 和代理产生更多意想不到的后果
重新启动动物园管理员,经纪人为我解决了问题。 如果您使用 docker-compose,只需使用以下命令即可重新启动
docker-compose restart
此处唯一有效的解决方案是重新启动代理,然后重新启动服务器。
在非常具体的情况下遇到了同样的问题:我的 Kafka 代理是通过从 AWS EC2 恢复 AMI 映像创建的 - 这意味着 Kafka 环境已经预先在该映像内容中设置。
但是,看起来镜像是在 Kafka 环境仍在运行的情况下创建的(即在触发 AMI 创建之前服务没有停止)。这导致 Zookeeper 服务具有过时的会话 ID:
Error while creating ephemeral at /brokers/ids/1001, node already exists and owner '12342534412345' does not match current session '987797987987' ....
重新启动 ZooKeeper 和受影响的代理并不能解决问题。我找到的唯一解决方案是使用 zookeeper-shell 工具(首先感谢@OneCricketeer 的建议)。这就是我所做的(用您实际的 ZooKeeper 代理 IP 地址替换那个愚蠢的 IP 地址):
[root@ip-251-252-253-254 ec2-user]# zookeeper-shell 251.252.253.254:2181
Welcome to ZooKeeper!
JLine support is disabled
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
ls /brokers/ids <--------------- first command: list contents under brokers/ids to get the list of existing Kafka broker sessions
[1001] <--------------- this is the stale session, need to get rid of it
delete /brokers/ids/1001 <--------------- second command: delete the session for broker ID 1001
<--------------- zookeeper-shell does not give any output when a command is successful
quit <--------------- third command: exit zookeeper-shell tool
完成此操作后,我在失败的代理中重新启动了 Kafka 服务,它成功启动了。
希望有帮助!