🕰️ 작성일 : 2024.11.15
고객사 배경 및 문의사항
- 문의사항 : 기존 시스템의 Kafka에 들어오는 주문 데이터를 MirrorMaker2로 Amazon MSK로 실시간 동기화 예정입니다. 동기화 대상 데이터는 초당 700 TPS(700개의 메시지)의 트래픽이 유입되고 메시지당 크기 1KB로, 초당 700KB가 유입됩니다. MirrorMaker2의 초당 처리량이 현재 동기화 아키텍처 요구사항을 만족할 수 있는지 궁금합니다.
Amazon MSK Connect에서 MirrorMaker 2.0 활용 방법
- 사전 준비사항 : Apache Kafka와 MSK Connect에는 MirrorMaker2 라이브러리가 기본 제공되므로 이 커넥터를 위해 별도의 .jar 파일을 추가할 필요는 없습니다. 아래 스크립트를 CloudShell에서 실행하시면 MirrorMaker2를 MSK Connect에 추가 할 수 있습니다.
mkdir mm2
zip mm2.zip mm2
aws s3 cp mm2.zip s3://{your_s3_bucket}/mm2.zip
aws kafkaconnect create-custom-plugin \\
--name "mirrormaker2" \\
--content-type "ZIP" \\
--location s3Location="{bucketArn=arn:aws:s3:::{your_s3_bucket},fileKey=mm2.zip}" \\
--description "MirrorMaker 2.0 plugin for MSK Connect"

- MirrorMaker2.0 구성
아래 3개의 Connector들을 각각 생성하여 MirrorMaker2.0의 구성을 완료합니다.
- MirrorSourceConnector : Source 클러스터의 토픽 레코드들을 Target 클러스터로 복제합니다.
- MirrorCheckpointConnector : __consumer_offsets과 동기화하여 Consumer의 Offset checkpoint를 Target 클러스터로 복제합니다.
- MirrorHeartbeatConnector : Source 클러스터의 Heartbeat 체크 결과를 Target 클러스터로 복제합니다.
MSK Connect(MirrorMaker2)를 통한 복제 테스트
테스트 아키텍처

- Producer Instance에서 초당 1KB의 메세지를 2,000개의 메세지를 Source Cluster에 전달
- Topic : mirrormaker2
- Partitions : 3
- Replicas : 2
- MirrorSourceConnector를 통해 Target MSK로 복제
- Amazon CloudWatch를 통해 아래 지표 확인
- MirrorMaker2는 별도의 Consumer Group 설정이 현재 불가하여 Consumer Lag 지표에 대해 모니터링이 불가능함.
- SourceCluster에 대한
Total Messages/s
및 Total Bytes/s
지표 확인
- TargetCluster에 대한
Total Messages/s
및 Total Bytes/s
지표 확인 및 Source Cluster와 비교
테스트 환경
- MSK Instance Class :
kafka.m7g.2xlarge
(8vCPU, 32GiB, 12.5Gbps)
- MSK Connect MCU :
- 작업자당 MCU 수 :
2(2vCPU, 8GiB)
Autoscaled Mode
from 1 to 10
- MirrorMaker2 SourceConnector Properties