最近,在学习一个关于Kafka的课程的时候,由于将Kafka服务的运行环境搭建在了云服务器上,就遇到了一些比较陌生的报错问题,特此,做一下应对处理的记录。问题主要,就是做本地的去调试远端API时,得到,如下图所示的报错内容:
18:15:03.645 [kafka-admin-client-thread | adminclient-1] DEBUG org.apache.kafka.common.network.Selector - [AdminClient clientId=adminclient-1] Connection with /121.5.6.229 disconnected
java.net.ConnectException: Connection timed out: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at org.apache.kafka.common.network.PlaintextTransportLayer.finishConnect(PlaintextTransportLayer.java:50)
at org.apache.kafka.common.network.KafkaChannel.finishConnect(KafkaChannel.java:216)
at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:531)
at org.apache.kafka.common.network.Selector.poll(Selector.java:483)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:540)
at org.apache.kafka.clients.admin.KafkaAdminClient$AdminClientRunnable.run(KafkaAdminClient.java:1196)
at java.lang.Thread.run(Thread.java:748)
从提示的字面上来看,就是没法连接上远端服务器上的Kafka运行环境,于是,我就根据这样的猜测想法,做了如下调整,首先,打开了云服务器上关于9092端口的防火墙安全策略,使其可以被正常访问到。如下图所示,在云服务器的控制台增加9092端口的安全策略即可。
原本以为,这样就可以解决问题了,然而,又尝试了一下,仍然,看到的是报错的相关结论。因此,考虑到可能仅仅开放端口的安全策略,还不足以能够解决问题,还需要通过命令,来将9092端口的防火墙安全设置打开。
于是,查询学习了相关的命令后,就尝试了以下几个命令,最后可以看到,如下图的效果:
[root@VM-16-3-centos ~]# firewall-cmd --add-port=9092/tcp
success
[root@VM-16-3-centos ~]# firewall-cmd --list-ports
20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 9092/tcp
这里,就主要是确保9092端口,可以正常被开启。
然而,问题仍然没有得到妥善解决,这个时候,只能考虑Kafka自身服务的配置是否存在什么问题了。
经过几番尝试后,发现在Kafka的安装目录下,config/server.properties文件中,
listeners=PLAINTEXT://[填写云服务器的对内IP]:9092
advertised.listeners=PLAINTEXT://[填写云服务器的对外IP]:9092
保存配置文件,重启Kafka服务,即可得到正常的调试API的结果。因为,这也是首次接触Kafka的技术,遇到这些坑也是比较正常,希望借这个机会,更多增长自己对这块知识,有更为全面的一个认识学习和了解。