2016-06-05 4 views
1

Я запускаю Kafka (0.10.0.0) в Docker на Mac (с докер-машиной). Я получил свой Dockerfile из Spotify, что означает, что Kafka и Zookeeper работают на одном и том же изображении.Почему я не могу подключиться к Kafka/Zookeeper? (В докере)

Мой экземпляр начинается чисто и тыкает вокруг него все нормально/ОК.

Docker отображает порты 2181 и 9092 с высокими портами 32822 и 32820 в этом случае. С моей стороны работает Kafka Docker. Я могу успешно использовать telnet 192.168.99.100 32822 (где 192.168.99.100 - это IP-адрес моей докерной машины). Оттуда я могу выпустить команду zookeeper и получить ожидаемый результат.

Все кажется настолько обнадеживающими, но ... Я тогда попробуйте этот код:

val numPartitions = 4 
val replicationFactor = 1 
val topicConfig = new java.util.Properties 

// zookeeper = "192.168.99.100:32822" 
val zkClient = ZkUtils(zookeeper, 10000, 10000, false) 
try { 
    AdminUtils.createTopic(zkClient, topic, numPartitions, replicationFactor, topicConfig) 
} catch { 
    case k: kafka.common.TopicExistsException => // do nothing...topic exists 
} 
zkClient.close() 

Это производит этот выход ошибки:

DEBUG ZkConnection - Creating new ZookKeeper instance to connect to 192.168.99.100:32822. 
INFO ZkEventThread - Starting ZkClient event thread. 
INFO ZooKeeper - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT 
INFO ZooKeeper - Client environment:host.name=172.25.42.82 
INFO ZooKeeper - Client environment:java.version=1.8.0_60 
INFO ZooKeeper - Client environment:java.vendor=Oracle Corporation 
INFO ZooKeeper - Client environment:java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre 
INFO ZooKeeper - Client environment:java.class.path=/usr/local/Cellar/sbt/0.13.11/libexec/sbt-launch.jar 
INFO ZooKeeper - Client environment:java.library.path=/Users/wmy965/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. 
INFO ZooKeeper - Client environment:java.io.tmpdir=/var/folders/ph/ccz4n1qs62n0bn8mqdg94gswt1jlwk/T/ 
INFO ZooKeeper - Client environment:java.compiler=<NA> 
INFO ZooKeeper - Client environment:os.name=Mac OS X 
INFO ZooKeeper - Client environment:os.arch=x86_64 
INFO ZooKeeper - Client environment:os.version=10.11.5 
INFO ZooKeeper - Client environment:user.name=wmy965 
INFO ZooKeeper - Client environment:user.home=/Users/wmy965 
INFO ZooKeeper - Client environment:user.dir=/Users/wmy965/git/LateKafka 
INFO ZooKeeper - Initiating client connection, connectString=192.168.99.100:32822 sessionTimeout=10000 [email protected] 
DEBUG ClientCnxn - zookeeper.disableAutoWatchReset is false 
DEBUG ZkClient - Awaiting connection to Zookeeper server 
INFO ZkClient - Waiting for keeper state SyncConnected 
INFO ClientCnxn - Opening socket connection to server 192.168.99.100/192.168.99.100:32822. Will not attempt to authenticate using SASL (unknown error) 
WARN ClientCnxn - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect 
java.net.ConnectException: Connection refused 
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) 
    at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361) 
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081) 
DEBUG ClientCnxnSocketNIO - Ignoring exception during shutdown input 
java.nio.channels.ClosedChannelException 
    at sun.nio.ch.SocketChannelImpl.shutdownInput(SocketChannelImpl.java:780) 
    at sun.nio.ch.SocketAdaptor.shutdownInput(SocketAdaptor.java:399) 
    at org.apache.zookeeper.ClientCnxnSocketNIO.cleanup(ClientCnxnSocketNIO.java:200) 
    at org.apache.zookeeper.ClientCnxn$SendThread.cleanup(ClientCnxn.java:1185) 
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1110) 
DEBUG ClientCnxnSocketNIO - Ignoring exception during shutdown output 
java.nio.channels.ClosedChannelException 
    at sun.nio.ch.SocketChannelImpl.shutdownOutput(SocketChannelImpl.java:797) 
    at sun.nio.ch.SocketAdaptor.shutdownOutput(SocketAdaptor.java:407) 
    at org.apache.zookeeper.ClientCnxnSocketNIO.cleanup(ClientCnxnSocketNIO.java:207) 
    at org.apache.zookeeper.ClientCnxn$SendThread.cleanup(ClientCnxn.java:1185) 
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1110) 
INFO ClientCnxn - Opening socket connection to server 192.168.99.100/192.168.99.100:32822. Will not attempt to authenticate using SASL (unknown error) 
INFO ClientCnxn - Socket connection established to 192.168.99.100/192.168.99.100:32822, initiating session 
DEBUG ClientCnxn - Session establishment request sent on 192.168.99.100/192.168.99.100:32822 
INFO ClientCnxn - Session establishment complete on server 192.168.99.100/192.168.99.100:32822, sessionid = 0x155225c51720000, negotiated timeout = 10000 
DEBUG ZkClient - Received event: WatchedEvent state:SyncConnected type:None path:null 
INFO ZkClient - zookeeper state changed (SyncConnected) 
DEBUG ZkClient - Leaving process event 
DEBUG ZkClient - State is SyncConnected 
DEBUG ClientCnxn - Reading reply sessionid:0x155225c51720000, packet:: clientPath:null serverPath:null finished:false header:: 1,8 replyHeader:: 1,1,-101 request:: '/brokers/ids,F response:: v{} 

Похоже, я не могу подключиться (предположительно к zookeeper). Почему нет?

+0

Хорошо, где-то читал о advertised.listeners в файле server.properties Кафки. По-видимому, это то, что Kafka рекламирует издателям/потребителям, когда их спрашивают, поэтому я думаю, что это должно быть Docker-ized, то есть установлено 192.168.99.100: 32822 (или какой-либо отображаемый порт для 9092). У меня есть этот набор, но до сих пор нет кубиков. Я попытаюсь настроить свойство listeners в том же файле конфигурации и посмотреть, что произойдет. – Greg

+0

Изменено свойство слушателей, но с этими 2 изменениями он все равно не будет подключаться. :-(Я собираюсь оставить рекламируемые.listeners настроенными на внешние значения Docker, так как я думаю, что это правильно. Играя с другими настройками для свойств слушателей tho - это может быть что-то внутреннее для Kafka и Zookeeper, которые находятся в одном и том же Докере. – Greg

+0

Что возвращает ваш docker? ? – t6nand

ответ

2

В новых потоках кафки, ip производителя, должно быть, знал кафка (докер). Кафка отправляет свои uuid (вы можете показать это в/etc/hosts внутри док-станции kafka) и откликнуться на это.

Резюме:

Карта UUID Кафка докер в докер-машину в/и т.д./хозяин Mac OS.

Чтобы помочь вам, как изменить и т.д./хост-файл в макинтош:

https://www.tekrevue.com/tip/edit-hosts-file-mac-os-x/

+0

Добавление внутреннего имени хоста kafka docker в файл моего хоста и его сопоставление с 127.0.0.1 исправил его для меня. – Wil

Смежные вопросы