1. MirrorMaker란?
MirrorMaker는 Kafka 클러스터 간 데이터 복제를 지원하는 도구로, 주로 다음과 같은 상황에서 사용됩니다:
- 다중 데이터 센터 환경에서 데이터 복제
- 재해 복구(Disaster Recovery) 용도로 데이터 백업
- 데이터 마이그레이션 시 클러스터 간 데이터 이동
MirrorMaker는 기본적으로 프로듀서(Producer)와 컨슈머(Consumer)의 조합으로 동작하여, 한 클러스터에서 데이터를 읽어 다른 클러스터로 씁니다.
2. MirrorMaker의 아키텍처
MirrorMaker는 크게 두 가지 버전이 있습니다:
- MirrorMaker 1 (MM1): 초기 Kafka에 포함된 간단한 복제 도구로, 설정이 단순하지만 유연성이 떨어집니다.
- 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.size 및 linger.ms 조정으로 전송 효율성 향상
장애 처리 및 모니터링
- JMX를 통한 메트릭 수집 및 모니터링
- Prometheus와 Grafana를 활용한 시각화
5. 실전 활용 사례
다중 리전 데이터 복제
- AWS, GCP 등 다양한 클라우드 환경에서 리전 간 데이터 복제 구성
- 재해 복구 시나리오에 활용하여 고가용성 보장
데이터 마이그레이션
- 레거시 Kafka 클러스터에서 최신 버전 클러스터로 무중단 데이터 마이그레이션