У меня Zookeeper и Kafka, работающие на физическом сервере, и я собрал докер-контейнер, на котором запущено Java-приложение для подключения к внешнему Kafka в качестве потребителя.
Порт прослушивания Kafka:
[helio@dev-01 kafka]$ netstat -an|grep 9092
tcp6 0 0 :::9092 :::* LISTEN
Я использую общую сеть Docker, но потребительское приложение не может подключиться к kafka.Я вижу, что могу получить IP-адрес kafka изнутри контейнера ... Я попытался просто увидеть, что я могу получить доступ к 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)
Итак, есть ли какие-либо ограничения на это?Некоторое ограничение по значению порта?
Если я запускаю контейнер Consumer Docker с параметром --network = host (host host), тогда приложение-потребитель может подключаться к Kafka и работает нормально.
Спасибо