Kafka-server-stop无法在Windows中进行受控关闭

问题描述 投票:1回答:1

嗨,

我们正在Windows上运行Kafka经纪人,并试图实现经纪人的优雅关闭。如建议的那样,我们运行了kafka-server-stop.bat。它确实杀死了Kafka经纪人,但它似乎突然终止而不是受控关闭。我得出结论是关闭不正常的原因是因为没有关闭日志。

有趣的是,如果我只是在Kafka代理控制台上按ctr + C,而不是运行kafka-server-stop,它确实会使用这样的日志正常关闭 -

[2017-12-04 14:53:30,176] INFO [Kafka Server 1], shutting down (kafka.server.KafkaServer)
[2017-12-04 14:53:30,176] INFO [Kafka Server 1], shutting down (kafka.server.KafkaServer)
[2017-12-04 14:53:30,176] INFO [Kafka Server 1], Starting controlled shutdown (kafka.server.KafkaServer)
[2017-12-04 14:53:30,176] INFO [Kafka Server 1], Starting controlled shutdown (kafka.server.KafkaServer)
[2017-12-04 14:53:30,207] INFO [Kafka Server 1], Controlled shutdown succeeded (kafka.server.KafkaServer)
[2017-12-04 14:53:30,207] INFO [Kafka Server 1], Controlled shutdown succeeded (kafka.server.KafkaServer)

我设置了这些配置 -

controlled.shutdown.enable=true
controlled.shutdown.retry.backoff.ms=15000
controlled.shutdown.max.retries=5

有没有其他人经历过这种行为?受控关闭对我们至关重要,因为我们在此设置动态集群,同一物理机可能最终会有不同的代理ID。如果没有正确关闭,我们会看到很多问题,控制器从其他集群发送请求到机器不再在其集群中等。

谢谢你的帮助!

java windows apache-kafka
1个回答
1
投票

我设法使用NSSM service tool优雅地关闭经纪人。该工具将CONTROL-C发送到控制台,Kafka整齐地关闭。

这导致了另一个问题,Windows的重启。 Zookeeper在Kafka之前终止了方式,导致Kafka在寻找Zookeeper时最终被关机程序杀死。我最终创建了一个C#服务来处理来自Windows(details here)的SERVICE_CONTROL_PRESHUTDOWN通知。该服务然后调用批处理文件,该文件按照我希望的顺序执行每个服务的“网络停止”(同步)。

这样,Kafka服务就可以在ZooKeeper之前完全停止(使用NSSM CONTROL-C功能)。

© www.soinside.com 2019 - 2024. All rights reserved.