我在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服务于这个目的,但无论我做错了什么,或者机器设置有问题。
任何提示都非常感谢!