无法连接到WSL上的Kafka 1.0 Broker

时间:2018-01-19 17:03:46

标签: apache-kafka windows-subsystem-for-linux

我有一个由3名动物园管理员和3名kafka经纪人组成的本地码头实例,他们正在运行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)

我的泊坞窗实例是localzoo1:2181localzoo3:2183,以及localkafka1:9092localkafka3: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群集时,这个确切的设置工作正常,并且流处理器也在{{1和(2)我还创建了一个本地kafka代理,而不是在docker中,并且得到了同样的错误。

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

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

总结 - 我发现很难相信我发现了一个阻止所有流处理器连接到1.0版中的代理的错误,但是摆弄代码已经允许事情开始工作(或者至少完全建立起来)连接)。这是一个已知的问题?在discoverBrokerVersions0.11之间更改的设置中是否存在奇怪的内容?

更新:仅当通过WSL运行流处理器时才会出现此错误;通过powershell运行它可以正常工作。

1 个答案:

答案 0 :(得分:0)

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