2015-01-26 4 views
13

Ich versuche, einen Kafka Cluster zu erstellen, um Nachrichten an eine Fernbedienung zu senden. Ich habe alles wie beschrieben konfiguriert here. Ich führe dies auf einer Linux red hat Maschine, und es funktioniert gut mit der Shell. wie in den quick start Tutorial auf meinem Windows-Rechner beschrieben, nachdem den Java-Code zu schreiben, habe ich die folgende Fehlermeldung erhalten:Kafka - Ich kann keine Nachricht an einen Remote-Server mit Java senden

... 
DEBUG kafka.client.ClientUtils$ - Successfully fetched metadata for 1 topic(s)  Set(example) 
... 
ERROR kafka.producer.SyncProducer - Producer connection to cldExampleKafka.domain:80 unsuccessful 
java.nio.channels.UnresolvedAddressException 
    ... 
    at kafka.producer.async.ProducerSendThread.run(ProducerSendThread.scala:44) 
... 
WARN kafka.producer.async.DefaultEventHandler - Failed to send producer request with correlation id 2 to broker 0 with data for patitions [ati,0] 
java.nio.channels.UnresolvedAddressException 
... 
kafka.common.FailedToSendMessageException: Failed to send message after 3 tries. 

Ich habe auch das Glas in einem anderen Linux-Rechner laufen zu lassen versucht, und erhielt noch den gleichen Fehler .

Ändern der Adresse zu localhost und Ausführen des Java-Code als ein Glas in der Maschine, wo das Kafka installiert ist funktioniert.

Ich glaube es etwas mit der Konfiguration, aber ich konnte es nicht finden.

Antwort

25

In Ihrem kafka server.properties gibt es eine kommentierte Konfiguration

#advertised.host.name=<Some IP> 

Kommentar- diese und die IP der Maschine Linux hinzufügen, in dem kafka läuft.

advertised.host.name=<Kafka Running Machine IP> 

Und verbinden von Clients mit <Kafka Running Machine IP> Dies sollte Ihr Problem beheben.

EDIT

Optional können Sie die

#advertised.port=9092 

auch Kommentar-, wenn Sie ein auf einem anderen Port als die Standard hören.

+1

Sie verbinden danken es funktioniert! – itaied

+0

Muss auch die zoekeeper-Konfiguration geändert werden, weil ich immer noch das Problem habe – xXxpRoGrAmmErxXx

+0

Ich musste sowohl host.name als auch advertised.host.name erwähnen, damit es funktioniert. – Rahul

5

mit

von server.properties Kommentar-

listeners=PLAINTEXT://:9092 

Und

advertised.listeners=PLAINTEXT://<HOST IP>:9092 

<HOST IP> mit aktuellen IP ersetzen Arbeiten.

+1

können Sie bitte Ihre tatsächliche Konfiguration teilen –

+0

Versuchte Verbindung zu Kafka Remote-Cluster von VM. VMs hatte 1 intern (9.0.0.1 und externe IP (192.1.1.1) ich konnte ssh nur auf das interne & nicht das externe, Änderungen an meiner conifg/server.properties // Geben Sie die IP in der Maschine, wenn Sie ifconfig oder hostname -I 'code' listeners = PLAINTEXT: //192.1.1.1: 9092 // geben Sie dem ip consumer und dem Producer eine Verbindung 'code' advertised.listeners = PLAINTEXT: //9.0.0.1: 9092 – CodeUrLife

0

Versuchte Verbindung zu Kafka Remote-Cluster von meinem lokalen Rechner.

VMs hatte 1 intern (9.0.0.1 und externe IP (192.1.1.1) i nur auf die interne & ssh konnte nicht die äußere, Änderungen an meinem CONIFG/server.properties

// geben die IP-in die Maschine, wenn u do ifconfig oder den Hostnamen -I

listeners=PLAINTEXT://192.1.1.1:9092 

// die IP-Verbraucher geben und Produzent wird

advertised.listeners=PLAINTEXT://9.0.0.1:9092