【发布时间】:2018-10-31 07:31:17
【问题描述】:
我在物理服务器中运行 Zookeeper 和 Kafka,并且我构建了一个运行 Java 应用程序的 docker 容器,以作为消费者连接到外部 Kafka。
Kafka 监听端口:
[helio@dev-01 kafka]$ netstat -an|grep 9092
tcp6 0 0 :::9092 :::* LISTEN
我正在使用 docker 共享网络,但消费者应用程序无法连接到 kafka。 我可以看到我可以从容器内部访问kafka IP...我尝试了一个简单的方法来查看我可以从网络访问kafka服务器:
在容器处:
root@ff419d41540a:~# ssh -p 9092 192.168.1.251
在 Kafka 日志中我可以看到测试连接:
[2018-05-21 12:33:39,093] WARN [SocketServer brokerId=0] Unexpected error from /172.17.0.2; closing connection (org.apache.kafka.common.network.Selector)
org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 1397966893 larger than 104857600)
at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:132)
at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:93)
at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:235)
at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:196)
at org.apache.kafka.common.network.Selector.attemptRead(Selector.java:557)
at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:495)
at org.apache.kafka.common.network.Selector.poll(Selector.java:424)
at kafka.network.Processor.poll(SocketServer.scala:628)
at kafka.network.Processor.run(SocketServer.scala:545)
at java.lang.Thread.run(Thread.java:748)
那么,这有什么限制吗?一些端口值限制?
如果我使用 --network=host(主机网络)启动消费者 Docker 容器,那么消费者应用程序能够连接到 Kafka 并且工作正常。
谢谢
【问题讨论】:
标签: docker apache-kafka kafka-consumer-api