KAFKA-使用代理进行跨网络访问采坑记录

在内网环境下,通过代理访问Kafka集群遇到问题,包括生产者和消费者连接超时。原因是Kafka在Zookeeper中获取到的leader地址直接暴露了真实的Kafka IP。解决方案是配置`advertised.listeners`参数,使得Kafka返回域名给客户端,通过域名解析再次经过代理访问真实集群,从而实现链路畅通。在实施过程中,因手动输入域名出错导致延迟发现并修复问题。
摘要由CSDN通过智能技术生成

问题背景:

client机器是在内网的,无法直接访问到kafka的机器,所以需要走个代理机器,代理服务器可以同时被内网和外网访问。

在外网中,kafka集群都已经搭建好,生产者、消费者都可以正常运行。

问题来了:内网的client机器通过nginx代理访问kafka时候

查看topic列表正常:kafka-topics.sh --zookeeper localhost:2181 --list

创建topic正常:kafka-topics.sh --zookeeper localhost:2181 --create --topic emmp_eva_time --partitions 2  --replication-factor 2

但是生产者和消费者均异常:报错信息忘记截图了,大概的意思就是连接超时

 

解决思路:

很明显是网络层面的问题,首先,我们来看看kafka的交互的原理:

原理文章这篇写的比较好:

盗一张图:

1. producer 先从 zookeeper 的 "/brokers/.../state" 节点找到该 partition 的 leader
2. producer 将消息发送给该 leader
3. leader 将消息写入本地 log
4. followers 从 leader pull 消息,写入本地 log 后 leader 发送 ACK
5. leader
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值