腾讯云服务器调试Kafka应用API踩坑记录

本文记录了在云服务器上搭建Kafka环境时遇到的连接超时问题及解决过程。作者通过调整防火墙设置和修改Kafka配置文件解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,在学习一个关于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的技术,遇到这些坑也是比较正常,希望借这个机会,更多增长自己对这块知识,有更为全面的一个认识学习和了解。

### 如何在腾讯云轻量应用服务器上安装和配置Kafka #### 准备工作 为了顺利部署Kafka,在腾讯云轻量应用服务器上需先准备好必要的软件环境。这包括JDK 1.8版本以及Zookeeper 3.5.9版本的安装[^3]。 #### 安装Docker 考虑到简化管理和维护,推荐通过Docker来运行Kafka及其依赖组件Zookeeper。首先确保已正确安装并启动了Docker服务[^2]。 ```bash sudo apt-get update && sudo apt-get install docker.io -y ``` #### 使用Docker Compose管理容器编排 创建`docker-compose.yml`文件用于定义所需的服务: ```yaml version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: image: wurstmeister/kafka depends_on: - zookeeper environment: KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 ports: - "9092:9092" ``` 保存上述YAML内容到项目目录下,并执行命令以启动相关服务: ```bash docker-compose up -d ``` 此时应该能够看到两个新的Docker容器正在后台运行——分别是Zookeeper和Kafka实例。 #### 测试连接Spring Boot应用程序至远程Kafka集群 对于希望从本地开发环境中测试与云端Kafka通信的应用开发者来说,可以调整客户端程序中的bootstrap.servers参数指向公网IP地址加上端口号的形式(例如:`<your_server_ip>:9092`),从而实现跨网络访问[^1]。 #### 配置安全组规则开放相应端口 最后不要忘记前往腾讯云控制台的安全组设置页面允许外部流量进入指定端口(如2181, 9092)。这样做的目的是让其他机器也能正常访问到该服务器上的Kafka服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值