首先注意下kafka的版本:這是我接觸過的兩個版本
kafka2.11-0.11.0.0:新版配置拋棄了host.name 和 post選項,需在server.properties下配置
advertised.listeners=PLAINTEXT://brokerIP:9092
kafka_2.11-0.8.2.1: 需在server.properties下配置
host.name=IP號
post=9092
接下來說下我所理解的通過其他主機做生產者遇到的一些問題及理解
問題:在本機可以生產到數據,給其他人IP、端口和topic卻無法生產數據到broker集羣
測試後發現:其他主機沒有配置hosts
,導致Zookeeper無法解析其監聽broker的IP和端口,這裏的IP是指在集羣上用的hosts別名。
host.name和port的值是註冊到Zookeeper的,我寫的是hosts配置的值,如slave別名。
如果advertised.host.name沒有設,會用host.name的值註冊到zookeeper,如果host.name也沒有設,則會使用JVM拿到的本機hostname註冊到zk。
如果advertised.host.name沒有設,host.name不能設爲0.0.0.0,否則client通過zookeeper獲取的broker地址就是0.0.0.0
如果host.name和advertised.host.name都不設,client通過zk拿到的就是JVM返回的本機hostname,如果這個hostname是client無法訪問到的,client就會連不上broker。
可用zkCli中執行get /brokers/查看信息