본문 바로가기

OSS

[Apache Kafka] 브로커, 복제, ISR 이란?

반응형

아파치 카프카는 고성능 데이터 스트리밍을 위한 플랫폼으로, 그 핵심 기능 중 하나는 복제(replication)입니다. 이 기능은 시스템의 내구성과 가용성을 크게 향상시키며, 브로커 장애가 발생했을 때도 데이터의 안정성을 보장하고 서비스의 연속성을 유지합니다.

브로커와 복제

  • 브로커의 역할: 카프카의 브로커는 카프카가 설치된 서버 단위를 의미하며, 클러스터의 일부입니다. 각 브로커는 하나 이상의 토픽 파티션을 관리하고, 데이터의 복제본을 유지합니다.
  • 리플리케이션의 중요성: 카프카에서는 하나의 토픽 파티션을 여러 브로커에 걸쳐 복제할 수 있습니다. 예를 들어, replication 설정이 3이라면, 원본 데이터와 두 개의 복제본이 존재합니다. 이는 데이터의 안정성을 보장하며, 브로커 장애 발생 시 빠른 복구를 가능하게 합니다.

리더(Leader)와 팔로워 파티션(Follower Partition)

  • 리더 파티션: 각 파티션 그룹에서 하나의 리더 파티션이 있으며, 모든 데이터 쓰기 및 읽기 요청의 처리를 담당합니다.
  • 팔로워 파티션: 리더 파티션의 데이터를 복제하여 저장하는 파티션들입니다. 이들은 리더의 데이터를 실시간으로 복제하며, 리더 파티션이 실패할 경우 이 중 하나가 새로운 리더로 승격될 수 있습니다.
  • ISR(In-sync Replicas): ISR은 리더 파티션과 동기화 상태를 유지하고 있는 모든 팔로워 파티션을 지칭합니다. 모든 복제본이 최신 상태를 유지하는 것이 중요하며, ISR 목록에 속해 있어야 합니다.

프로듀서의 Ack 옵션

  • Ack=0: 프로듀서는 리더 파티션에 데이터를 전송하고, 성공적으로 저장되었는지 확인하지 않습니다. 이는 전송 속도는 빠르지만 데이터 유실의 위험이 있습니다.
  • Ack=1: 프로듀서는 리더 파티션에 데이터를 전송하고, 리더로부터의 응답을 기다립니다. 하지만 다른 복제본의 상태는 확인하지 않습니다.
  • Ack=all: 이 옵션을 사용하면, 모든 ISR 팔로워 파티션에서의 복제를 확인 후에만 데이터 전송이 완료됩니다. 이는 데이터 유실의 가능성을 최소화하지만 처리 속도는 느립니다.

리플리케이션 팩터(Replication Factor)의 선택

리플리케이션 팩터(Replication Factor)는 클러스터 내의 브로커 수와 밀접한 관계가 있습니다. 일반적으로 브로커 수에 맞추어 리플리케이션 팩터를 설정하는 것이 권장됩니다. 예를 들어, 3개 이상의 브로커가 있는 환경에서는 리플리케이션 팩터를 3으로 설정하여 각 파티션의 복제본이 최소 세 개가 되도록 합니다.

고려해야 할 요소

  • 데이터 보관 정책: 데이터량과 보관 기간(retention period)은 카프카 설정에서 중요하게 관리해야 할 요소입니다. 예를 들어, log.retention.hours 또는 log.retention.size를 통해 얼마나 오래 데이터를 저장할지 결정할 수 있습니다.
  • 서버 장애 대비: 서버의 장애는 예기치 않게 발생할 수 있으므로, 높은 가용성을 유지하기 위해 리플리케이션과 데이터 보관 정책을 적절히 설정해야 합니다.

결론

아파치 카프카의 리플리케이션 기능은 데이터의 안정성과 시스템의 가용성을 보장하는 데 중요한 역할을 합니다. 효과적인 리플리케이션 관리는 카프카 시스템의 성능과 신뢰성을 크게 향상시킬 수 있으며, 장애 발생 시 빠른 데이터 복구와 시스템 복원을 가능하게 합니다.





반응형