Kafka连接服务器出现:Connection to node 1 (localhost/127.0.0.1:9092) could not be established.「建议收藏」

文章目录1.安全组是否开放&防火墙是否拦截请求2.登陆服务器查看Kafkabroker是否可用3.查看Kafka运行日志4.在网上找资料5.解决问题今天遇到个很奇怪的问题,是关于外网连接Kafka的。在服务器本地可以使用命令行参数连接并且进行发布订阅操作,但是在外网环境就不可以了,SpringBoot连接报错:Connectiontonode1(localhost/127….

大家好,又见面了,我是你们的朋友全栈君。

微信公众号搜“非典型开发者”,添加关注,不再迷路
在这里插入图片描述

今天遇到个很奇怪的问题,是关于外网连接Kafka的。

在服务器本地可以使用命令行参数连接并且进行发布订阅操作,但是在外网环境就不可以了,SpringBoot连接报错:

Connection to node 1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.

首先一点点来排查错误。

从错误信息可以看到,SpringBoot开启后连接的是127.0.0.1,也就是本地的Kafka broker,但是配置文件中配置的是服务器的IP地址。我本地也并没有安装Kafka和Zookeeper服务。

1.安全组是否开放&防火墙是否拦截请求

一般数据库或Redis连接不可用,都有可能是安全组没有开放或者防火墙拦截了外来连接导致。登陆阿里云服务器管理台后发现,9092端口和2181端口都是开放的,说明阿里云这边并没有关闭了Kafka和Zookeeper的外部连接权限,那么尝试下端口扫描,发现这两个端口依然可以被外部访问:

在这里插入图片描述

2.登陆服务器查看Kafka broker是否可用

xx@xx:~$ sudo lsof -i:9092
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    11049 root  164u  IPv4 1349268      0t0  TCP *:9092 (LISTEN)
java    11049 root  180u  IPv4 1350151      0t0  TCP localhost:33640->localhost:9092 (ESTABLISHED)
java    11049 root  181u  IPv4 1349272      0t0  TCP localhost:9092->localhost:33640 (ESTABLISHED)

通过查询Kafka broker默认端口9092发现,服务运行状态良好,排除掉服务下线的可能性。

3.查看Kafka运行日志

xx@xx~/kafka_2.11-2.3.1/$ sudo tail -f logs/server.log
[2019-12-09 00:49:13,507] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-24 in 1 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-12-09 00:49:13,507] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-27 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-12-09 00:49:13,507] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-30 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-12-09 00:49:13,508] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-33 in 1 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-12-09 00:49:13,508] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-36 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-12-09 00:49:13,508] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-39 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-12-09 00:49:13,509] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-42 in 1 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-12-09 00:49:13,509] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-45 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-12-09 00:49:13,509] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-48 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2019-12-09 00:49:13,509] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-3 in 0 milliseconds. (kafka.coordinator.group.GroupMetadataManager)

运行状态良好,没有出现WARNERROR信息,从日志看不出问题。

4.在网上找资料

既然自己菜,没能力找到问题所在,那么问问google,总有一些解决问题的方式,虽然并不一定能直接解决问题,但是在查找问题的过程中还是能学到很多,例如这篇博客也提到了Kafka外网连接问题,但按照这个方式修改后并不能解决我的问题:

kafka连接问题

这里面提到了一个很重要的概念:

kafka启动后会在zookeeper的/brokers/ids下注册监听协议,包括IP和端口号,客户端连接的时候,会取得这个IP和端口号。
后来查看了kafka的配置,原来我忽视了listeners和advertised.listeners的区别,advertised.listeners才是真正暴露给外部使用的连接地址,会写入到zookeeper节点中的。于是再次进行修改,把IP配置到advertised.listeners中,问题再一次解决。

advertised.listeners才是真正的对外代理地址!
那么listeners的作用就不是对外提供服务代理,而是监听!

5.解决问题

修改server.properties的两行默认配置,即可通过外网连接服务器Kafka,问题解决:

# 允许外部端口连接                                            
listeners=PLAINTEXT://0.0.0.0:9092  
# 外部代理地址                                                
advertised.listeners=PLAINTEXT://121.201.64.12:9092
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128037.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示[通俗易懂]

    qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示[通俗易懂]恢复内容开始qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示打个比方,我现在写个小例子,这个小例子是这样的,整个界面分为俩个部分,分为上半部分和下半部分,上半部分为5

  • query指定范围提取数据_嵌套查询和子查询

    query指定范围提取数据_嵌套查询和子查询repeater嵌套查询。代码如下:代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Data;namespa…

    2022年10月10日
  • docker(6)镜像的使用「建议收藏」

    docker(6)镜像的使用「建议收藏」前言Docker的三大核心概念:镜像、容器、仓库。初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似我们可以把镜像看作类,把容器看作类实例化后的对象。|

  • Rectified Linear Unit_激活函数图像

    Rectified Linear Unit_激活函数图像传统Sigmoid系激活函数传统神经网络中最常用的两个激活函数,Sigmoid系(Logistic-Sigmoid、Tanh-Sigmoid)被视为神经网络的核心所在。从数学上来看,非线性的Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上,有很好的效果。从神经科学上来看,中央区酷似神经元的兴奋态,两侧区酷似神经元的抑制态,因而在

    2022年10月29日
  • MATLAB 处理大数据

    MATLAB 处理大数据如何处理大规模的快数据集大数据指的是创建的数据和供分析的数据的数量与速率迅速增加。此趋势的主要驱动因素是不断增加的信息数字化。采集设备的数量和类型以及其他数据生成机制无时无刻不在增加。大数据源包括来自仪表传感器、卫星和医疗图像的流数据,来自安全摄像机的视频以及派生自金融市场和零售运营的数据。上述来源的大数据集可以包含千兆字节或百万兆字节的数据,并且每天以兆字节或千兆字节的级别增长。

  • activiti6.0工作流引擎深度解析_自定义工作流引擎

    activiti6.0工作流引擎深度解析_自定义工作流引擎工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号