Kafka 云服务器分别配置内外网访问

356 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

项目场景:

在 docker 部署或云服务器上部署,需要内外网分流的时候。
在Windows上连接阿里云服务器上部署的Kafka服务报错


问题描述:

Idea中创建Consumer报错:java.lang.IllegalStateException: No entry found for connection 2147483609


解决方案:

方案一
在客户端机器上修改hosts文件,配置上kafka所在服务器的hosts文件内的映射关系。这显然不是明智之举,不安全且麻烦。
方案二
在公司内网部署 kafka 集群只需要用到 listeners,所以一直也不用管 advertised.listeners 是做啥的,刚开始有查过,因为经验不足,始终理解的不够,后来发现在 docker 部署和云服务器上部署,内外网需要作区分时,发挥了它强大的作用。
关于这两个配置的介绍:(kafka.apachecn.org/documentati…)
在这里插入图片描述在这里插入图片描述
listeners: 学名叫监听器,其实就是告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
advertised.listeners:和 listeners 相比多了个 advertised。Advertised 的含义表示宣称的、公布的,就是说这组监听器是 Broker 用于对外发布的。

操作步骤

所以,只需要在CDH里修改kafka的配置
1、这个是总体,不用分开配置:
在这里插入图片描述
2、修改代理需要分节点配置:
在这里插入图片描述
在这里插入图片描述
注意:1行与行之间用逗号隔开!
2 如果使用的是云服务器,一定要配置安全组,外网的那个端口19093!
3 监控/var/log/kafka/kafka-broker-master.log查看错误,逐个击破

自行粘贴修改:

listeners=PLAINTEXT://175.11.5.19:19092,EXTERNAL://175.11.5.19:19093,
advertised.listeners=PLAINTEXT://175.11.5.19:19092,EXTERNAL://47.98.118.56:19093,
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT

listeners=PLAINTEXT://175.11.5.20:19092,EXTERNAL://175.11.5.20:19093,
advertised.listeners=PLAINTEXT://175.11.5.20:19092,EXTERNAL://47.98.114.57:19093,
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT

listeners=PLAINTEXT://175.11.5.21:19092,EXTERNAL://175.11.5.21:19093,
advertised.listeners=PLAINTEXT://175.11.5.21:19092,EXTERNAL://47.98.162.58:19093,
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT

重启Kafka!

防止记录不充分,把参考的博客记录一下:
官方文档(英文):kafka.apache.org/documentati…
官方文档(中文):kafka.apachecn.org/documentati…
理解说明1:segmentfault.com/a/119000002…
理解说明2:www.cnblogs.com/xuewenlong/…
关键必坑(官网论坛内容加载较慢):community.cloudera.com/t5/Support-…