systemctl status kafka
(systemd)或service kafka status
(SysVinit)確認Kafka服務是否運行。若未運行,啟動時會輸出具體錯誤信息(如配置文件加載失?。?。/var/log/kafka/
(默認路徑)或config/log.dirs
指定的目錄,查看最新日志中的ERROR
或WARN
級別信息(如端口沖突、ZooKeeper連接失?。?。server.properties
中的關鍵參數:
broker.id
:每個Broker的唯一標識(集群中不可重復);listeners
:Broker監聽的地址和端口(如PLAINTEXT://your.kafka.broker.ip:9092
);advertised.listeners
:客戶端連接的地址和端口(需與客戶端配置一致);zookeeper.connect
:ZooKeeper集群地址(如zk1:2181,zk2:2181,zk3:2181
);log.dirs
:日志存儲目錄(需可寫,避免權限問題)。listeners=PLAINTEXT://:9092
缺少IP會導致綁定失?。?。netstat -tuln | grep <端口號>
或lsof -i:<端口號>
(如9092)查看端口是否被其他進程占用。若占用,終止占用進程或修改Kafka端口。ping
檢查Broker節點間網絡連通性,使用telnet <IP> <端口>
測試端口是否可達(如telnet broker1 9092
)。若不通,檢查防火墻(ufw allow 9092
)或安全組設置。listeners
中的IP地址是Broker實際綁定的地址(如0.0.0.0
表示所有接口,或具體IP)。若IP錯誤,修改為正確地址并重啟服務。systemctl status zookeeper
),且zookeeper.connect
配置的地址可達。若ZooKeeper異常,修復集群后再啟動Kafka。java -version
檢查Java版本。若版本不符,安裝兼容的JDK并配置JAVA_HOME
環境變量。java.net.BindException
(端口沖突)、java.io.FileNotFoundException
(日志目錄權限問題)或org.I0Itec.zkclient.exception.ZkTimeoutException
(ZooKeeper連接超時),針對性解決。advertised.listeners
是否與客戶端配置一致,防火墻是否阻止端口,網絡是否可達。TimeoutException
(請求超時,需增加request.timeout.ms
)、消費者日志中的NotLeaderForPartitionException
(分區Leader變更,需等待Leader選舉完成)。kafka-topics.sh --describe --topic <topic> --bootstrap-server <broker>
查看Topic分區狀態,使用kafka-console-producer.sh
和kafka-console-consumer.sh
測試生產消費流程。