2015-08-31 18 views
9

के बाहर से काफ्का डॉकर कंटेनर के साथ इंटरैक्ट करें मैंने एक कफका डॉकर कंटेनर बनाया है और इसे डॉकर-कंपोज़ का उपयोग करके ऑर्केस्ट्रेट किया है।डॉकर होस्ट

कॉलिंग docker ps मैं निम्नलिखित putput मिलती है:

CONTAINER ID  IMAGE       COMMAND    CREATED    STATUS    PORTS           NAMES 
    5bde6f76246e  hieutrtr/docker-kafka:0.0.1 "/start.sh"   About an hour ago Up About an hour 7203/tcp, 0.0.0.0:32884->9092/tcp    dockerkafka_kafka_3 
    be354f1b8cc0  hieutrtr/docker-ubuntu:devel "/usr/bin/supervisor About an hour ago Up About an hour 22/tcp          producer1 
    50d3203af90e  hieutrtr/docker-kafka:0.0.1 "/start.sh"   About an hour ago Up About an hour 7203/tcp, 0.0.0.0:32883->9092/tcp    dockerkafka_kafka_2 
    61b285f39615  hieutrtr/docker-kafka:0.0.1 "/start.sh"   2 hours ago   Up 2 hours   7203/tcp, 0.0.0.0:32882->9092/tcp    dockerkafka_kafka_1 
    20c9c5ccec05  jplock/zookeeper:3.4.6   "/opt/zookeeper/bin/ 2 hours ago   Up 2 hours   2888/tcp, 3888/tcp, 0.0.0.0:32881->2181/tcp dockerkafka_zookeeper_1 

मैं एक निर्माता और डोकर कंटेनर के अंदर से एक उपभोक्ता को चला सकते हैं, लेकिन यह डोकर नेटवर्क के बाहर से काम नहीं कर रहा।

उदाहरण के लिए:

मैं अपने स्थानीय होस्ट पर एक काफ्का निर्माता चलाने के लिए और निम्न त्रुटि दिखाई देती है:

$ kafka_2.9.1-0.8.2.1: bin/kafka-console-producer.sh --topic test --broker-list $DOCKER_HOST:32884 
[2015-08-31 06:55:15,450] WARN Property topic is not valid (kafka.utils.VerifiableProperties) 
to 
[2015-08-31 06:55:20,214] WARN Failed to send producer request with correlation id 2 to broker 1 with data for partitions [test,0] (kafka.producer.async.DefaultEventHandler) 
java.nio.channels.ClosedChannelException 
    at kafka.network.BlockingChannel.send(BlockingChannel.scala:100) 
    at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:73) 
    at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:72) 
    at kafka.producer.SyncProducer$$anonfun$send$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(SyncProducer.scala:103) 
    at kafka.producer.SyncProducer$$anonfun$send$1$$anonfun$apply$mcV$sp$1.apply(SyncProducer.scala:103) 
    at kafka.producer.SyncProducer$$anonfun$send$1$$anonfun$apply$mcV$sp$1.apply(SyncProducer.scala:103) 

This is my kafka docker example on github कि उल्लेख समस्या भी शामिल है।

तो, क्या कोई भी एक ही समस्या का सामना कर रहा है और किसी भी तरह से मेरी मदद कर सकता है?

अतिरिक्त जानकारी:

(बस से टांके/काफ्का कांटा और डोकर-लिखें सुविधा के लिए कुछ संशोधित):

उत्तर

3

काफ्का सर्वर गुण आप advertised.host.name और advertised.port आईपी/पोर्ट के लिए निर्धारित करने की आवश्यकता में आपके चलने वाले कंटेनर के और फिर इसे काम करना चाहिए।

+2

मुझे लगता है कि यह समस्या नहीं है। क्योंकि मैं अभी भी अपने लोकहोस्ट से विषय बना रहा हूं। क्या java.rmi के बारे में कुछ है ....? –

+2

यह मेरे लिए बहुत ही समान लक्षणों के लिए काम करता है। मैं लोकलहोस्ट या अन्य कंटेनर से विषय बना सकता हूं लेकिन जब तक मैं 'advertised.host.name' – Lundahl

+0

सेट नहीं करता तब तक किसी भी संदेश को प्रकाशित नहीं करता, हमें विज्ञापन के रूप में क्या रखा जाना चाहिए। नाम? एक ही समस्या का सामना करना –

2

आपको मेजबान मशीन का नाम रखना होगा जहां डॉकर इंस्टेंस को तैनात किया गया था। इसके अलावा आपको डॉकर होस्ट मशीन (सार्वजनिक) से डॉकर कंटेनर इंस्टेंस (निजी) तक बंदरगाहों को मैप करने की आवश्यकता है।

+0

यह भी सुनिश्चित करें कि आप server.properties – sivakadi

+0

में संबंधित किसी भी संबंधित अनुपात को सेट न करें क्षमा करें बहुत जल्दी दर्ज करें। – sivakadi

+0

'ब्रोकर की आईडी। यह प्रत्येक ब्रोकर के लिए एक अद्वितीय पूर्णांक पर सेट होना चाहिए। broker.id = 0 # श्रोताओं = प्लेन टेक्स्ट: // स्थानीय होस्ट: 9092 # advertised.listeners = प्लेन टेक्स्ट: // स्थानीय होस्ट: 9092 # advertised.host.name = स्थानीय होस्ट # advertised.port = 9092' – sivakadi

0

टीएल; डीआर मेजबान पर बंदरगाह 9 0 9 2 का पर्दाफाश करें और कंटेनर के बाहर काफ्का दलालों तक पहुंचने के लिए इसे 90 9 2 कंटेनर पोर्ट पर मैप करें। विवरण के लिए docker-compose दस्तावेज़ीकरण देखें।

मुझे लगता है कि समस्या यह है कि आप कंटेनर के बाहर पोर्ट 90 9 2 का पर्दाफाश नहीं करते हैं। आपके डॉकर पीएस सूची के अनुसार आपके 90 9 2 कंटेनर पोर्ट को होस्ट की पोर्ट रेंज 32882-32884 पर गतिशील रूप से मैप किया गया है। जब आप ब्रोकर से कनेक्ट होते हैं तो इस तरह कॉन्फ़िगर किया जाता है कि आप मेटाडेटा प्राप्त करते हैं जिसमें विज्ञापन के लिए पोर्ट 90 9 2 शामिल है। इस मेटाडेटा निर्माता पोर्ट 9 0 9 2 के माध्यम से अन्य अनुरोध करने की कोशिश करता है और विफल रहता है।

संबंधित मुद्दे