2016-11-04 128 views
1

場景:我需要從我的Docker化Kafka容器中推送一條消息給我的隊友的物理機器。Kafka和Docker:將Kafka消息推送給另一個Docker消費者

一個隊友(我們稱他爲Alfred),他的kafka直接安裝在Windows上。

另一個(我們稱他爲Bob),也使用Dockerized Kafka容器。

結果迄今:

我們已經能夠從我的卡夫卡推卡夫卡生產的消息包含到鋁的計算機的非DOCKERIZED消費者實例的消費者。所以我們知道沒有進一步的配置;生產者側;是必須的。訪問Rob Reris的dockerized kafka證明更棘手。在使用命令docker network inspect bridge時,我們注意到dockerized容器是從公司網絡的一般IPv4地址封裝而來的。

enter image description here

我們確定並試圖測試一些潛在的問題。

1.接收方VM的端口轉發規則。 已嘗試調整端口轉發規則。沒有解決方案。 2.重新配置位於opt/kafka_2.11-0.9.0.0/config /目錄下的server.properties。 無解 3.重新配置server.properties位於卡夫卡容器在/ etc /卡夫卡/ 無解 4.添加一個額外的行,以我們正在利用卡夫卡業務構建的泊塢窗,compose.yml文件,並重建卡夫卡Bob的容器。 Line Added:KAFKA_LISTENERS: "PLAINTEXT://0.0.0.0-9092"

到目前爲止,我向Bob的內部網絡IP發送測試消息時還沒有收到。

我的測試消息:

/bin/kafka-console-producer.sh --broker-list {Bob's IPv4}:9092 --topic test 

難道是因爲我確實需要針對他的Dockerized IP ...不知何故?雖然我確定我們已經包含了VituralBox的站點到站點端口轉發。

援助讚賞。

回答

0

您可能面臨的問題是與Kafka向Zookeeper通知客戶端無法訪問私有IP相關的衆所周知的問題。

當你dockerize卡夫卡你有兩大選擇:

  • 啓動卡夫卡容器中使用的網絡模式=主機所以卡夫卡使用主機網絡堆棧。
  • 使用容器端口轉發並使Kafka通告主機IP和正在使用的端口,將Kafka配置「advertised.listeners」設置爲正確的值。爲了自動執行此操作,可能需要創建引導腳本,以在運行服務之前找出主機IP(和端口)並設置Kafka屬性文件。看看wurstmeister/kafka-docker