Kafka

클러스터간 메시지 복제

재심 2023. 7. 24. 10:39

목차

     

    카프카 클러스터간 복제를 하는 방법은 다양한 듯 한데, 어떤 방법과 도구를 사용하는 것이 좋을지 나름대로 정리해본다.

    [메시지 복제 도구 후보]

    도구 내용 비고
    Confluent Connect Replicator Control-Center에서 별도의 메뉴로 제공.  상용
    Apache Kafka MirrorMaker1 Producer/Consumer API를 호출하는 형태로 동작.
    MirrorMaker1의 단점들이 MirrorMaker2로 보완되어 출시
    오픈소스
    Apache Kafka MirrorMaker2 Connector 형태로 동작. 
    Apache kafka 2.4부터 릴리즈. 오픈소스.
    오픈소스
    Logstash 단순 메시지 복제. 키, 헤더 기타 정보 복제 X 오픈소스
    Fluentd Logstash와 유사 오픈소스
    Flink Application 구현 필요 오픈소스
    Custom Connector 자체 Custom Connector 구현  직접 구현
    ...    

    [Replicator vs MirrorMaker 비교]

    Apache Kafka 초기에는 클러스터간 데이터 복제는 단순히 데이터를 이동하기만 할 뿐 순서보장 등 추가적인 기능이 없었다고 한다. 

    하지만 Kafka를 사용할 때 단순히 메시지 복제가 아닌 추가적인 요구사항을 갖게되고, 여러 업체들이 MirrorMaker의 기능 이상을 가진 자체 솔루션을 보유하게 되었다. 

     

    그리하여 Confluent에서도 Replicator라는 상용 솔루션을 런칭하게 되었다. 

    MirrorMaker1 당시 Replicator의 기능이 MirrorMaker의 단점들을 많이 보완해오고 있었으나 MirrorMaker2에서 이러한 단점들을 많이 보완한 듯 하다. 

     

    아래는 MirrorMaker1 당시의 비교표 (MirrorMaker2에서는 많은 부분이 보완된듯하다) 

    https://docs.huihoo.com/apache/kafka/confluent/3.2/multi-dc/mirrormaker.html

     

    Apache Kafka’s Mirror Maker — Confluent Platform 3.2.2 documentation

    Lets start with an overview of features that exist in Replicator and MirrorMaker: * MirrorMaker only supports regular expressions for topic selection, not lists. MirrorMaker can auto-create topics if the destination Kafka cluster is configured for auto top

    docs.huihoo.com

     

    Feature Benefit MirrorMaker Replicator
    Data replication Real-time event streaming between Kafka clusters and data centers Yes Yes
    Schema replication Integrate with Confluent Schema Registry for multi-dc data quality and governance Yes Yes
    Connect replication Manage data integration across multiple data centers Yes Yes
    Flexible topic selection Select topics with white-lists, black-lists and regular expressions Partial* Yes
    Auto-create topics New topics are automatically detected and replicated Partial* Yes
    Add new partitions New partitions are automatically detected and replicated No Yes
    Configuration replication Identical topic configuration between the two clusters No Yes
    Single Message Transformations Filter, modify and route events on the fly No Yes
    Auto-scale Scale replication processes as Kafka traffic increases with a single configuration. No Yes
    Active-active replication Redirect events to avoid infinite replication loops in active-active configurations No Yes
    Aggregate cluster One management point for replicating more than a single cluster No Yes
    Failover Automatically replicate offsets for consumer failover No Yes
    Control Center integration Manage and monitor replication via Control Center UI No Yes
    License   Apache Proprietary

    [MirrorMaker1의 한계]

    정적 화이트리스트, 블랙리스트

    복제 대상이 되는 토픽을 선정하고 사용하다가 대상 토픽이 변경되면 mirrormaker를 반드시 재시작해줘야 한다. 

     

    토픽 속성 동기화 누락

    대상 클러스터에 토픽을 생성할 때 대상 클러스터의 기본 설정에 맞춰 토픽을 생성하여 기존 토픽의 속성값을 무시한다. 

    ex) 토픽 파티션은 4인데, 클러스터 기본설정은 2인경우 2로 토픽이 생성된다. 

     

    Cycle을 피하기위한 토픽명 지정

    단순히 Active-Passive 구조일 때는 대상 토픽을 복제하면된다. 하지만 Active-Active같이 양방향 복제인 경우 동일한 토픽명을 사용할 때 무한루프에 빠지는 문제가 있었다. 

     

    리밸런싱으로 인한 확장성(Scalability) 및 처리량(Throughput) 제한

    MirrorMaker1은 HIgh level Consumer를 사용하고, 이로 인해 토픽 파티션이 늘어난다거나할 때 리밸런싱이 발생한다. 이 때 메시지 복제자체가 중단되는 현상이 발생한다. 

     

    기타

    • 모니터링 부족
    • failover 기능 부족
    • exactly-once 보장 부족 

     

    => MirrorMaker2에서는 이러한 단점들을 보완하여 출시하였다고 한다. 

    => 정리해보면 MirrorMaker1 → 기능단점이 많음 → Replicator로 보완 → MirrorMaker2 (MirrorMaker1의 단점보완 + Replicator 에서 영감을 받음) 인듯하다. 

     

     

    'Kafka' 카테고리의 다른 글

    MirrorMaker2 Basic  (0) 2023.07.24
    MirrorMaker2 - 테스트  (0) 2023.07.24
    Kafka KRaft Protocol 정리  (0) 2023.05.28
    Performance Management  (0) 2023.04.16
    Kafka Fundamental Hands On  (0) 2023.02.04