Kafka非正常关闭后启动,jps显示有kafka,然后又没有了

kafka集群启动失败


大多数人的虚拟机可能长时间开启,断电虚拟机关闭,或者进程关闭顺序zookeeper在kafka之前关闭。
会导致kafka在zookeeper中注册的零时节点没有销毁。下次kafka启动时,同样跑去注册,发现zookeeper中kafka的brokers/ids不为空,就会默认已经启动。kafka就不会在启动。

[zk: localhost:2181(CONNECTED) 12] ls /kafka/brokers/ids
[1, 2, 3]
[zk: localhost:2181(CONNECTED) 13] 

关闭broker.id=2的kafka

[zk: localhost:2181(CONNECTED) 0] ls /kafka/brokers/ids
[1, 3]
[zk: localhost:2181(CONNECTED) 1] 

删除零时节点信息

[zk: localhost:2181(CONNECTED) 2] ls /kafka/brokers/ids   
[1, 2, 3]
[zk: localhost:2181(CONNECTED) 3] rmr /kafka/brokers/ids/2
[zk: localhost:2181(CONNECTED) 4] ls /kafka/brokers/ids   
[1, 3]
```markdown 根据您提供的文件内容,这是一个日志与命令混合的文本记录,属于“代码+文本型”文件,其中文本形式为系统操作记录与日志输出,非代码题目,因此按“代码+文本型”中与代码相关的内容处理。 ### 代码概述 该文件展示了在 `master` 节点上启动 Kafka 服务的操作过程及相关日志,同时通过 `jps` 查看 Java 进程,确认 Kafka 在 master 上运行。后续检查了 slave1 和 slave2 节点的进程情况。 ### 代码解析 1. `[root@master config]# kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties` 表示在 master 节点后台启动 Kafka 服务。 2. `jps` 命令显示 master 上存在 `Kafka` 进程(PID 36473),说明 Kafka 已成功启动。 3. slave1 和 slave2 的 `jps` 输出中: - 存在 `QuorumPeerMain`(表明 ZooKeeper 正常运行) - 但**没有 `Kafka` 进程** - 说明 slave 节点未启动 Kafka 服务。 4. 日志中出现两次 `ERROR Exiting Kafka...`,可能表示 Kafka 启动失败或中途退出。 --- ### 可能原因分析 1. **未在 slave1 和 slave2 上执行启动命令** 文件仅显示在 master 上执行了 `kafka-server-start.sh`,未见对 slave 节点的启动操作。 2. **配置文件问题** 每个节点的 `server.properties` 中 `broker.id` 必须唯一,且 `listeners`、`advertised.listeners` 应绑定正确的 IP 地址。若配置错误,会导致无法启动。 3. **网络通信异常** 若 slave 与 master 或 ZooKeeper 之间网络通,Kafka 将无法注册到集群而自动退出。 4. **ZooKeeper 连接问题** Kafka 需连接 ZooKeeper(通常端口 2181),若配置指向错误或 ZooKeeper 未同步配置,将导致启动失败。 5. **日志路径或磁盘权限足** Kafka 默认写入 `logs/` 目录,若目录存在或无写权限,会启动失败。 --- ### 解决建议 1. 登录 slave1 和 slave2,手动执行 Kafka 启动命令: ```bash kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties ``` 2. 检查各节点 `config/server.properties` 配置是否正确: - `broker.id`:每台机器唯一 - `listeners` 和 `advertised.listeners`:使用各自内网 IP - `zookeeper.connect`:指向正确的 ZooKeeper 集群地址 3. 查看 slave 节点上的 `$KAFKA_HOME/logs/server.log` 获取具体错误信息。 4. 使用 `ping` 和 `telnet` 检查网络连通性及端口开放状态。 --- ### 知识点 1. **Kafka 集群机制** Kafka 通过 `broker.id` 区分节点,依赖 ZooKeeper 协调,需确保每个 broker 正确配置并独立启动。 2. **ZooKeeper 作用** 存储 Kafka 集群元数据,管理 broker 注册与 topic 分区状态,Kafka 启动时必须连接正常运行的 ZooKeeper。 3. **Linux 进程查看命令 jps** 显示当前用户的 Java 进程,用于验证 KafkaKafka 类主程序)和 ZooKeeper(QuorumPeerMain)是否运行。 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值