我在集群的ubuntu节点上设置kafka 0.11.0.0实例。 直到几周前一切正常,今天我试图启动它并在启动后获得此错误:
[2017-09-11 16:21:13,894] INFO [Kafka Server 0], started (kafka.server.KafkaServer)
[2017-09-11 16:21:18,998] WARN Connection to node 0 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2017-09-11 16:21:21,991] WARN Connection to node 0 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
... and so on...
我的server.properties:
############################# Server Basics #############################
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0
# Switch to enable topic deletion or not, default value is false
delete.topic.enable=true
############################# Socket Server Settings ##########################$
# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
# FORMAT:
# listeners = listener_name://host_name:port
# EXAMPLE:
# listeners = PLAINTEXT://your.host.name:9092
#listeners=PLAINTEXT://9092
# Hostname and port the broker will advertise to producers and consumers. If no$
# it uses the value for "listeners" if configured. Otherwise, it will use the $
# returned from java.net.InetAddress.getCanonicalHostName().
advertised.listeners=PLAINTEXT://hidden_ip:55091
我编辑了advertised.listeners,因为有一个代理将请求重定向到代理。无论如何,直到几周前一切都运行良好...
我开始kafka的步骤:
1- service zookeeper start
2- ./kafka_2.11-0.11.0.0/bin/kafka-server-start.sh ~/kafka_2.11-0.11.0.0/config/server.properties
有什么建议吗? 谢谢
答案 0 :(得分:11)
我也有同样的问题......
所以我首先向Zookeeper询问一些数据
Autocomplete
我回来了这样的事情
echo dump | nc localhost 2181
我读到这意味着我有1个可用的代理 - 并且它的id为0。
所以,让我们找一下那个经纪人。
SessionTracker dump:
Session Sets (3):
0 expire at Sun Dec 03 18:15:48 GST 2017:
0 expire at Sun Dec 03 18:15:51 GST 2017:
1 expire at Sun Dec 03 18:15:54 GST 2017:
0x1601c9a25190000
ephemeral nodes dump:
Sessions with Ephemerals (1):
0x1601c9a25190000:
/controller
/brokers/ids/0
我看到了
bin/zookeeper-shell.sh localhost:2181 <<< "get /brokers/ids/0"
这让我很吃惊...... PLAINTEXT://192.168.1.220:9092 ,所以当我改变连接字符串以便阅读时
{"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.1.220:9092"],"jmx_port":-1,"host":"192.168.1.220","timestamp":"1512308520781","port":9092,"version":4}
cZxid = 0x69
ctime = Sun Dec 03 17:42:00 GST 2017
mZxid = 0x69
mtime = Sun Dec 03 17:42:00 GST 2017
pZxid = 0x69
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x1601c9a25190000
dataLength = 196
numChildren = 0
这一切现在都奏效了。
祝你好运!!答案 1 :(得分:8)
取消注释此行
listeners = PLAINTEXT://:9092
将此更改为
listeners = PLAINTEXT://127.0.0.1:9092
答案 2 :(得分:7)
当我们开始在日志中搜索错误的实际原因时,我们遇到了同样的情况。
当我们启动Kafka群集时,它默认使用
listeners=PLAINTEXT://:9092
连接并且无法找到主机。
我们将行改为
listeners=PLAINTEXT://<our ip address> :9092,
然后
listeners=PLAINTEXT://<our ip address> :9093,
在我们的server-1.properties(另一个代理id文件)中,我们在其他server.properties文件中复制并重新启动了我们的集群。
答案 3 :(得分:3)
我将kafka server.properties的监听器简称为listeners=PLAINTEXT://**10.127.96.151**:9092
但我请求消费者为./kafka-console-consumer.sh --bootstrap-server **localhost**:9092 --topic topic1 --from-beginning
,然后它会破坏WARN。
当我将消费者引导程序服务器修复为 10.127.96.151 :9092时,它运行良好,没有更多的WARN
答案 4 :(得分:1)
我是server.propertes:
listeners=PLAINTEXT://hidden_ip:9092
当我跑步时:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic lt1
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic lt1
我得到同样的错误就像你得到的那样。我试着跑:
bin/kafka-console-producer.sh --broker-list hidden_ip:9092 --topic lt1
它有效,我没有错误。
所以我认为你应该检查一下kafka服务器使用的端口。当端口没有建立或你连接错误的ip时出现这个错误。
PS:我在同一台机器上运行它。
答案 5 :(得分:0)
我在WINDOWS 10上也遇到了同样的问题,并仔细阅读了本文中的所有答案。对我造成这个问题以及如何解决的是 在新的Windows机器上,我执行了jre(jre-8u221)安装,然后按照Apache Kafka文档中提到的步骤启动Zookeeper,kafka服务器,通过生产者发送消息等。但是我遇到了与代理不相关的错误。 然后,我下载了jdk(来自Oracle的jdk-8u221)并安装了它。设置JAVA_HOME和Path变量,然后重新启动计算机。一劳永逸。
答案 6 :(得分:0)
error message: "Connection to node -1 could not be established. Broker may not be available"
解决方案:
我收到此错误,是因为我在集群与本地上运行了不同版本的kafka。确保版本相同。我在pom.xml
标签下的properties
中指定了版本
答案 7 :(得分:0)
如果您使用的是Spring Boot,请查看application.properties
文件中是否设置了以下属性(假设仅使用生产者应用程序):
spring.kafka.producer.bootstrap-servers=localhost:9092
否则,以下内容通常应该起作用:
kafka.bootstrap.servers=localhost:9200
我不必像其他人建议的那样在listeners
文件中更改server.properties
。
答案 8 :(得分:0)
使用spring-boot,kafka(图像:spotify / kafka)和docker-compose组合,您可能需要在项目中设置以下属性:
broker-addresses: <hostname>:9092
此外,docker-compose中的服务需要具有如下配置的环境属性,
KAFKA_BOOTSTRAP_SERVERS: <hostname>:9092
希望这可能对某人有所帮助。
答案 9 :(得分:0)
我确定现在可以解决此问题,但是我是在运行AWS ECS任务的Kafka客户端上尝试连接到在EC2实例上运行的Kafka集群的,这是安全组。在群集的入站规则列表中添加所有ECS任务的允许子网(ECS->群集->任务->详细信息->允许的子实体)的CIDRS(ec2->实例->安全->(选择您的安全组) ->编辑入站规则->(自定义TCP / 9092 / CIDR)->添加规则)解决了该问题。
答案 10 :(得分:0)
我遇到了同样的问题,一切正常,但有一天停止工作。我回溯了围绕 Kafka 初始设置的更改,并发现以下是解决此问题需要采取的步骤
确保您的 JDK 安装正确。我确实遇到了这个问题,因为我指向的 JDK 路径/JAVA_HOME 路径不正确,因此即使在代理启动时客户端也没有检测到它。
如果也无济于事,那就去
#listeners=PLAINTEXT://:9092 改成
listeners=PLAINTEXT://127.0.0.1:9092
或
listeners=PLAINTEXT://localhost:9092