Kafka 创建topic 超时异常: Timed out waiting for a node assignment

问题描述:

    搭建了一个kafka的集群环境,使用命令行的方式创建一个topic。使用的命令如下

#进如到kafka的bin目录下 
./kafka-topics.sh --create --zookeeper 192.168.3.150:2181,192.168.3.151:2181,192.168.3.152:2181 --topic topicTest --partitions 2 --replication-factor 2

然后就报org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment.异常了,错误信息如下图

问题原因:

因为是刚开始学习Kafka,从看着官网一步一步操作的,但是跟官网的环境不一样。

官网环境是:

    1:使用了集成的zookeeper,并且之启动了一个zk实例。

     2:三个kafka实例在同一台机器上。

     3:官网的kafka集群配置,注意配置监听的时候三个kafka实例都没有配置ip地址

# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured

ji

我自己的环境:

     1:使用自己的虚拟机的zookeeper环境,在三台虚拟机上,三个zk节点的集群环境。

      2:三个kafka实例在三台虚拟机上。(主要就是这里的问题)

      3:集群配置信息用了跟官网一样的配置,没有配置主机ip地址。就是因为这个地方导致的

 解决办法:

    知道问题在哪了,解决就容易了,把三台机器的配置文件中 listeners配置全部加上主机ip地址就行了

例如:第一台机器上的配置   listeners=PLAINTEXT://192.168.3.150:9092,其他两台机器也都一起改了然后重启kafka实例就行了。

         一开始出现问题直接网上搜了一下,看到的解决办法都解决不来我这个问题。。没办法就只能自己想办法解决了。一看到这个错误信息肯定就会想到是服务请求网络不通,那就看看配置文件了里面关于通信配置的地方。想起来就配置了一个相关参数就是listeners 这个配置的是kafka实例监听的地址。那所有的请求应该都是请求到这里的。然后就又打开server.properties看了一下配置listeners的地方。仔细一看注释才明白这里是需要配置主机名的,如果不配置是自己获取的,那这里是不是获取到我虚拟机的网卡地址了呢?或者其他原因没有获取到呢?就尝试着把主机名配置上。然后重启kafka实例试了一下。。。果然好使!在此几下希望能帮到有同样问题的小伙伴。。。

############################# 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
 listeners=PLAINTEXT://192.168.3.151:9092

下面是我没有配置主机ip地址的时候从server.log文件中看到的listeners配置信息。从日志来看并没有获取到ip地址。所以请求不到kafka集群也正常了。至于为什么没获取到主机ip,目前没有高清楚。希望知道原因的朋友可以留言分享一下。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值