2016-06-05 2 views
1

Mac (Docker-machine)의 Docker에서 Kafka (0.10.0.0)를 실행 중입니다. Spotify의 Dockerfile을 파생 시켰습니다. Kafka와 Zookeeper는 같은 이미지에서 실행됩니다.카프카/동물원에 연결할 수없는 이유는 무엇입니까? (Docker에서)

내 인스턴스가 깔끔하게 시작되어 그 내부를 파고 들었습니다. 이 나타납니다. 모든 것이 정상/정상입니다.

Docker는이 경우 포트 2181 및 9092를 높은 포트 32822 및 32820에 매핑합니다. 내 운영중인 Kafka Docker 외부에서 telnet 192.168.99.100 32822 (192.168.99.100은 내 도커 - 기계의 IP 임)를 성공적으로 수행 할 수 있습니다. 거기에서 나는 사육사 명령을 내리고 예상되는 결과를 얻을 수 있습니다.

모든 것이 너무 격려 것 같다,하지만 ... 나는 다음이 코드를 시도 :이이 오류 출력을 생성

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{} 

같습니다 사육사에게). 왜 안돼?

+0

좋아. 분명히 이것은 카프카 (Kafka)가 물었을 때 게시자/소비자에게 광고하는 것입니다. 따라서 이것이 Dockerized (192.168.99.100 : 32822 (또는 9092에 대해 매핑 된 포트가 무엇이든간에)로 설정되어야 함)라고 생각합니다. 나는 그 세트를 가지고 있지만 여전히 주사위를 가지고 있지 않습니다. 동일한 설정 파일에서 리스너 속성을 설정하고 어떤 일이 일어나는지 살펴볼 것입니다. – Greg

+0

리스너 등록 정보도 변경되었지만이 두 변경 사항으로는 계속 연결되지 않습니다. :-(나는 advertised.listeners를 outside-the-Docker 값으로 설정해 두겠다. 나는 이것이 옳다고 생각한다. 리스너 속성에 대한 다른 설정으로 재생하려고한다. 그것은 카프카 내부에있을 수있다. 동일한 도커에있는 사육사 – Greg

+0

도커가 를 검사 할 때 – t6nand

답변

2

새로운 카프카 스트림에서 제작자의 ip는 kafka (docker)가 알고 있어야합니다. Kafka는 자신의 uuid를 보내고 (카프카 도커 안의/etc/hosts에 이것을 보여줄 수 있음) 응답을 확인합니다.

요약 :

지도 UUID의 카프카 고정 표시기 고정 표시기 기계를하는의/etc/맥 OS의 호스트에서.

맥에서 등/호스트 파일을 변경하는 방법, 당신을 도울 : 카프카의 server.properties 파일에 advertised.listeners에 대해 선가

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

+0

kafka 도커 내부 호스트 이름을 호스트 파일에 추가하고이를 127.0.0.1에 매핑하면 나에게 맞게 수정되었습니다. – Wil

관련 문제