카테고리 없음

🚀 Apache Kafka 업그레이드시 확인해야 할 사항

idea9329 2025. 3. 11. 13:42
반응형

 

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 버전 확인
  • 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를 안전하게 업그레이드하고 클러스터 안정성을 유지하세요! 🚀

반응형