​listeners​​​​​

broker 服务器要监听的地址及端口 . 默认是 localhost:9092 ,​​0.0.0.0​​的话 ,表示监听本机的所有ip地址.

本机配置:


  • ​localhost​​​ : 只监听本机的地址请求, 客户端也只能用 ​​localhost​​ 来请求
  • ​127.0.0.1​​​ : 同​​localhost​​​, 在请求上可能有与区分 , 看​​client​​​的请求吧 . 客户端也只能用​​127.0.0.1​​来请求
  • ​192.168.0.1​​​ : 有点脑子的都不要用这个 , 你的局域网不一定是 ​​192.168​​ 段的.
  • ​0.0.0.0​​​ : 本机的所有地址都监听 , 包含 ​​localhost​​​ , ​​127.0.0.1​​, 及不同网卡的所有ip地址 , 都监听 .

多网卡配置:


  • ​A网卡ip​​​ : 只监听​​A网卡​​上的请求 , B网卡来的请求不管的
  • ​A和B网卡ip​​​ : 可以同时配置多网卡 , 也可以用​​0.0.0.0​​来代表所有网卡

​advertised.listeners​​​​#​

这个是对外提供的地址 , 当​​client​​请求到kafka时, 会分发这个地址.

这个地址会有三个地方用到: ​​集群内其他的broker​​​,​​生产者​​​,​​消费者​

这里可以不填 , 不填就默认用 ​​listeners​​ 的地址.


对于生产环境, 直接用​​listeners​​的地址肯定不合适的.


这个配置可以适配多种网络环境 . 单网络环境 ,只配置一个地址 , 多网络环境可以配置多个地址.

单网络环境​​#​

对于调用者的三个地方 , 都在同一个网络环境里 , 那么只配置一个地址就好了 .

举个例子 , 有以下机器配置:


  • broker 1 : 10.120.0.1
  • broker 2 : 10.120.0.2
  • producer : 10.120.0.3
  • consumer : 10.120.0.4

所以应用都在同一个网络环境里 , 互相可以直接连通的. 那么对于​​broker 1​​ 这个应用的配置就可以是:

Copy

​listeners=PLANTEXT://0.0.0.0:9092 advertised.listeners=PLANTEXT://10.120.0.1:9092 ​

那么其他三个应用上 , 在调用​​broker 1​​​的时候 , 都是通过​​10.120.0.1:9092​​这个地址 .

多网络环境​​#​

一般是内外网 , 就两个环境 , 其他博客上这种配置很多 .

这里我们假设有三个网络环境 , kafka 集群内一个网络 , 生产者一个网络 , 消费者一个网络.


  • broker 1 : 10.120.0.1 , 172.120.0.1 , 115.120.0.1
  • broker 2 : 10.120.0.2
  • producer : 172.120.0.2
  • consumer : 115.120.0.2

这时候​​broker 1​​ 的网络配置,可以是如下配置:

Copy

​listeners=PLANTEXT://0.0.0.0:9092 advertised.listeners=INNER://10.120.0.1:9090,PRO://172.120.0.1:9092,CON:115.120.0.1:9092 listener.security.protocol.map=INNER:PLANTEXT,PRO:PLANTEXT,CON:PLANTEXT inter.broker.listener.name=INNER ​

设置了三个地址 . broker之间通信使用​​INNER​​​, 当​​producer​​​来调用时 , 给​​172.120.0.1:9092​​​这个地址 , 当​​consumer​​​来调用时 , 给​​115.120.0.1:9092​​这个地址

大概这些吧 .