Kafka를 업그레이드할 때는 데이터 손실 방지, 클러스터 안정성 유지, 클라이언트 호환성 등을 고려해야 합니다.
다음은 Kafka 업그레이드 전, 중, 후에 확인해야 할 주요 사항입니다.
✅ 1️⃣ 업그레이드 전 확인할 사항
📌 1. 현재 Kafka 버전 및 호환성 확인
Kafka는 메이저 버전 간의 직접 업그레이드가 불가능할 수도 있기 때문에 업그레이드 가능한 버전을 단계적으로 확인해야 합니다.
📌 2. 호환성 확인 (Client & Broker)
- 기존 Producer, Consumer, Connect, Streams API가 새로운 Kafka 버전과 호환되는지 확인
- 공식 Kafka Compatibility Matrix 참고: Apache Kafka Version Compatibility
📌 3. 업그레이드 경로 확인 (단계적 업그레이드 필요)
- 예제 (Kafka 2.3 → Kafka 3.6 업그레이드 시)
- 2.3 → 2.6 → 3.0 → 3.6 (직접 3.6으로 가면 안 됨)
- kafka-topics.sh --version
📌 4. 클러스터 상태 확인 (정상 작동 여부)
kafka-topics.sh --bootstrap-server <BROKER_IP>:9092 --describe
kafka-consumer-groups.sh --bootstrap-server <BROKER_IP>:9092 --list
- 모든 브로커가 정상적으로 가동 중인지 확인
- Replication, ISR (In-Sync Replicas) 상태 확인
- Consumer Group 오프셋 정상 확인
📌 5. Zookeeper 상태 확인
Kafka는 Zookeeper와 강하게 결합되어 있으므로, 먼저 Zookeeper가 정상 동작하는지 확인해야 합니다.
zkCli.sh
ls /brokers/ids # 모든 브로커 ID가 표시되는지 확인
✅ 정상적인 경우:
[0, 1, 2]
❌ 비정상적인 경우:
[]
➡ Zookeeper가 작동하지 않으면 Kafka 업그레이드 전에 먼저 해결 필요
📌 6. 데이터 백업 (필수)
Kafka 업그레이드 중 데이터 손실이 발생할 수 있으므로 백업이 필수
- 토픽 메타데이터 백업
kafka-topics.sh --bootstrap-server <BROKER_IP>:9092 --describe > topics-backup.txt
- Consumer Group 오프셋 백업
kafka-consumer-groups.sh --bootstrap-server <BROKER_IP>:9092 --describe > consumer-groups-backup.txt
- Config 백업
cp -r /etc/kafka /backup/kafka-config-$(date +%F)
✅ 2️⃣ Kafka 업그레이드 방법
Kafka 업그레이드는 Rolling Upgrade(브로커 하나씩 교체)를 사용해야 합니다.
📌 목표: 서비스 중단 없이 브로커를 하나씩 업그레이드
📌 1. 브로커 한 개씩 순차적으로 업그레이드
✅ 브로커 ID 확인
kafka-broker-api-versions.sh --bootstrap-server <BROKER_IP>:9092
➡ 브로커가 다운되면 해당 ID가 리스트에서 사라짐
✅ 브로커를 안전하게 중지
systemctl stop kafka
✅ Kafka 패키지 업그레이드
tar -xzf kafka_2.13-3.6.0.tgz -C /opt/kafka
✅ 새로운 Kafka 버전으로 설정 적용
cp /backup/kafka-config-$(date +%F)/server.properties /opt/kafka/config/
✅ 브로커 다시 시작
systemctl start kafka
✅ 새 버전으로 실행되고 있는지 확인
kafka-topics.sh --bootstrap-server <BROKER_IP>:9092 --describe
✅ 모든 브로커에 대해 1~2 단계를 반복
✅ 3️⃣ Kafka 업그레이드 후 확인해야 할 사항
📌 1. 클러스터 정상 작동 여부 확인
kafka-topics.sh --bootstrap-server <BROKER_IP>:9092 --describe
kafka-consumer-groups.sh --bootstrap-server <BROKER_IP>:9092 --list
✅ 모든 브로커가 연결되었는지 확인
✅ Consumer Group Offset이 정상적인지 확인
📌 2. Kafka Controller 확인
업그레이드 후, 클러스터 리더 브로커(Kafka Controller)가 정상 작동하는지 확인
kafka-configs.sh --bootstrap-server <BROKER_IP>:9092 --entity-type brokers --describe
📌 3. 기존 설정 변경 확인
- Kafka 설정 파일(server.properties)에서 deprecated(지원 종료된) 설정이 없는지 확인
- 변경된 설정이 있다면 공식 문서 확인 후 적용
📌 4. 클라이언트(Application) 테스트
- 기존 Producer/Consumer가 정상 작동하는지 테스트
- 애플리케이션에서 Kafka 메시지 송수신 테스트
kafka-console-producer.sh --bootstrap-server <BROKER_IP>:9092 --topic test-topic
kafka-console-consumer.sh --bootstrap-server <BROKER_IP>:9092 --topic test-topic --from-beginning
📌 5. 로그 확인 (에러 발생 여부 체크)
업그레이드 후 Kafka & Zookeeper 로그를 확인하여 오류 발생 여부 체크
✅ Kafka 로그 확인
journalctl -u kafka -n 100 --no-pager
✅ Zookeeper 로그 확인
journalctl -u zookeeper -n 100 --no-pager
✅ Kafka 업그레이드 체크리스트
단계작업 내용명령어
업그레이드 전 | 현재 Kafka & Zookeeper 버전 확인 | kafka-topics.sh --version |
업그레이드 경로 확인 | Kafka Compatibility Matrix 확인 | |
브로커 & Zookeeper 정상 상태 확인 | kafka-topics.sh --describe & zkCli.sh ls /brokers/ids | |
데이터 & 설정 백업 | kafka-topics.sh --describe > topics-backup.txt | |
업그레이드 중 | 브로커 하나씩 업그레이드 (Rolling Upgrade) | systemctl stop kafka && tar -xzf kafka_new_version.tgz |
설정 파일 유지 | cp /backup/kafka-config/server.properties /opt/kafka/config/ | |
브로커 재시작 | systemctl start kafka | |
업그레이드 후 | 클러스터 정상 작동 확인 | kafka-consumer-groups.sh --describe |
Kafka Controller 확인 | kafka-configs.sh --entity-type brokers --describe | |
클라이언트 테스트 (Producer/Consumer) | kafka-console-producer.sh --topic test | |
로그 확인 | journalctl -u kafka -n 100 --no-pager |
🚀 결론
✅ Kafka 업그레이드는 Rolling Upgrade(순차적 브로커 업그레이드) 방식으로 진행
✅ 데이터 백업 & 호환성 체크 필수
✅ Zookeeper가 정상 작동하는지 확인해야 클러스터가 안정적으로 유지됨
✅ 업그레이드 후 Producer/Consumer, Offset, Logs 체크 필수
🎯 이제 Kafka를 안전하게 업그레이드하고 클러스터 안정성을 유지하세요! 🚀