你好,
我们正在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结束。如果没有适当的关闭,我们会看到来自其他集群的控制器向不在其集群中的机器发送请求时出现很多问题,等等。
谢谢你的帮助!
1条答案
按热度按时间chhkpiq41#
我使用nssm服务工具成功地关闭了代理。该工具将control-c发送到控制台,kafka整齐地关闭。
这导致了另一个问题,windows的重启。Zookeeper在Kafka之前终止了一条路,导致Kafka四处寻找Zookeeper,最后被关闭程序杀死。最后,我创建了一个c服务来处理来自windows的服务控制预关闭通知(这里有详细信息)。然后,该服务调用一个批处理文件,该文件按照我希望的顺序对每个服务执行“净停止”(这是同步的)。
这样,kafka服务就会在zookeeper之前完全停止(使用nssm control-c特性)。