kafka配置項host.name advertised.host.name


遇到的問題:

在本機或者其他機器telnet IP 9092,通,使用域名也通,telnet 127.0.0.1 9092不通

 

 

host.name:按配置文件說明,是Kafka綁定的interface。其實這個說明有點誤導,下面會見到。

advertised.host.name:是注冊到zookeeper,client要訪問的broker地址。(可能producer也是拿這個值,沒有驗證)

如果advertised.host.name沒有設,會用host.name的值注冊到zookeeper,如果host.name也沒有設,則會使用JVM拿到的本機hostname注冊到zk。

這里有兩個坑要注意:

  1. 如果advertised.host.name沒有設,host.name不能設為0.0.0.0,否則client通過zk拿到的broker地址就是0.0.0.0。
    如果指定要bind到所有interface,host.name不設就可以。

  2. 如果host.name和advertised.host.name都不設,client通過zk拿到的就是JVM返回的本機hostname,如果這個hostname是client無法訪問到的,client就會連不上broker
    所以如果要bind到所有interface,client又能訪問,解決的辦法是host.name不設或設置0.0.0.0,advertised.host.name一定要設置為一個client可以訪問的地址,如直接設IP地址。
    如果不需要bind到所有interface,也可以只在host.name設置IP地址。

簡單的檢查broker是否可以被client訪問到的辦法,就是在zookeeper中看broker信息,上面顯示的hostname是否是client可以訪問到的地址。
在zkCli中執行get /brokers/<id>

 

 

advertised.listeners=PLAINTEXT://docp1:9092 設了這個值就不用advertised.host.name 和 host.name選項了 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM