Apache Kafka의 MirrorMaker: 대규모 데이터 복제를 위한 강력한 도구

숭맹이·2025년 2월 3일
0

1. MirrorMaker란?

MirrorMaker는 Kafka 클러스터 간 데이터 복제를 지원하는 도구로, 주로 다음과 같은 상황에서 사용됩니다:

  • 다중 데이터 센터 환경에서 데이터 복제
  • 재해 복구(Disaster Recovery) 용도로 데이터 백업
  • 데이터 마이그레이션 시 클러스터 간 데이터 이동

MirrorMaker는 기본적으로 프로듀서(Producer)컨슈머(Consumer)의 조합으로 동작하여, 한 클러스터에서 데이터를 읽어 다른 클러스터로 씁니다.


2. MirrorMaker의 아키텍처

MirrorMaker는 크게 두 가지 버전이 있습니다:

  1. MirrorMaker 1 (MM1): 초기 Kafka에 포함된 간단한 복제 도구로, 설정이 단순하지만 유연성이 떨어집니다.
  2. MirrorMaker 2 (MM2): Kafka 2.4.0부터 도입된 새로운 버전으로, Kafka Connect 프레임워크를 기반으로 하며 향상된 기능과 유연성을 제공합니다.

MirrorMaker 1의 아키텍처

  • 단순한 컨슈머-프로듀서 모델
  • 병렬 처리 제한 및 장애 처리 기능 부족
  • 제한된 모니터링 및 관리 기능

MirrorMaker 2의 아키텍처

  • Kafka Connect 기반: 다양한 커넥터와 호환 가능
  • 자동 토픽 생성 및 ACL 동기화
  • 체크포인트 및 오프셋 동기화로 데이터 일관성 유지
  • 향상된 장애 처리 및 모니터링 기능

3. MirrorMaker 2 설정 및 구성

기본 설정 파일 구조

# source-cluster.properties
bootstrap.servers=source-kafka-broker:9092
group.id=mirror-maker-group

# target-cluster.properties
bootstrap.servers=target-kafka-broker:9092

# mm2.properties
clusters=source, target
source->target.enabled=true
source.bootstrap.servers=source-kafka-broker:9092
target.bootstrap.servers=target-kafka-broker:9092

# 복제할 토픽 지정
source->target.topics=important-topic-.*

실행 명령어

bin/connect-mirror-maker.sh config/mm2.properties

4. 고급 설정 및 최적화

병렬성 조정

  • tasks.max 설정을 통해 병렬 처리 수 조정
  • 클러스터 성능에 맞게 튜닝 필요

네트워크 최적화

  • compression.type 설정으로 네트워크 대역폭 절약
  • batch.sizelinger.ms 조정으로 전송 효율성 향상

장애 처리 및 모니터링

  • JMX를 통한 메트릭 수집 및 모니터링
  • PrometheusGrafana를 활용한 시각화

5. 실전 활용 사례

다중 리전 데이터 복제

  • AWS, GCP 등 다양한 클라우드 환경에서 리전 간 데이터 복제 구성
  • 재해 복구 시나리오에 활용하여 고가용성 보장

데이터 마이그레이션

  • 레거시 Kafka 클러스터에서 최신 버전 클러스터로 무중단 데이터 마이그레이션
profile
👨🏻‍💻 Backend Developer

0개의 댓글