2015-09-10 48 views
0

我有Zookeeper和Kafka在OS X上使用Docker Toolbox和Docker Compose在Docker中運行。我的搬運工,compose.yml文件是:寫給從Docker運行在Docker上的Kafka失敗

zk: 
    image: patrickmay/zookeeper:3.4.6-jessie 
    ports: 
    - "2181:2181" 
    command: /usr/local/zookeeper/bin/zkServer.sh start-foreground 
kafka0: 
    image: patrickmay/kafka:0.8.2.1-jessie 
    ports: 
    - "9092:9092" 
    command: /usr/local/bin/start-kafka.sh 0 docker-machine 9092 
    links: 
    - zk 
kafka1: 
    image: patrickmay/kafka:0.8.2.1-jessie 
    ports: 
    - "9093:9092" 
    command: /usr/local/bin/start-kafka.sh 1 docker-machine 9093 
    links: 
    - zk 
kafka2: 
    image: patrickmay/kafka:0.8.2.1-jessie 
    ports: 
    - "9094:9092" 
    command: /usr/local/bin/start-kafka.sh 2 docker-machine 9094 
    links: 
    - zk 

我已經創建了一個名爲話題test_impressions:

~/packages/kafka_2.11-0.8.2.1/bin/kafka-topics.sh --zookeeper docker-machine --describe --topic test_impressions 
Topic:test_impressions PartitionCount:3 ReplicationFactor:2 Configs: 
    Topic: test_impressions Partition: 0 Leader: 0 Replicas: 2,0 Isr: 0 
    Topic: test_impressions Partition: 1 Leader: 1 Replicas: 0,1 Isr: 1 
    Topic: test_impressions Partition: 2 Leader: 1 Replicas: 1,2 Isr: 1 

我試圖寫它與這個簡單的Python腳本:

#!/usr//bin/env python 

from __future__ import print_function 
import sys 
from kafka import SimpleProducer, KafkaClient 

kafka = KafkaClient('docker-machine:9094') 
producer = SimpleProducer(kafka) 

producer.send_messages(b'test_impressions', b'some message') 

我收到此錯誤:

Traceback (most recent call last): 
    File "./kafka-producer.py", line 12, in <module> 
    producer.send_messages(b'test_impressions', b'some message') 
    File "/Users/patrick.may/projects/ad-server/frequency-cap/venv/lib/python2.7/site-packages/kafka/producer/simple.py", line 52, in send_messages 
    partition = self._next_partition(topic) 
    File "/Users/patrick.may/projects/ad-server/frequency-cap/venv/lib/python2.7/site-packages/kafka/producer/simple.py", line 36, in _next_partition 
    self.client.load_metadata_for_topics(topic) 
    File "/Users/patrick.may/projects/ad-server/frequency-cap/venv/lib/python2.7/site-packages/kafka/client.py", line 378, in load_metadata_for_topics 
    kafka.common.check_error(topic_metadata) 
    File "/Users/patrick.may/projects/ad-server/frequency-cap/venv/lib/python2.7/site-packages/kafka/common.py", line 233, in check_error 
    raise error_class(response) 
kafka.common.LeaderNotAvailableError:  TopicMetadata(topic='test_impressions', error=5, partitions=[]) 

我嘗試過所有三個碼頭機端口(9092,9093和9094)。我有什麼配置錯誤嗎?

謝謝。

回答

0

發現我的錯誤。在docker-compose.yml文件中使用docker-machine是一個錯誤,因爲docker-machine不在該/ etc/hosts文件中。將其更改爲數字IP地址可解決問題。

+0

請問你能更具體嗎? – nanounanue