环境说明
客户端与Kafka服务端不在同一个网络区域,无法直接访问。需要通过NAT进行地址映射,将Kafka服务端10.0.0.182地址映射为172.25.0.190,从而客户端与服务端可以正常通信。
Kafka客户端 | NAT映射地址 | Kafka服务端 |
---|---|---|
172.16.0.233 | 172.25.0.190 | 10.0.0.182 |
问题现象
防火墙策略已经开通,客户端可以ping通服务端映射后的地址172.25.0.190
。也可以telnet通映射地址的9092端口kafka服务端口
。但是从客户端向kafka服务端对应的topic发送消息,无法收到任何消息。
Kafka安装
安装JDK
yum install java-1.8.0-openjdk
下载并解压kafka软件包
cd /opt |
启动kakfa服务
cd kafka_2.12-2.6.0 |
检查服务监听
[root@kafka-test ~]# ss -lntp |
本机访问测试
没有发现问题
#发送消息 |
通过客户端连接
#通过客户端发送消息 |
错误信息如下:
[2020-10-30 17:04:18,795] WARN [Producer clientId=console-producer] Error connecting to node kafka-test:9092 (id: 0 rack: null) (org.apache.kafka.clients.NetworkClient) |
解决方法
发现一直卡在那里,最终以超时异常退出,或者报broker找不到的错误。如果返回的是IP地址,那么肯定是无法访问的,这就是为什么在kafka的配置文件中不推荐使用IP地址的原因。现在返回的是主机名,很简单,在客户端的hosts文件中添加:
172.25.0.190 kafka-test |