irpas技术客

kafka本地启动失败解决方案 Connection to node 1 could not be established_lyyyl_110_kafka启动失

网络投稿 5209

之前一直可以本地启动的kafka服务突然之间就启动失败了, 一直报错。查看日志controller.log发现报错信息:

java.io.IOException: Connection to 172.16.4.223:9092 (id: 1 rack: null) failed. at org.apache.kafka.clients.NetworkClientUtils.awaitReady(NetworkClientUtils.java:71) at kafka.controller.RequestSendThread.brokerReady(ControllerChannelManager.scala:289) at kafka.controller.RequestSendThread.doWork(ControllerChannelManager.scala:243) at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:96)

尝试了很多博客说的方式,包括清空日志, 删除zookeeper信息等等,重试后还是一直报错,并不能实际解决问题;因此只能自己探索

1、 首先考虑为什么连接不到这个地址,是不是端口被占用了?

lsof -i:9092 发现并没有端口占用

2、 接着考虑这个地址连接是不是有问题?查看本机的ip地址信息:

ifconfig en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=400<CHANNEL_IO> ether 3c:06:30:3e:8f:35 inet6 fe80::1c2f:8742:5028:ac53%en0 prefixlen 64 secured scopeid 0xb inet 172.16.4.225 netmask 0xfffffc00 broadcast 172.16.7.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect status: active

为什么本机的IP地址是172.16.4.225, kafka却要连接172.16.4.223呢?,这个时候就该看一下kafka server的配置文件了

cat config/server.properties # 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://localhost:9092

发现默认的 listeners被注释掉了,看详细注释里说,如果该配置未指定的话,则通过java.net.InetAddress.getCanonicalHostName()获取ip地址, 是不是这个获取的有问题呢?赶紧写个代码段查看一下通过java获取的localhost是不是有问题?

public static void main(String[] args) throws UnknownHostException { System.out.println(InetAddress.getLocalHost()); }

发现果然是java获取的ip地址有问题

?最后尝试把该配置取消注释,并且修改成:listeners=PLAINTEXT://localhost:9092

保存,重启kafka, 启动成功了!!!!!!

至于为什么java获取的localhost ip地址是223并没有深究了,java不在研究范围内,如有大佬了解的话,烦请告知一二,感激不尽


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #kafka启动失败 #Connection #To #node #1 #could #not #be