Kafka

MirrorMaker2 Basic

재심 2023. 7. 24. 11:08

목차

    [참조]

    mirrorMaker2 내용: https://devidea.tistory.com/112

    mirrorMaker2 내용 + 구동방법: https://blog.voidmainvoid.net/293 

    mirrorMaker2 구동방식 분석: https://devidea.tistory.com/107 

     

    MirrorMaker1의 한계점과 2 release: https://devidea.tistory.com/70 

    MirrorMaker2의 성능테스트: https://devocean.sk.com/blog/techBoardDetail.do?ID=164371 

     

    MirrorMaker2 전체적인 정리

    Part1: https://www.instaclustr.com/blog/kafka-mirrormaker-2-theory/ 

    Part2: https://www.instaclustr.com/blog/apache-kafka-mirrormaker-2-practice/

    Part3: https://www.instaclustr.com/blog/apache-kafka-mirrormaker-2-practice/

     

    MirrorMaker2 활용사례: https://www.confluent.io/resources/kafka-summit-2020/getting-up-to-speed-with-mirrormaker-2/ 

     

    [MirrorMaker2 구성요소]

    • MirrorSourceConnector: 메시지 복제
    • MirrorHeartbeatConnector: source에서 target으로 잘 연결되는지 heartbeat 체크 
    • MirrorCheckpointConnector: consumer 오프셋 복제

    [MirrorMaker2의 요구사항]

    - Kafka connect framework와 관련 생태계와 어울어져야함

    - source, sink connector가 존재해야함

    - high-level driver을 통해 connector들을 제어할 수 있어야함

    - new topic, partiton에 대해 감지 할 수 있어야함

    - 두개 클러스터 사이에 topic configuration에 대한 정보를 자동으로 sync할 수 있어야함

    - Cluster상호간 동시 MirrorMaker 운영이 가능해야함

    - Metric정보를 제공해야함

    - legacy MirrorMaker모드로 운영 가능하게 되야함

    - 리밸런싱이 일어나지 않도록 해야함

     

    => 이를 바탕으로 MirrorMaker2가 런칭되었다.

     

    [MirrorMaker2의 특징]

    Remote Topic, Partitions

    두 cluster 간에 각 partition의 record의 순서 보장.

    두 cluster 간의 topic metadata 정보 일치. 

    동일한 파티션 번호 유지. 

     

    MirrorMaker2는 이러한 사항을 만족하며, Active-Active 일 때 토픽-renaming을 통해 무한 루프에 빠지는 등의 문제에서 자유로운 듯하다.

    참조: https://blog.voidmainvoid.net/293

    Aggregation

    2개 이상의 클러스터로 부터 메시지를 복제해올 경우 MirrorMaker에서 Aggragation해서 밀어넣을 수 있다. 

     

    Cycle Detection

    클러스터가 서로 미러링할 경우 토픽명 앞에 클러스터명 (A.topic, B.topic)을 붙여 무한 루프에 빠지는 것을 막음.

     

    Internal Topics

    source 클러스터에 미러링 관련 정보를 가진 토픽을 저장하고 관리한다.

    또한 체크포인트 정보와 오프셋 정보도 함께 기록한다고 한다. 

     

    Heartbeat topic에 저장되는 record schema:

    - Target cluster(String)

    - Source cluster(String) 

    - Timestamp(long)

     

    Checkpoint topic에 저장되는 field:

    - consumer group id (String)
    - topic (String) 
    - partition (int)
    - upstream offset (int)
    - downstream offset (int)
    - metadata (String)
    - timestamp

     

    Offset sync topic에 저장되는 정보:

    - topic (String)
    - partition (int)
    - upstream offset (int)
    - downstream offset (int)

     

    [MirrorMaker2를 구축하는 방법 4가지]

    • Dedicated MirrorMaker Cluster: 커넥트가 별도로 없는 경우 전용 클러스터를 구축하는 듯.
    • Distributed Connector: 기존 커넥트 사용
    • Standalone Connector: 기존 커넥트 사용 (Single Mode)
    • Legacy Mode (스크립트 실행): kafka-mirror-maker.sh 스크립트를 실행. 
    주제 내용 O/X 설명
    토픽 key,header,value 정상 복제 여부 O  
    토픽 오프셋 번호 유지 여부 X 토픽 오프셋은 맞춰주지 않으나 checkpoint를 통해 source,target의 오프셋 정보를 표시해줌
    Consumer-group 복제 방식 O  
    Consumer-group Consumer-group offset 유지 여부 X UpStream, DownStream을 통해 Consumer-group정보 자체도 복제해준다. 
    fail over     Target에 이슈가 있는 경우 메시지가 중복 복제될 가능성이 존재함. 

     

    'Kafka' 카테고리의 다른 글

    KRaft  (0) 2023.11.28
    Kafka Cruise-Control 사용해보기  (0) 2023.08.31
    MirrorMaker2 - 테스트  (0) 2023.07.24
    클러스터간 메시지 복제  (0) 2023.07.24
    Kafka KRaft Protocol 정리  (0) 2023.05.28