3

我在ec2上的一臺機器上安裝了kafka zookeeper和3個broker,端口爲9092..9094,並試圖從另一臺機器上使用主題內容。端口2181(zk),9092,9093和9094(服務器)對消費者機器開放。我甚至可以做一個bin/kafka-topics.sh --describe --zookeeper 172.X.X.X:2181 --topic remotetopic這使我Kafka:如何連接kafka-console-consumer以獲取遠程代理主題內容?

主題:remotetopic PartitionCount:1個ReplicationFactor:3個CONFIGS: 主題:remotetopic分區:0組長:2副本:2,0,1 ISR:2,0,1 大段引用

但是當我這樣做bin/kafka-console-consumer.sh --zookeeper 172.X.X.X:2181 --from-beginning --topic remotetopic我得到

WARN,相關ID 0擷取話題元數據從經紀人[ID主題[設置(remotetopic)]:0,主持人:本地主機,端口:9092]失敗(kafka.client.ClientUtils $) java.nio.channels.ClosedChannelException

爲什麼消費者試圖從本地主機讀?有沒有任何選項或命令行或默認文件,這是從哪裏讀取的;我可以改變它?

任何幫助,將不勝感激!

回答

0

我已經在類似的(甚至更復雜的)安排中設置了Kafka和Zookeeper,並且kafka-console-consumer.sh的確如廣告中那樣工作。

這很可能是錯誤配置的Kafka實例(它在服務器配置中指定其zookeeper節點)。

檢查卡夫卡配置。 默認情況下,如果沒有指定zookeeper實例,它假設一個單獨的本地主機實例。否則,必須使用「server.1」... 2等公約來定義動物園管理員實例(最少三個被推薦/要求獲得適當的法定人數)。

6

有同樣的問題。通過按照kafka配置(config/server.properties)中的註釋指示設置屬性'advertised.host.name'並重新啓動kafka服務器來修復它。

+0

「advertised.host.name = localhost」 用我的IP地址替換'localhost'..謝謝 –

1

我已經創建了一個python腳本,它允許你通過ssh隧道訪問kafka/zookeeper,從本地機器上消費和生成消息。

爲Linux &兼容Mac

Usage: kafkatunnel.py [OPTIONS] COMMAND [ARGS]... 

    Access kafka/zookeeper via ssh tunnel to consume and produce messages from 
    your local machine 

Commands: 
    aws  retrieve kafka/zookeeper ip's from AWS... 
    manual provide the IP's of your zookeeper/kafka 

嘗試: https://github.com/simple-machines/kafka-tunnel

1

我同樣的問題,我使用卡夫卡0.11我在開始生產商和經紀人在我的Ubuntu VM和消費Windows 10。

我已經改變(和未註釋)

advertised.listeners=PLAINTEXT://your.host.name:9092 

advertised.listeners=PLAINTEXT://<myActual IP address>:9092 

例如:

advertised.listeners=PLAINTEXT://192.168.150.150:9092 

從文件配置/ server.properties在服務器/代理端(即在我的情況下,它是Ubuntu虛擬機)