kafka经纪人在开始时无法使用

时间:2017-09-11 14:36:28

标签: ubuntu apache-kafka

我在集群的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

有什么建议吗? 谢谢

11 个答案:

答案 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 初始设置的更改,并发现以下是解决此问题需要采取的步骤

  1. 确保您的 JDK 安装正确。我确实遇到了这个问题,因为我指向的 JDK 路径/JAVA_HOME 路径不正确,因此即使在代理启动时客户端也没有检测到它。

  2. 如果也无济于事,那就去

#listeners=PLAINTEXT://:9092 改成

listeners=PLAINTEXT://127.0.0.1:9092

listeners=PLAINTEXT://localhost:9092