10.3.3 – KRaft vs ZooKeeper Resilience
Module: M10 – Advanced Topics & Architecture
Section: 10.3 – High Availability & Disaster Recovery
Goal: Compare resilience of KRaft vs ZooKeeper modes
Architecture Comparison
ZooKeeper Mode
Kafka Brokers ← depend on → ZooKeeper Ensemble (3-5 nodes)
- Metadata stored in ZK
- Controller election via ZK
- Broker coordination via ZK
Dependencies: Kafka + ZooKeeper (two systems to manage)
KRaft Mode
Kafka Cluster
├── Controller Nodes (3-5, run Raft consensus)
└── Broker Nodes (data plane only)
Dependencies: Kafka only (self-contained)
Resilience Comparison
| Aspect | ZooKeeper Mode | KRaft Mode |
|---|---|---|
| Components | Kafka + ZooKeeper | Kafka only |
| Metadata Storage | ZooKeeper | Kafka controllers |
| Quorum Size | 3-5 ZK nodes | 3-5 controller nodes |
| Failover Time | 10-30 seconds | 3-10 seconds (faster) |
| Metadata Scalability | ~200k partitions | Millions of partitions |
| Operational Complexity | High (two systems) | Medium (one system) |
| Recovery from Full Loss | Restore ZK first | Restore controllers first |
Failure Scenarios
Controller Failure
ZooKeeper Mode:
- Controller broker crashes
- ZooKeeper detects loss (heartbeat timeout)
- Remaining brokers compete for controller role (write to ZK)
- First to write wins → new controller
- New controller reads state from ZK
Time: 10-30 seconds
KRaft Mode:
- Controller node crashes
- Remaining controllers detect loss (Raft heartbeat)
- Raft elects new leader (automatic, no competition)
- New leader has full metadata (already replicated via Raft)
Time: 3-10 seconds (faster)
Metadata Quorum Loss
ZooKeeper Mode:
- Quorum: Requires majority of ZK nodes (2 of 3, 3 of 5)
- Loss: If quorum lost, cluster frozen (no metadata updates, no leader elections)
- Recovery: Restore ZK quorum → Kafka recovers automatically
KRaft Mode:
- Quorum: Requires majority of controller nodes
- Loss: Same behavior (cluster frozen)
- Recovery: Restore controller quorum → Kafka recovers automatically
Winner: Tie (both use quorum-based consensus)
Metadata Corruption
ZooKeeper Mode:
- Corruption: If ZK data corrupted, entire cluster affected
- Recovery: Restore from ZK backup or rebuild metadata
KRaft Mode:
- Corruption: If controller log corrupted, same impact
- Recovery: Restore from controller log backup
Winner: Tie (both need backups)
Performance Under Failure
Metadata Operations During Failover
ZooKeeper Mode:
- Metadata operations (create topic, leader election) blocked during controller failover
- Latency spike: 10-30 seconds
KRaft Mode:
- Faster failover = shorter metadata operation block
- Latency spike: 3-10 seconds
Winner: KRaft (faster recovery)
Operational Differences
Monitoring
ZooKeeper Mode:
- Monitor Kafka + ZooKeeper separately
- Tools: JMX (Kafka), ZK 4-letter commands (
ruok,stat)
KRaft Mode:
- Monitor Kafka only
- Tools: JMX, Kafka CLI tools
Winner: KRaft (fewer systems)
Backup and Restore
ZooKeeper Mode:
# Backup ZK data
tar -czf zk-backup.tar.gz /var/zookeeper/data
# Restore
tar -xzf zk-backup.tar.gz -C /var/zookeeper/data
KRaft Mode:
# Backup controller logs
tar -czf controller-backup.tar.gz /var/kafka/controller-logs
# Restore
tar -xzf controller-backup.tar.gz -C /var/kafka/controller-logs
Winner: Similar process
Migration Path
ZooKeeper → KRaft Migration:
- Upgrade to Kafka 3.3+ (supports KRaft)
- Run migration tool:
kafka-metadata.sh --migrate - Start controllers
- Migrate brokers one by one
- Decommission ZooKeeper
Recommendation: New clusters should use KRaft (ZooKeeper deprecated in Kafka 4.0)
Key Takeaways
- KRaft Faster: Controller failover 3-10 seconds (vs 10-30 seconds with ZK).
- KRaft Simpler: One system to manage (vs Kafka + ZK).
- Quorum Math Same: Both require majority for consensus.
- KRaft Scales Better: Supports millions of partitions (vs 200k for ZK).
- Migration Available: Can migrate from ZK to KRaft.
- ZooKeeper Deprecated: Removed in Kafka 4.0 (use KRaft for new deployments).
What's Next?
Next Module: 10.3.4 – Backup and Restore Strategies
References:
- Controller details → M7: Kafka Internals
- Operations → M6: Operations