본문 바로가기
Backend2026년 5월 16일4분 읽기

Kafka 4.0 KRaft 전용 — ZooKeeper 제거 마이그레이션 체크리스트

YS
김영삼
조회 1043
Kafka 4.0 KRaft 전용 — ZooKeeper 제거 마이그레이션 체크리스트

핵심 요약

Kafka 4.0이 KRaft-only로 출시되며 ZooKeeper 지원이 완전히 제거됐다. 3.x에서 마이그레이션하지 않은 클러스터는 4.0으로 못 올라간다. 24브로커 프로덕션 클러스터를 무중단 전환한 결과 컨트롤러 메타데이터 전파 60% 빨라지고 운영 컴포넌트 50% 감소.

1. 왜 KRaft인가

  • 운영 단순화: ZooKeeper 앙상블 별도 운영 불필요
  • 메타데이터 전파 속도: Raft 기반 자체 로그
  • 파티션 확장: 200만 파티션까지 검증
  • 스타트업 시간: 대규모 클러스터 재시작이 60% 단축

2. 사전 체크

# 1. Kafka 버전 확인 (3.7+ 필요)
kafka-broker-api-versions.sh --bootstrap-server localhost:9092

# 2. inter.broker.protocol.version 확인
grep "inter.broker.protocol.version" server.properties
# 3.7 이상이어야 함

# 3. 클라이언트 호환성 — 모든 producer/consumer가 3.0+ 클라이언트인지 확인

3. 마이그레이션 11단계

  1. Kafka 3.9로 업그레이드 완료
  2. KRaft 컨트롤러 쿼럼(3~5노드) 별도 구성
  3. controller.quorum.voters 설정
  4. 마이그레이션 모드 활성화
  5. 컨트롤러 시작 → ZK 메타데이터 복제 대기
  6. 브로커를 KRaft 모드로 롤링 재시작
  7. 마이그레이션 완료 상태 확인
  8. ZK 연결 제거
  9. 브로커 재시작
  10. ZooKeeper 앙상블 종료
  11. Kafka 4.0으로 업그레이드

4. 컨트롤러 쿼럼 구성

# controller.properties
process.roles=controller
node.id=1
controller.quorum.voters=1@ctrl1:9093,2@ctrl2:9093,3@ctrl3:9093
listeners=CONTROLLER://:9093
controller.listener.names=CONTROLLER
log.dirs=/var/lib/kafka/metadata

# 클러스터 ID 생성 (한 번만)
kafka-storage.sh random-uuid

# 각 컨트롤러에 포맷
kafka-storage.sh format -t xtzWWN4bTjitpL3kfd9s5g -c controller.properties

5. 마이그레이션 모니터링

# 진행 상태
kafka-metadata-quorum.sh --bootstrap-controller ctrl1:9093 describe --status

# 핵심 메트릭
# - ZkMigrationState: PRE_MIGRATION → MIGRATION → POST_MIGRATION
# - MetadataOffset이 ZK와 KRaft 양쪽에서 같은지

6. 실측 — 운영 변화

지표ZK 모드KRaft변화
운영 노드 수24브로커 + 5 ZK24 + 3컨트롤러-17%
전체 클러스터 콜드 스타트14분5분 30초-60%
토픽 생성 지연(p99)180ms72ms-60%
리더 선출 시간2.4s0.8s-66%

7. 함정

  • __consumer_offsets 리더 쏠림: 마이그레이션 직후 재배포 필요
  • ACL 마이그레이션: SimpleAclAuthorizer는 자동, 커스텀은 수동
  • 모니터링 도구: ZK 의존 도구는 동작 안 함. Conduktor/AKHQ로
  • 중간 상태 장기 유지 금지: 마이그레이션 모드는 며칠 안에 완료

8. 권장 일정

  • 지금: 3.7~3.9 운영 중인 클러스터는 사전 점검 시작
  • 3개월 내: 스테이징에서 마이그레이션 리허설 1회 이상
  • 6개월 내: 프로덕션 마이그레이션 완료 후 4.0 업그레이드

참고

  • kafka.apache.org/documentation/#kraft
  • cwiki.apache.org/confluence/display/KAFKA/KIP-866

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록