跳到主要内容

Kafka 集群运维与高频命令

Apache Kafka 是一款高吞吐量、分布式的发布订阅消息系统。本文梳理了 Kafka 集群常用参数调优、状态检查和高频使用的命令行运维操作。


1. 核心性能调优参数(server.properties)

在生产环境中,合理的配置可以避免消息丢失并极大提高读写吞吐性能:

# 1. 基础配置
broker.id=0
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181/kafka

# 2. 消息持久化策略 (保留 7 天,超过 100G 自动清理)
log.retention.hours=168
log.retention.bytes=107374182400
log.segment.bytes=1073741824

# 3. 性能优化 (增加网络和 I/O 线程数)
num.network.threads=8
num.io.threads=16
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600

# 4. 可靠性与高可用配置
num.partitions=3 # 新建 Topic 的默认分区数
default.replication.factor=3 # 默认副本因子
min.insync.replicas=2 # 最小处于同步状态的副本数(ISR)
unclean.leader.election.enable=false # 关闭不干净的选举(防止丢失消息)

2. 常用命令行运维(Kafka CLI)

提示

以下命令基于 Kafka 3.x 较新版本,如果依然使用旧版本,需要将 --bootstrap-server 参数替换为对应的 --zookeeper 配置。

Topic 基础操作

# 1. 创建名为 "ops-events" 的 Topic,配置 3 分区,3 副本
kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 3 --topic ops-events

# 2. 列出集群中所有的 Topic
kafka-topics.sh --list --bootstrap-server localhost:9092

# 3. 查看特定 Topic 的分区与副本详细分布状态
kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic ops-events

生产与消费调试

# 1. 启动一个命令行生产者,往 Topic 写入测试数据
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic ops-events

# 2. 从头开始消费 Topic 的所有消息并输出到屏幕
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic ops-events --from-beginning

消费组与积压监控

# 1. 查看集群中所有活跃的消费者组
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

# 2. 查看特定消费组的消费积压(Lag)情况(运维最常用)
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ops-monitoring-group