Managing Cluster Operations
1. Adding Brokers to Cluster
| Step | Description | Detail |
|---|---|---|
| Unique ID | New node.id | Distinct |
| Start | Joins cluster | No partitions yet |
| Reassign | Move partitions to it | Rebalance |
2. Removing Brokers from Cluster
| Step | Description | Detail |
|---|---|---|
| Drain | Move partitions off | Reassign first |
| Verify | No leaders remain | Check |
| Shutdown | Stop broker | Safe |
Example: Reassign off broker 4
kafka-reassign-partitions.sh --bootstrap-server localhost:9092 \
--reassignment-json-file drain-broker4.json --execute
3. Expanding Cluster
| Aspect | Description | Detail |
|---|---|---|
| Add Capacity | More brokers | Horizontal |
| Rebalance | Spread existing data | Even load |
| Throttle | Limit move bandwidth | No disruption |
Example: Throttled reassignment
kafka-reassign-partitions.sh --bootstrap-server localhost:9092 \
--reassignment-json-file plan.json --execute --throttle 50000000
4. Balancing Partition Load
| Aspect | Description | Detail |
|---|---|---|
| Generate Plan | --generate proposes | Even spread |
| Cruise Control | Auto-balancing tool | Continuous |
| Preferred Leader | Restore leadership balance | Election |
Example: Generate balance plan
kafka-reassign-partitions.sh --bootstrap-server localhost:9092 \
--topics-to-move-json-file topics.json \
--broker-list "1,2,3,4" --generate
5. Rolling Restart
| Step | Description | Detail |
|---|---|---|
| One at a Time | Restart sequentially | Availability |
| Wait URP=0 | Before next broker | Safe |
| controlled.shutdown | Graceful leader move | Default on |
Example: Wait for URP=0
# Restart broker, then verify before continuing
kafka-topics.sh --bootstrap-server localhost:9092 \
--describe --under-replicated-partitions
6. Upgrading Kafka Version
| Step | Description | Detail |
|---|---|---|
| Rolling | One broker at a time | No downtime |
| inter.broker. protocol.version |
Pin during upgrade | Compat |
| Bump After | Raise version last | Finalize |
Example: Pin protocol version
inter.broker.protocol.version=3.8
# After all brokers upgraded, set to 3.9 and restart
7. Migrating to KRaft Mode
| Step | Description | Detail |
|---|---|---|
| Deploy Controllers | KRaft quorum | Migration mode |
| Dual-Write | ZK + KRaft | Transition |
| Finalize | Drop ZK | KRaft-only |
Warning: Migrate to KRaft on 3.x before upgrading to 4.0, which removes ZooKeeper entirely.
8. Handling Broker Failures
| Aspect | Description | Detail |
|---|---|---|
| Auto Failover | ISR replica promoted | No data loss |
| Recovery | Restart, catch up | Rejoin ISR |
| Replacement | New broker + reassign | Permanent loss |
Example: Check leadership after failure
kafka-topics.sh --bootstrap-server localhost:9092 \
--describe --under-replicated-partitions
9. Managing Disk Space
| Aspect | Description | Detail |
|---|---|---|
| Retention | Reduce to free space | time/bytes |
| Add Disk | Extra log.dirs | Capacity |
| Delete Records | Truncate old data | deleteRecords |
Example: Shrink retention
kafka-configs.sh --bootstrap-server localhost:9092 --alter \
--entity-type topics --entity-name bulky \
--add-config retention.ms=43200000
10. Configuring Rack Awareness
| Config | Description | Detail |
|---|---|---|
| broker.rack | AZ/rack identifier | Per broker |
| Spread | Replicas across racks | Fault isolation |
| Rack-Aware Fetch | Consume from local replica | client.rack |