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
测试生产消费流程。