温馨提示×

linux kafka如何停机

小樊
40
2026-09-26 12:36:25
栏目: 智能运维

在 Linux 上停止 Kafka,通常先停 Kafka,再停 Zookeeper(如果你用的是依赖 ZK 的版本)。下面按常见场景说明。


一、使用官方脚本正常停机(推荐)

1. 停止 Kafka

cd /path/to/kafka
bin/kafka-server-stop.sh

如果 kafka-server-stop.sh 无效(某些版本需要 PID):

# 查找 Kafka 进程
ps -ef | grep kafka

# 优雅停止(不要用 -9)
kill -TERM <kafka_pid>

✅ Kafka 收到 SIGTERM 后会:

  • 停止接收请求
  • 刷写日志
  • 关闭网络线程
  • 正常退出

2. 停止 Zookeeper(Kafka 依赖 ZK 时)

bin/zookeeper-server-stop.sh

或:

kill -TERM <zk_pid>

二、使用 systemd 停机(最常见生产环境)

如果你是系统服务方式安装的:

sudo systemctl stop kafka
sudo systemctl stop zookeeper

查看状态:

systemctl status kafka
systemctl status zookeeper

开机不自启:

sudo systemctl disable kafka
sudo systemctl disable zookeeper

三、KRaft 模式(Kafka 3.x+,无 Zookeeper)

停止 Controller / Broker

bin/kafka-server-stop.sh

或:

kill -TERM <kafka_pid>

四、⚠️ 不推荐的方式

kill -9 <pid>

❌ 风险:

  • 日志未刷盘
  • 副本状态异常
  • 可能导致 __consumer_offsets 损坏

五、确认是否真正停机

ps -ef | grep kafka
netstat -tunlp | grep 9092

或:

ss -ltnp | grep 9092

六、停机顺序总结(重要)

✅ 正确顺序:

Kafka → Zookeeper

❌ 错误顺序:

Zookeeper → Kafka(可能导致 broker 异常)

如果你愿意,可以告诉我:

  • Kafka 版本
  • 是否用 Docker / K8s
  • 是否是生产环境

我可以给你最合适、最安全的停机方案。

0 踩