apache-kafka – 无法连接到WSL上的Kafka 1.0 Broker

我有一个3个动物园管理员和3个kafka经纪人的本地docker实例,运行1.0.0以确保更新我们的环境将按预期工作.我在kafka 1.0.0上创建了一个流处理器,它不会消耗或产生任何主题 – 它只是初始化自己.

当我尝试运行此处理器时,收到以下错误消息:

Exception in thread "main" org.apache.kafka.streams.errors.BrokerNotFoundException: 
    Could not find any available broker. 
    Check your StreamsConfig setting 'bootstrap.servers'. 
    This error might also occur, if you try to connect to 
    pre-0.10 brokers. Kafka Streams requires broker version 0.10.1.x or higher.
        at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.ensureOneNodeIsReady(StreamsKafkaClient.java:251)
        at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.getAnyReadyBrokerId(StreamsKafkaClient.java:280)
        at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.checkBrokerCompatibility(StreamsKafkaClient.java:348)
        at org.apache.kafka.streams.KafkaStreams.checkBrokerVersionCompatibility(KafkaStreams.java:712)
        at org.apache.kafka.streams.KafkaStreams.start(KafkaStreams.java:746)
        at com.overdrive.dataIntegration.ProcessorRunner$StandardProcessorRunner.StartApplication(ProcessorRunner.scala:29)
        at com.overdrive.streams.StreamProcessor$.main(StreamProcessor.scala:22)
        at com.overdrive.streams.StreamProcessor.main(StreamProcessor.scala)

我的docker实例是localzoo1:2181到localzoo3:2183,以及localkafka1:9092到localkafka3:9094.启用调试模式后,我可以看到正在正确加载流处理器的配置:

[2018-01-19 16:09:09,824] INFO [main] StreamsConfig values:
        application.id = test-stream-processor
        application.server =
        bootstrap.servers = [localkafka1:9092]
        //more values available upon request

我认为这不是一个docker问题有两个原因:(1)当docker在版本0.11上运行kafka集群时,这个确切的设置工作得很好,流处理器也在0.11上运行,并且(2)我还创建了一个当地的kafka经纪人,而不是Docker,并得到了同样的错误.

如果我创建一个控制台使用者,如果我使用正确的主机名(在我的情况下,localkafka1:9092),并且如果我使用不正确的主机名(如abcdefg:9092),则它不会输出任何内容,它会很快出错.我的所有主题都是空的,所以很难知道它到底有多远.我无法在主题中放置任何数据,因为似乎没有任何数据能够完全解析与群集的连接.

最后,我一直在挖掘kafka代码并添加print语句,然后替换处理器中的jar并运行它.从这看起来,看起来NetworkClient(在org.apache.kafka.clients中)的节点状态陷入了CHECKING_API_VERSIONS状态.有趣的是,看起来变量discoverBrokerVersions是最终的,当它不需要时,因此在轮询过程中它可以设置为false.进行此更改允许处理器连接到代理.

总而言之 – 我发现很难相信我发现了一个阻止所有流处理器连接到版本1.0中的代理的错误,但摆弄代码已经允许事情开始工作(或者,至少完全建立连接) .这是一个已知的问题?在0.11和1.0.0之间变化的设置中有什么奇怪的东西吗?

更新:仅在通过WSL运行流处理器时发生此错误;通过powershell运行它工作正常.

最佳答案
例外也可以说流应用程序和kafka代理之间没有网络连接.由于我们遇到了同样的问题,我们首先尝试从主机执行ping操作,其中流应用程序将托管到kafka代理所在的位置.

转载注明原文:apache-kafka – 无法连接到WSL上的Kafka 1.0 Broker - 代码日志