我有一个Kafka节点,比如IP地址1.2.3.4。如果我从2个不同的终端窗口SSH进入该节点,并从1个终端运行控制台消费者,从另一个终端运行控制台生产者,一切都很好:
# Run the consumer from terminal 1
kafka-console-consumer.sh --zookeeper zkA:2181 --topic simpletest
# Run the producer from terminal 2
kafka-console-producer.sh --broker-list localhost:9092 --topic simpletest
# Now I can enter messages into terminal 2 and see them show up in terminal 1 (the consumer)
如果我杀了控制台生产者,但让消费者继续运行,然后SSH进入另一台服务器(比如IP地址为5.6.7.8),然后运行生产者,然后尝试向Kafka发送消息(所以正在运行的消费者选择它,我得到以下警告:
# Run the producer from a terminal on 5.6.7.8
kafka-console-producer.sh --broker-list 1.2.3.4:9092 --topic simpletest
# Now enter a simple string message to try and send to consumer running on Kafka
hello
[2017-01-25 22:27:21,439] WARN Bootstrap broker 1.2.3.4:9092 disconnected (org.apache.kafka.clients.NetworkClient)
[2017-01-25 22:27:21,439] WARN Bootstrap broker 1.2.3.4:9092 disconnected (org.apache.kafka.clients.NetworkClient)
[2017-01-25 22:27:21,439] WARN Bootstrap broker 1.2.3.4:9092 disconnected (org.apache.kafka.clients.NetworkClient)
...
在我杀死制作人之前,这些警告一直在生成。最重要的是,消息永远不会到来,消费者(再次,在Kafka节点,终端1上运行)从不吐出"你好"消息到控制台/ STDOUT。
我已确认5.6.7.8的服务器具有1.2.3.4:9092的网络访问权限:
telnet 1.2.3.4 9092
Trying 1.2.3.4...
Connected to 1.2.3.4.
Escape character is '^]'.
总之,在以下情况下一切正常:
但是我得到了制片人的警告,并且消息永远不会在以下情况下到达:
我已确认远程生产者可以通过端口9092对Kafka节点进行网络访问。
关于出了什么问题和/或我如何解决问题的想法?