集群运维与调优
Partition 规划
Partition 数决定最大消费并行度、Leader/Replica 数量和元数据规模。规划时综合考虑目标吞吐、Consumer 并发、单 Partition 顺序、Broker 数、故障恢复和未来扩展。
Partition 可以增加但不能原地减少。增加后默认 Key 分区映射可能变化,也不会自动重分布已有数据。
副本与扩容
增加 Broker 后,既有 Partition 不会自动均匀迁移。需要生成并执行 Replica Reassignment,并控制迁移流量。迁移期间应监控 ISR、网络、磁盘和请求延迟。
Preferred Leader Election 用于恢复首选 Leader 分布;它不搬迁日志副本。分区副本分配与 Leader 均衡是两个不同问题。
Consumer Lag
Lag 是 Log End Offset 与 Group 已提交 Offset 的差值。它表示消息数量差,不直接等于时间延迟;不同消息大小和处理成本下,同样 Lag 的恢复时间不同。
bash
bin/kafka-consumer-groups.sh --bootstrap-server node1:9092 \
--describe --group analytics积压排查顺序:输入速率、Consumer 是否存活、分区倾斜、处理耗时、下游依赖、Rebalance、GC 和网络。增加 Consumer 不能突破 Partition 数限制。
关键指标
| 类别 | 指标方向 |
|---|---|
| 副本 | UnderReplicatedPartitions、UnderMinIsr、OfflinePartitions |
| 请求 | Produce/Fetch 延迟、Request Queue、Network/IO Idle |
| 存储 | Log Size、磁盘利用率、Flush、坏盘目录 |
| Controller | Active Controller、Metadata Error、选举与 Broker 心跳 |
| Consumer | Lag、Rebalance、Poll 间隔、Commit 失败 |
| Producer | Error、Retry、Record Queue、Batch、Throttle |
常见故障
| 现象 | 优先检查 |
|---|---|
NOT_ENOUGH_REPLICAS | ISR 数、min.insync.replicas、Follower 滞后 |
| Produce 延迟升高 | Broker I/O、请求队列、批量、压缩和配额 |
| Consumer 频繁 Rebalance | Poll 超时、Session、成员 churn、处理线程阻塞 |
| 单 Broker 磁盘增长快 | Leader/Replica 分布、热点 Topic、保留策略 |
| KRaft 元数据异常 | Controller Quorum、多数派、网络和磁盘 |
安全
生产集群通常使用 TLS、SASL 和 ACL。认证解决身份,ACL 控制 Topic、Group、Cluster、Transactional ID 等资源操作。还应限制管理接口、保护凭据,并审计超级用户权限。