2017-10-11 87 views
0

我已經安裝和設置Kafka卡夫卡 - 簡單的消費/製造商設置沒有不同的機器上工作,但使用下面的簡單<code>producer</code>/<code>consumer</code>教程本地工作

https://kafka.apache.org/quickstart

我有2機器,並且都使用Ubuntu

簡歷的問題:

如果我使用producerconsumer在同一臺機器上,一切工作正常。 如果我用machine 2producer,並在machine 1休息,如kafkazookeeper服務器和consumer,我從來沒有在machine 1收到任何消息。

Machine 1 has IP: 192.168.1.100 

Machine 2 has IP: 192.168.1.101 

工作只使用機1只,有4臺 應用

控制檯1示例 - 開始飼養員:

bin/zookeeper-server-start.sh config/zookeeper.properties 

控制檯2 - 啓動卡夫卡服務器

bin/kafka-server-start.sh config/server.properties 

控制檯3 創建一個話題叫做測試:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test 

測試的題目是:

bin/kafka-topics.sh --list --zookeeper localhost:2181 

入門消費者

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test 

控制檯4 - 發送一些消息:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 

它的工作原理!

不使用機器1和2工作實施例

機1 - 控制檯1 - 開始動物園管理員:

bin/zookeeper-server-start.sh config/zookeeper.properties 

機1 - 控制檯2 - 開始卡夫卡服務器

bin/kafka-server-start.sh config/server.properties 

機1 - 控制檯3 創建一個話題叫做測試:

bin/kafka-topics.sh --create --zookeeper 192.168.1.100:2181 --replication-factor 1 --partitions 1 --topic test 

測試的題目是:

bin/kafka-topics.sh --list --zookeeper 192.168.1.100:2181 

入門消費者

bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic test 

機2 - 控制檯1 - 發送一些消息卡夫卡的IP 192.168.1.100

bin/kafka-console-producer.sh --broker-list 192.168.1.100:9092 --topic test 

不工作...

缺少什麼我在這裏?

編輯:

我現在用的kafkacat測試連接...這裏是輸出。

[email protected]:~/kafka/kafka_2.11-0.11.0.1# kafkacat -b 192.168.1.100 -t test -L 
Metadata for test (from broker -1: 192.168.1.100:9092/bootstrap): 
1 brokers: 
    broker 0 at ubuntu:9092 
1 topics: 
    topic "test" with 1 partitions: 
    partition 0, leader 0, replicas: 0, isrs: 0 
%3|1507802180.807|FAIL|rdkafka#producer-1| [thrd:ubuntu:9092/0]: ubuntu:9092/0: Connect to ipv4#127.0.1.1:9092 failed: Connection refused 
%3|1507802180.807|ERROR|rdkafka#producer-1| [thrd:ubuntu:9092/0]: ubuntu:9092/0: Connect to ipv4#127.0.1.1:9092 failed: Connection refused 

爲什麼127.0.1.1:9092設置在上面? 不應該是192.168.1.100:9092

回答

3

the FAQ,一個常見的問題是主機名:

當代理啓動時,它在ZK註冊其IP /端口。您需要確保註冊的IP與生產者配置中的metadata.broker.list中列出的IP一致。默認情況下,註冊的IP由InetAddress.getLocalHost.getHostAddress()給出。通常,這應該返回主機的真實IP地址。但是,有時(例如,在EC2中),返回的IP是內部IP,不能從外部連接。解決方案是通過設置server.properties中的hostname屬性來明確設置要在ZK中註冊的主機ip。在綁定主機/端口與用於客戶端連接的主機/端口不同的另一罕見情況下,您可以設置用於客戶端連接的advertised.host.nameadvertised.port

所以,打開你的server.properties並更改hostname

host.name=<your hostname> 

如果這仍然不起作用,嘗試修改advertised.host.name

advertised.host.name=<your ip> 

如果這真的不起作用,看看advertised.listeners並確保它是0.0.0.0:port<your.ip>:port。例如:

advertised.listeners=PLAINTEXT://0.0.0.0:9092 
+0

謝謝德林。我通過設置服務器端的IP /端口(zookeeper,kafka服務器和客戶端所在的位置)來設置客戶端的所有內容。但它沒有奏效。但是,如果我運行從服務器轉儲所有主題的腳本,我會正確地看到這些主題。唯一不起作用的是從製作者向消費者(服務器)發送消息。有什麼想法嗎? – waas1919

+1

你使用什麼命令?你有沒有登錄? – Derlin

+0

這是我想要使用的命令:bin/kafka-console-producer.sh --broker-list 192.168.1.100:9092 - topic test – waas1919