2016-12-14 209 views
0

我有一個構建kafka生產者和主機名的問題。 這是我所做的。Apache Kafka - DNS解析在bootstrap.servers中的url失敗(構建kafka生產者失敗)

1)I的host.name,端口的配置設置爲server.properties

listeners=PLAINTEXT://192.168.0.102:9092 

port=9092 
host.name=server002.sep.com 

2)I添加主機ip和別名到/etc/hosts中

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6 

192.168.0.102 server002.sep.com 

3)使用iptables設置防火牆

-A INPUT -p tcp -m tcp --dport 3888 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 2888 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 2181 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 9092 -j ACCEPT 

4)我用下面的配置構建生產者。 我設置了「主機名:端口」而不是「IP:端口」。

props = new Properties(); 

**props.put("bootstrap.servers", "server002.sep.com:9092"); 
    props.put("acks", "0"); 
    props.put("retries", "0"); 

運行生產者時發生異常。 這裏是錯誤日誌。 我不明白爲什麼不能構建卡夫卡製片人。 請檢查它。 :)

Exception in thread "main" org.apache.kafka.common.KafkaException: **Failed to construct kafka producer** 
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:321) 
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:181) 
at com.lgcns.sep.kafka.producer.MessageSender.createProducer(MessageSender.java:47) 
at com.lgcns.sep.kafka.producer.MessageSender.getInstance(MessageSender.java:22) 
at com.lgcns.jartest.producerTest.main(producerTest.java:27) 

Caused by: org.apache.kafka.common.config.ConfigException: **DNS resolution failed for url in bootstrap.servers**: server002.sep.com:9092 
at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:49) 
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:269) 
... 4 more 

回答

0

我使用2 vms。 1vm有kafka客戶端java程序。第二個vm擁有所有的kafka設置。在vm2的server.properties文件中添加屬性「host.name = hostname_of_the_vm2_not_localhost」,將其添加爲位於vm1中的kafka客戶端程序中的bootstrap.server值。

而且您應該從vm1終端啓動vm2,只有其他方式您會得到該錯誤。我也有同樣的。