1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Kafka跨网络使用问题排查

Kafka跨网络使用问题排查

近期在实现某个功能点上线生产环境,发现访问受限,导致采集的数据无法入到kafka,碰到此类问题,我们把分析过程记录一下。功能流程分部:通过调度平台定期采集指标数据,执行器采集数据后,将数据外吐给总部slb。总部:利用slb配置代理转发到kafka,然后由数据处理模块对kafka数据做相关逻辑处理。

Kafka跨网络使用问题排查

问题描述

当采集执行器采集到指标数据发送给slb,再由slb将数据转发到kafka,后台提示如下报错信息:Connectionto node0 (/21.xx.xx.7:xx)couldnotbe established.Brokermaynotbe available.从错误信息提示kafka地址与端口无法调通,broker不可用。

问题分析

针对此类问题,采用分段分析方式对问题进行排查分析:

1)网络检查从省端ping及telnet到集团端服务情况如下省端到集团端slb网络正常。省端和集团分属不同的网络,省侧到集团端kafka网络受限,kafka是集团内部服务,不直接开放给省侧访问。

2)省侧采集程序排查在省侧部署跟集团侧相同版本kafka环境,利用Kafka客户端命令连接集团slb进行生产消息,提示超时报错信息,通过这种验证方式,可以排出不是省侧调度程序的问题。org.apache.kafka.common.errors.TimeoutException:Topic not present in metadata

3)集团侧链路排查验证集团侧slb到kafka网络是相通的。集团侧部署一个新的kafka服务,利用Kafka客户端命令远程连接集团slb/kafka进行生产消息,kafka topic能正常收到信息。通过以上两个排出集团侧内部链路问题。

问题解决

从上面几点分析,可以排查出省侧与集团侧自身的链路问题,省侧程序是直接跟slb进行通讯,但又提示连接Kafka超时报错信息,检查slb到kafka本身链路也没有问题,说明问题出在跨网络使用kafka造成的原因。第一次交互流程(1/2/3/4)客户端获取到的真实的kafka的ip信息,而第二次交互的时候client会根据kafka的ip信息直接去访问kafka地址,因为跨网络受限,所以第二次交互出现连接超时报错现象。针对跨网络使用kafka情况下,需要在kafka开启advertised.listeners参数配置。根据此参数描述,它是用于暴露给外部的listeners,如果没有设置,会读取listeners参数内容,而listeners参数记录的是本机kafka监听端口。# Hostnameandportthebrokerwilladvertisetoproducersandconsumers.Ifnotset,# itusesthevaluefor “listeners” if configured.Otherwise,itwillusethevalue# returnedfromjava.net.InetAddress.getCanonicalHostName().#advertised.listeners=PLAINTEXT://your.host.name:9092因为跨网络受限,对外提供服务listeners配置成slbip或者域名及对应的端口,不能配置成kafka自身的ip与端口,才能在跨网络下通过代理转发方式给后端kafka推送数据。

本文作者:长研架构小组(上海新炬王翦团队)本文来源:“IT那活儿”公众号

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6506.html