카프카 리플리케이션 5가지 기능

카프카 리플리케이션 5가지 기능

카프카 리플리케이션은 카프카가 안정적으로 메인 허브 역할을 하게 하는 핵심 기능입니다. 중앙 데이터 허브로서 안정적인 서비스가 가능하도록 구성되어 있습니다. 어떻게 안정성을 확보하는지 리플리케이션에 대해 살펴보도록 하겠습니다.

카프카 관련 궁금하신 내용은 아파치 카프카 구성요소 및 핵심기능 6가지를 참고부탁드립니다.

1) 카프카 리플리케이션 동작

  • 토픽생성 시 필수값으로 replication factor 옵션 설정.
#create topic
kafka-topic.sh --bootstrap-server pf-kafka01.sample.test:9092 --create --topic pf-test01 --partition 1 --replication-factor 3

# check
kafka-topic.sh --bootstrap-server pf-kafka01.sample.test:9092 --topic pf-test01 --describe
  • 카프카 리플리케이션 대상은 토픽이 아닌 토픽을 구성하는 파티션들입니다.
  • 토픽 pf-test01 으로 test message01 내용을 전송해보겠습니다.
kafka-console-producer.sh --bootsrap-server pf-kafka01.sample.test:9092 --topic test01
> test message01
  • 전송된 토픽은 아래와 같이 확인이 가능합니다.
kafka-dump-log.sh --print-data-log --file /data/kafka-logs/pf-test01-@/00000.log

2) 리더와 팔로워

  • 프로듀서는 리더 파티션에게만 메세지를 전달합니다. 그리고 컨슈머도 리더로부터 메세지를 가져옵니다.
  • 팔로워는 리더가 장애가 있을 경우 리더의 역할을 합니다. 파티션의 리더가 새로운 메세지를 잘 받았는지 확인하고, 새로운 메세지가 있다면 팔로워는 자신에게 복제합니다.

3) ISR 그룹

  • 리더와 팔로워는 ISR(InSyncReplica)라는 논리적 그룹으로 묶여 있습니다.
  • 해당 그룹 안에 있는 팔로워만 리더가 될 수 있는 자격이 주어집니다.
  • 리더는 팔로워가 복제를 잘 하고 있는지 확인해서 복제 장애가 있으면 ISR 그룹에서 제거합니다.
  • 복제가 잘 이루어지면 리더는 커밋 표시로 변경됩니다. 마지막 커밋 오프세 위치는 하이워터마크(hight water mark)라고 칭합니다.
  • 커밋되었다는 것은 리플리케이션 팩터 수의 모든 리플리케이션이 전부 메시지를 저장했음을 의미합니다.
  • 모든 브로커는 재시작될 때, 커밋된 메시지를 유지하기 위해 로컬 디스크의 replication-offset-checkpoint 라는 파일에 마지막 커밋 오프셋 위치를 저장합니다.
# 리플리케이션-오프셋-첵포인트 확인
cat /data/kafka-logs/replication-offset-checkpoint

# 결과
> pf-test01 @ 1

# test message02 를 넣은 후의 결과는 아래와 같습니다.
> pf-test01 @ 2
  • 위의 예제처럼 커밋이 되면 오프셋값이 순차적으로 증가합니다. 이 값을 가지고 리플케이션된 브로커의 오프셋값이 동일한지 확인이 되면 정상 운영 중이라는 의미입니다.

4) 리더와 팔로워의 단계별 카프카 리플리케이션 동작

  • replication factor 3 설정은 pf-test01 토픽이 1개의 파티션과 3개의 리플리케이션 팩터을 갖고 있습니다.
  • 래빗MQ 에서의 복제 완료 ACK를 리더와 팔로워에서는 성능 높이기 위해 사용하지 않음.
  • 팔로워는 0 복제를 완료하면 리더에게 1번 오프셋 요청을 보냅니다. 리더는 이 1번 오프셋으로 팔로워가 0번 오프셋의 복제를 완료했음을 알 수 있고 리더는 0번 메시지에 대핸 커밋 상태로 변경합니다. 만약 팔로워에서 0번 오프셋 요청이 온다면 0번 복제가 완료되지 않았다는 것이므로 리더에서 0번은 커밋 상태가 아닙니다.
  • 리더의 팔로워에 푸쉬 방식이 아닌 팔로워에서 풀하는 방식이므로 리더의 부하가 적습니다.

5) 리더에포크와 복구

  • LeaderEpoch 는 팔로워가 장애 시 재시작될 때 리더의 최신 메세지를 누락없이 얻어올 수 있는 기능입니다.
  • 리더가 최신 데이타를 얻어오지 못한 상태로 팔로워가 장애가 나면 팔로워는 재시작 시 리더에포크를 요청합니다. 그럼 리더의 최신 오프셋을 가져와 팔로워는 리더와 최신 상태를 유지할 수 있습니다.

카프카 리플리케이션 공식 문서는 여기를 참고바랍니다.

좀더 자세한 설명을 원하시는 분은 실전 카프카 개발부터 운영까지 도서를 참고바립니다.


참고 : 실전 카프카 개발부터 운영까지

아래는 카프카 관련 국내 도서입니다.

실전 카프카 개발부터 운영까지:데이터플랫폼의 중추 아파치 카프카의 내부동작과 개발 운영 보안의 모든것, 책만 아파치 카프카의 모든 것 세트 : 카프카 데이터 플랫폼의 최강자+실전 카프카 개발부터 운영까지, 책만 (서점추천) 헤드 퍼스트 디자인 패턴 + 실전 카프카 개발부터 운영까지 (전2권) (서점추천) 24단계 실습으로 정복하는 쿠버네티스 + 실전 카프카 개발부터 운영까지 (전2권), 위키북스 (서점추천) 데이터 파이프라인 핵심 가이드 + 실전 카프카 개발부터 운영까지 (전2권) (서점추천) 몽고DB 완벽 가이드 + 실전 카프카 개발부터 운영까지 (전2권) (서점추천) 클린 코드의 기술 + 실전 카프카 개발부터 운영까지 (전2권), 영진닷컴 (서점추천) 카프카 핵심 가이드 + 디지털 플랫폼 전략 수립을 위한 쿠버네티스 실전 활용서 (전2권), 제이펍 아파치 카프카 애플리케이션 프로그래밍 with 자바:카프카의 개념부터 스트림즈 커넥트 스프링 카프카까지, 비제이퍼블릭 카프카 핵심 가이드 개정증보판, 제이펍 실전 아파치 카프카:애플리케이션 개발부터 파이프라인 사물인터넷 데이터 허브 구축까지, 한빛미디어 카프카 데이터 플랫폼의 최강자:실시간 비동기 스트리밍 솔루션 Kafka의 기본부터 확장 응용까지, 책만 카프카 스트림즈와 ksqlDB 정복:실시간 데이터 처리, 에이콘출판 카프카 핵심가이드:실시간 데이터와 스트림 프로세싱, 제이펍

“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”

Back to top