我在CDH 5.9上運行卡夫卡0.10.0,羣集被kerborized。 我想要做的是將消息從遠程機器寫入我的卡夫卡經紀人。 羣集(其中安裝了Kafka)具有內部以及外部IP地址。 集羣中機器的主機名解析爲私有IP,遠程機器將相同的主機名解析爲公有IP地址。 我從遠程機器打開必要的端口9092(我使用SASL_PLAINTEXT協議)到Kafka Broker,驗證了使用telnet。Kafka遠程製作人 - advertised.listeners
第一步 - 除了對卡夫卡經紀人的標準屬性,我配置如下:
listeners=SASL_PLAINTEXT://0.0.0.0:9092
advertised.listeners=SASL_PLAINTEXT://<hostname>:9092
我能夠與
kafka-console-consumer --new consumer --topic <topicname> --from-beginning --bootstrap-server <hostname>:9092 --consumer.config consumer.properties
我啓動控制檯消費者能夠使用集羣內其他機器的自定義生產者。 生產性能的相關摘錄:
security.protocol=SASL_PLAINTEXT
bootstrap.servers=<hostname>:9092
我無法使用個性化的生產從遠程計算機:
Exception org.apache.kafka.common.errors.TimeoutException: Batch containing 1 record(s) expired due to timeout while requesting metadata from brokers for <topicname>-<partition>
使用相同的生產性能。我可以通過計算機遠程登錄Kafka Broker,/ etc/hosts包括主機名和公共IP。
第二步 - 我修改server.properties:
listeners=SASL_PLAINTEXT://0.0.0.0:9092
advertised.listeners=SASL_PLAINTEXT://<kafkaBrokerInternalIP>:9092
- 消費者&製片人在同一個集羣內還在運行(引導現在 服務器內部IP與端口9092)
- 如預期的遠程生產者失敗(但很明顯,鑑於它不知道內部IP地址 )
第三步 - 它變得毛茸茸:(
listeners=SASL_PLAINTEXT://0.0.0.0:9092
advertised.listeners=SASL_PLAINTEXT://<kafkaBrokerPublicIP>:9092
開始我的消費與
kafka-console-consumer --new-consumer --topic <topicname> --from-beginning --bootstrap-server <hostname>:9092 --consumer.config consumer.properties
給我一個警告,但我不認爲這是正確的...
WARN clients.NetworkClient: Error while fetching metadata with correlation id 1 : {<topicname>=LEADER_NOT_AVAILABLE}
開始我的消費與
kafka-console-consumer --new-consumer --topic <topicname> --from-beginning --bootstrap-server <KafkaBrokerPublicIP>:9092 --consumer.config consumer.properties
的日誌信息後,只是掛:
INFO utils.AppInfoParser: Kafka version : 0.10.0-kafka-2.1.0
INFO utils.AppInfoParser: Kafka commitId : unknown
喜歡它似乎無法找到一個協調器的正常流動,這將是一個日誌:
INFO internals.AbstractCoordinator: Discovered coordinator <hostname>:9092 (id: <someNumber> rack: null) for group console-consumer-<someNumber>.
開始生產者與bootstrap.servers羣集節點上=:9092 我觀察一樣與生產者:
WARN NetworkClient:600 - Error while fetching metadata with correlation id 0 : {<topicname>=LEADER_NOT_AVAILABLE}
開始生產者與bootstrap.servers羣集節點上=:9092我得到
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
開始我的遠程機器上的生產商,無論是bootstrap.servers =:9092或bootstrap.servers =:9092我得到
NetworkClient:600 - Error while fetching metadata with correlation id 0 : {<topicname>=LEADER_NOT_AVAILABLE}
我一直在ST在過去的三天裏堅持這樣做,但我沒有想法:/我的理解是,advertised.hostnames服務於這個目的,但無論我做錯了什麼,或者機器設置有問題。
任何提示都非常感謝!