2015-01-26 8 views
13

Próbuję utworzyć klaster Kafka, aby wysyłać wiadomości do pilota zdalnego sterowania. Skonfigurowałem wszystko zgodnie z opisem here. Uruchomiłem to na komputerze Linux red hat i działa dobrze przy użyciu powłoki. Po napisaniu kodu Javy w sposób opisany w tutorialu quick start na moim komputerze okien, otrzymałem następujący błąd:Kafka - Nie można wysłać wiadomości do zdalnego serwera za pomocą Java

... 
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. 

Próbowałem również uruchomić słoika w innym komputerze z systemem Linux, a jeszcze otrzymał ten sam błąd .

Zmiana adresu na localhost i uruchomienie kodu java jako słoika w komputerze, na którym działa kafka.

Wierzę, że coś z konfiguracją, ale nie mogłem go znaleźć.

Odpowiedz

25

W swojej Kafki server.properties jest skomentował konfiguracja

#advertised.host.name=<Some IP> 

Odkomentuj to i dodać IP komputera Linux, w którym Kafka jest uruchomiony.

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

I połączyć z klientami <Kafka Running Machine IP> To powinno rozwiązać problem.

EDIT

Opcjonalnie można odkomentuj

#advertised.port=9092 

Również jeśli słuchasz na innym porcie niż domyślny.

+1

Dziękuję to działa! – itaied

+0

Czy konieczna jest również zmiana konfiguracji zookeepera? Ponieważ nadal mam problem – xXxpRoGrAmmErxXx

+0

Musiałem wymienić zarówno host.name, jak i advertised.host.name, aby działało. – Rahul

5

Pracował z

z server.properties Odkomentuj

listeners=PLAINTEXT://:9092 

I

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

Wymień <HOST IP> z rzeczywistego adresu IP.

+1

możesz podzielić się bieżącą konfiguracją –

+0

Próbowano połączyć się z klastrem zdalnym kafka z VM. VM miał 1 wewnętrzny (9.0.0.1 i zewnętrzny ip (192.1.1.1) mógłbym ssh tylko do wewnętrznych, a nie zewnętrznych, zmian do mojego conifg/server.properties // dać ip w komputerze, jeśli zrobisz ifconfig lub nazwa hosta -I nasłuchujący "kodu" = PLAINTEXT: //192.1.1.1: 9092 // Podaj ip klienta, a producent połączy się z "code" advertised.listeners = PLAINTEXT: //9.0.0.1: 9092 – CodeUrLife

0

Próbowałem połączyć się z kafla zdalnego klastra z mojej lokalnej maszyny.

VM miał 1 wewnętrzny (9.0.0.1 i zewnętrznego IP (192.1.1.1) mogę ssh tylko do wewnętrznych nie & zewnętrznych, zmiany w moim conifg/server.properties

// dają IP maszyna gdy u nie ifconfig lub nazwa hosta -I

listeners=PLAINTEXT://192.1.1.1:9092 

// dać konsumentowi iP i producent będzie łączyć

advertised.listeners=PLAINTEXT://9.0.0.1:9092 
Powiązane problemy