链接不上Docker-Kafka-broker及Kafka解决内网外网隔离的几个重要参数

1.背景

像以前的大数据环境等都是经过Docker来搭建的,不管是在学习,测试,迁移时候无疑是最快的方式,尤为是在多个环境下还想使用同一套环境时候,https://github.com/hulichao/docker-bigdata,搭建思路,能够参考本仓库,通常状况下只要注意比虚拟机要多作个端口映射等,端口映射也即网络方面,实际上是相对冗余的,因此在搭建kafka的环境时候正好遇到了下面的问题,以下图connection to node 0 colud not be establised. Broker may not be avaliablehtml

file

kafka连不上broker,在虚拟机的机器上没问题,可是本地使用idea链接是有问题的。java

2.思路

是过后写的博客,因此当时的一些排查问题的截图,不一一贴出来了,只简述一下过程和最终解决,以及引出kafka对内外网隔离时候的解决方式node

2.1 首先排查各类网络问题

好比虚拟机网络,使用ping www.baidu.com 再检查端口使用telnet linux121 9092 发现都没有问题,另外查了Docker的虚拟网卡,能够参考另一篇文章,https://blog.csdn.net/hu_lichao/article/details/109538567,发现也没有问题linux

2.2 而后开始考虑是Kafka的问题

原本没有往这个方向想,最后只好借助google, 输入关键字 kafka docker idea 连不上Broker ,以下图git

file

而后参考第一条,读取关键的信息:Kafka的客户端(生产者与消费者统称)要链接 Broker 须要通过一层认证,不经过认证就没法链接! 而后继续往下读,客户端链接Kafka须要两层认证,其一是Zk上的Broker中的advertised.listeners 配置的链接和端口,注意:这里较坑的一点就是,必须原样比对 PLAINTEXT 中的内容要和Java程序中的要对应,即不考虑你是怎么拿到虚拟机中的Docker中的kafka的链接,总之你要发送的bootstrap.servers 的内容要和PLAINTEXT 要一致,这就须要配置linux121 的hosts,映射到实际的ip和端口了。github

java代码docker

file

zk获取broker信息bootstrap

file

kafka的server.properties的配置安全

file

3.Kafka的内外网参数

根据前面的排查问题,有两个重要参数,listenersadvertise.listeners 那这两个参数是作什么用的呢,这里拿来官方的翻译,网络

用于指定当前Broker向外发布服务的地址和端口。与 advertised.listeners 配合,用于作内外网隔离。

下面介绍几个相关参数:

listener.security.protocol.map

内外网隔离配置:监听器名称和安全协议的映射配置。好比,能够将内外网隔离,即便它们都使用SSL。listener.security.protocol.map=INTERNAL:SSL,EXTERNAL:SSL 注意,每一个监听器的名称只能在map中出现一次。
inter.broker.listener.name

用于配置broker之间通讯使用的监听器名称,该名称必须在advertised.listeners列表中。例如inter.broker.listener.name=EXTERNAL
listeners

用于配置broker监听的URI以及监听器名称列表,使用逗号隔开多个URI及监听器名称。
若是监听器名称表明的不是安全协议,必须配置listener.security.protocol.map
每一个监听器必须使用不一样的网络端口。
advertised.listeners
须要将该地址发布到zookeeper供客户端使用,若是客户端使用的地址与listeners配置不一样。
能够在zookeeper的 get /brokers/ids/<broker.id> 中找到。

在IaaS环境,该条目的网络接口得与broker绑定的网络接口不一样。
若是不设置此条目,就使用listeners的配置。跟listeners不一样,该条目不能使用0.0.0.0网络端口。
advertised.listeners的地址必须是listeners中配置的或配置的一部分。

注意:INTERNAL 和 EXTERNAL的做用就是至关于给PLAINTEXT协议起了两个别名,默认map中只能有一个同名的协议,故分开写

下面是一个典型的经常使用配置:

file

以上是使用wolai笔记写的,能够使用个人邀请码DJED4WI进行注册哟,名额有限,来抢啦!

4.参考

相关文章
相关标签/搜索