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
這個地址
大概這些吧 .