关于Kafka远程生产和消费的额外说明

2 篇文章 0 订阅
2 篇文章 0 订阅

网上有太多此类帖子,然而本帖比他们全面。

背景

有一台阿里云服务器A,用作测试服务器,一台华为服务器B,用作生产服务器。均搭建相同配置和版本Apache Kafka。现在需远程生产和消费Kafka。在服务器B均无错误,在服务器A死活不通。

问题排查

  • iptable input和output均打开Kafka端口。

  • telnet通。

  • log没有任何报错,就是没接收到。

  • tcpdump检测两台机器发送的tcp包是一样的。

原因分析

首先,可以肯定网上的说法是没错的。Kafka监听的地址(listeners)和广播的地址(advertised.listeners)是会有默认值的。但是为什么服务器A行不通,服务器B行得通呢?这点目前应该没有文章提到过。就是网卡数量。

华为服务器只有一块网卡,网卡地址是常用局域网地址

192.168.xxx.xxx

所以发送给该服务器的TCP报文会通过路由网关转发到该网卡。无论是外网内网最终都只会指向一个地址。针对此类情况,网上绝大多数文章所说指定监听和广播地址的做法是没有必要的。

而阿里云不同了,阿里云服务器有两块网卡,内网网卡编号eth0,外网网卡编号eth1,如果不指定Kafka配置的地址,默认监听内网网卡eth0,而远程访问一定是访问eth1,则Kafka是绝对监听不到的。所以这类情况需要把配置地址改掉。普遍情况是在两块网卡,远程调用的机器和哪一块网卡处于同一个环境就要把地址换成哪一块网卡的地址。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值