我无法将Logstash连接到在Azure中运行的Kafka实例。我的kafka主机有一个静态公共IP地址。如果我在同一子网内整理Logstash机器并连接两者,一切正常。但是,当我尝试通过公共IP地址向kafka实例发送数据时,我收到错误。例如,尝试将我的Logstash实例从home连接到Azure云环境。
以下是相关的配置文件以及我尝试过的内容:
Logstash输出:
kafka {
bootstrap_servers => "my public ip:9092"
codec => json
topic_id => "tagger"
}
在继续之前,netcat验证我确实可以到达kafka上的端口,阻止连接之间没有防火墙。
这是我的kafka server.properties 文件,其中包含我根据其他答案中的类似问题尝试过的设置。
#--------------------------------------------------------#
#Logstash says: Sending batch to Kafka failed. Will retry after a delay. {:batch_size=>1, :failures=>1, :sleep=>0.01}
#advertised.listeners=PLAINTEXT://10.10.100.4:9092
#listeners=PLAINTEXT://10.10.100.4:9092
#--------------------------------------------------------#
#Logstash says: Sending batch to Kafka failed. Will retry after a delay. {:batch_size=>1, :failures=>1, :sleep=>0.01}
#advertised.listeners=PLAINTEXT://10.10.100.4:9092
#listeners=PLAINTEXT://0.0.0.0:9092
#--------------------------------------------------------#
#Logstash says: Error while fetching metadata with correlation id 1 : {tagger=LEADER_NOT_AVAILABLE}
#advertised.listeners=PLAINTEXT://publicip:9092
#listeners=PLAINTEXT://0.0.0.0:9092
#--------------------------------------------------------#
#Logstash says: Error while fetching metadata with correlation id 1 : {tagger=LEADER_NOT_AVAILABLE}
#advertised.listeners=PLAINTEXT://publicip:9092,SEC://10.10.100.4:9093
#listeners=PLAINTEXT://0.0.0.0:9092,SEC://10.10.100.4:9093
#--------------------------------------------------------#
#Logstash says: Error while fetching metadata with correlation id 1 : {tagger=LEADER_NOT_AVAILABLE}
advertised.listeners=PLAINTEXT://publicip:9092
advertised.hostname=dnsname.com
最后,当我在Azure环境中的同一子网中运行Logstash和Kafka时,这个配置对我很有用:
listeners=PLAINTEXT://10.10.100.4:9092,SSL://10.10.100.4:9093
advertised.listeners=PLAINTEXT://10.10.100.4:9092,SSL://10.10.100.4:9093
这让我发疯,感谢您在我继续寻找任何帮助时
答案 0 :(得分:0)
我明白了。如果您遇到此问题并且您的错误与Logstash End上面的错误类似,请检查kafka logs目录,并且有一个名为" controller.log"的文件。
以下是我遇到的错误:
WARN [Controller-1-to-broker-1-send-thread]: Controller 1's connection to broker MYDOMAINNAME:9092 (id: 1 rack: null) was unsuccessful (kafka.controller.RequestSe$
java.net.SocketTimeoutException: Failed to connect within 30000 ms
我跑netcat -z -v DOMAINNAME 9092
但没有回应。我将域名添加到/etc/hosts
。看起来这样,zookeeper在localhost(127.0.0.1)上运行。我相当肯定zookeeper无法解决它,所以我把它映射回我的localhost。
127.0.0.1 MYDOMAIN.com
然后我删除了/tmp/kafka-logs
中的所有内容(请注意,丢失所有数据),然后重新启动服务器和zookeeper,它现在运行正常。
多么痛苦