Kafka学习理解-listeners配置
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
这个应用的配置就可以是:
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
的网络配置,可以是如下配置:
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
这个地址
大概这些吧 .