2015-09-27 26 views
1

我在谷歌計算引擎上運行我的zookeeper和kafka服務器。兩者都在默認端口上運行(在9180上的zookeeper和9092上的kafka)。兩者都在同一個實例上運行。我也打開了兩個港口。在我的server.properties我已經配置無法從本地機器連接到谷歌計算引擎上的kafka服務器

zookeeper.connect=<InternalIP>:2181 
host.name=localhost 

如果我試圖推動/消費信息形成同一臺服務器,我能夠這樣做 爲推動/消耗我用

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning 

然而,如果從我的本地機器嘗試在同一我的生產者和java.net.ConnectException得到kafka.common.FailedToSendMessageException:連接消費者 的情況下refuesed我試圖推動/通過消耗

bin/kafka-console-producer.sh --broker-list <ExternalIP>:9092 --topic topic1 
bin/kafka-console-consumer.sh --zookeeper <ExternalIP>:2181 --topic topic1 --from-beginning 

請注意,我可以從本地系統ping外部IP。

我已經配置在計算引擎下面提到的防火牆規則

Description 

kafka port enabled 
Network 

default 
Source filter 

Allow from any source (0.0.0.0/0) 
Allowed protocols and ports 

tcp:9092 

說明

zookeeper port enabled 
Network 

default 
Source filter 

Allow from any source (0.0.0.0/0) 
Allowed protocols and ports 

tcp:2181 
+1

這是因爲zookeeper與內部IP綁定,而不是與外部IP綁定。 –

+0

zookeeper和kafka都在同一個vm實例上運行,因此我使用內部IP進行綁定。 – BKSingh

回答

3

您必須通過SSH訪問雲計算VM實例,然後編輯kafka配置文件。

$ sudo vim /opt/bitnami/kafka/config/server.properties 

取消對線#advertised.listeners = PLAINTEXT://:9092,並用advertised.listeners替換= PLAINTEXT:// [instance_public_id_address]:9092

作爲最後的步驟重新啓動卡夫卡服務

sudo /opt/bitnami/ctlscript.sh restart 

重要的是要考慮其GCP計算VM是短暫的默認IP地址,因此,您必須將其更改爲靜態的卡夫卡實例的GCP配置面板,爲了避免每次更改配置文件很重要, IP地址發生變化。

相關問題