kafka啟動報錯記錄:Connection to node 0 could not be established. Broker may not be available.
阿新 • • 發佈:2018-10-31
環境說明:
CentOS Linux release 7.4.1708 (Core)
Linux核心:3.10.0-693.el7.x86_64
java: openjdk version “1.8.0_181”
kafka: kafka_2.11-2.0.0
zookeeper: zookeeper-3.4.10
操作流程:
-
首先啟動zookeeper(使用預設配置)
#首先要進入zookeeper根目錄 bin/zkServer.sh start
上面啟動正常。
-
再啟動kafka(使用預設配置)
#首先要進入kafka根目錄 bin/kafka-server-start.sh config/server.properties
發現有警告:
WARN [Controller id=0, targetBrokerId=0] Connection to node 0 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
對於第一次用這個kafka的我來說,不懂。 然後有人說看下controller的日誌(kafka_2.11-2.0.0/logs/controller.log),發現有報錯:
WARN [RequestSendThread controllerId=0] Controller 0's connection to broker www.gl.com:9092 (id: 0 rack: null) was unsuccessful (kafka.controller.RequestSendThread) java.io.IOException: Connection to www.gl.com:9092 (id: 0 rack: null) failed. at org.apache.kafka.clients.NetworkClientUtils.awaitReady(NetworkClientUtils.java:70) at kafka.controller.RequestSendThread.brokerReady(ControllerChannelManager.scala:279) at kafka.controller.RequestSendThread.doWork(ControllerChannelManager.scala:233) at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:82)
我什麼都沒配置怎麼有一個
www.gl.com
?後來發現, 自己在安裝系統的時候, 有設定系統的域名為gl.com
(可用hostname
命令檢視本地域名)。$ hostname gl.com
理解應該是對kafka使用預設配置啟動,它會讀到本機的主機資訊為
gl.com
, 但是為什麼多了個www就不知道了,希望有同學能解惑。怎麼解決呢?想到之前自己為了做實驗,在hosts檔案中新增過
www.gl.com
, 不知道和上面的報錯有沒有關係。
開啟/etc/hosts
檔案127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
改成(注意每個後面多了 gl.com,其實只給第一行加也可以的):
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 gl.com ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 gl.com
然後使用預設啟動就不報錯了。
-
測試
可以來測試下kafka能不能正常工作(在kafka根目錄執行):可以來測試下kafka能不能正常工作(在kafka根目錄執行):# 建立topic, 名稱為testTopic bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic # 檢視topic(會發現除了testTopic,還有KafkaPushsTopic bin/kafka-topics.sh --list --zookeeper localhost:2181 # 啟動消費者(Consumer, 發現“卡住了”,其實它是在等訊息,不要關這個視窗) bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning # 啟動生產者(Producer, 新視窗啟動) bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testTopic
啟動生產者後發現進入了互動模式,這時就可以發訊息了。
截圖如下:參考:
http://kafka.apache.org/quickstart歡迎補充指正!