我正在尝试完成对我们的 Kafka 的更改,但我在我的头上,并且很难调试这个问题。
我有多个服务器使用 Filebeat 将他们的 Ruby on Rails 日志汇集到 1 个 Kafka 代理,从那里日志转到我们的 Logstash 服务器,然后存储在 Elasticsearch 中。我没有设置原始系统,但我尝试将我们从 3 个 Kafka 服务器减少到 1 个,因为它们不需要。我在我们的设置中更新了这些文件中的 IP 地址配置,以删除 2 个旧的 Kafka 服务器并重新启动相应的服务。
# main (filebeat)
sudo vi /etc/filebeat/filebeat.yml
sudo service filebeat restart
# kafka
sudo vi /etc/hosts
sudo vi /etc/kafka/config/server.properties
sudo vi /etc/zookeeper/conf/zoo.cfg
sudo vi /etc/filebeat/filebeat.yml
sudo service kafka-server restart
sudo service zookeeper-server restart
sudo service filebeat restart
# elasticsearch
sudo service elasticsearch restart
# logstash
sudo vi /etc/logstash/conf.d/00-input-kafka.conf
sudo service logstash restart
sudo service kibana restart
当我跟踪 Filebeat 日志时,我看到了这个 -
2018-04-23T15:20:05Z WARN kafka message: client/metadata got error from broker while fetching metadata:%!(EXTRA *net.OpError=dial tcp 172.16.137.132:9092: getsockopt: connection refused)
2018-04-23T15:20:05Z WARN kafka message: client/metadata no available broker to send metadata request to
2018-04-23T15:20:05Z WARN client/brokers resurrecting 1 dead seed brokers
2018-04-23T15:20:05Z WARN kafka message: Closing Client
2018-04-23T15:20:05Z ERR Kafka connect fails with: kafka: client has run out of available brokers to talk to (Is your cluster reachable?)
最佳答案
to 1 Kafka broker... I tried taking us down from 3 Kafka servers to 1 as they weren't need. I updated the IP address configs in these files in our setup to remove the 2 old Kafka servers and restarted the appropriate services
我想你误会了,如果你有多个broker,Kafka只是一个高可用系统,所以另外2个需要尽管您可能只在 logstash 配置中提供了一个代理
您的错误表明单个代理拒绝连接,因此不会向其发送任何日志。
对于一个有用的 Kafka 集群,我至少会推荐 4 个代理,并且所有关键主题的复制因子为 3。这样,您可以容忍代理中断并分配 Kafka 代理的负载。
例如,将主题计数作为总日志服务器的一个因素,以及根据应用程序类型键入 Kafka 消息也是有益的。这样您就可以保证这些应用程序的日志顺序
关于elasticsearch - 卡夫卡 : client has run out of available brokers to talk to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49988530/