카테고리 없음

Kafka 클러스터 동기화 가능 여부 및 방법

idea9329 2024. 12. 4. 14:45
반응형

 

Kafka 클러스터 두 개를 동기화하는 것은 가능합니다. 이를 구현하기 위해 Apache Kafka의 MirrorMaker 2(MM2)를 활용할 수 있습니다. MirrorMaker 2는 Kafka의 데이터를 두 클러스터 간에 복제하는 도구로, 두 클러스터 간의 데이터 동기화를 지원합니다.


1. Kafka MirrorMaker 2 소개

Kafka MirrorMaker 2는 두 개 이상의 Kafka 클러스터 간에 데이터 복제를 수행할 수 있도록 설계된 도구입니다. 이를 통해 특정 주제(Topic)를 양방향 혹은 단방향으로 동기화할 수 있습니다.

주요 특징:

  • 단방향 복제: 한 클러스터에서 다른 클러스터로 데이터 복제.
  • 양방향 복제: 두 클러스터 간에 데이터를 동기화.
  • 필터링 및 매핑: 특정 토픽만 복제하거나 토픽 이름 변경 가능.
  • Checkpoints: 복제 상태를 확인하고 유지.

2. 구성 방법

요구 사항:

  1. 두 Kafka 클러스터가 네트워크 상에서 서로 접근 가능해야 합니다.
  2. 클러스터 간에 인증/보안 설정이 필요할 수 있습니다(SASL, SSL 등).

설정 절차:

  1. MirrorMaker 2 설치 및 구성
    MirrorMaker 2는 Kafka 배포판에 포함되어 있습니다.
  2. MirrorMaker 2 설정 파일 생성
    각 클러스터의 브로커(bootstrap servers) 정보를 설정 파일에 추가합니다.
    # 클러스터 A 설정
    clusters = clusterA, clusterB
    
    # 클러스터 A 상세 정보
    clusterA.bootstrap.servers = localhost:9092
    clusterA.replication.factor = 3
    
    # 클러스터 B 상세 정보
    clusterB.bootstrap.servers = remotehost:9092
    clusterB.replication.factor = 3
    
    # MirrorMaker 2 복제 설정
    replication.policy.class = org.apache.kafka.connect.mirror.DefaultReplicationPolicy
    
    # 복제할 토픽
    clusterA->clusterB.enabled = true
    clusterA->clusterB.topics = .*
    
    clusterB->clusterA.enabled = true
    clusterB->clusterA.topics = .*
  3. 예시: mm2.properties
  4. MirrorMaker 2 실행
    설정 파일을 바탕으로 MirrorMaker 2를 실행합니다.
  5. bin/connect-mirror-maker.sh mm2.properties
  6. 토픽 복제 확인
    MirrorMaker 2가 정상 작동하면, 소스 클러스터의 데이터가 대상 클러스터에 복제됩니다.

3. 주의 사항 및 한계

  1. 지연 시간: 두 클러스터가 네트워크로 연결되어 있으므로 복제 지연이 발생할 수 있습니다.
  2. Conflict Handling: 양방향 복제 시 동일한 토픽에 서로 다른 데이터가 존재하면 충돌 관리가 필요합니다.
  3. 성능: MirrorMaker 2의 성능은 복제할 데이터의 크기와 클러스터의 설정에 따라 달라질 수 있습니다.
  4. 모니터링 필요: 복제 상태를 모니터링하여 데이터 손실을 방지해야 합니다.

4. 대안

  • Confluent Replicator: Confluent Kafka에서 제공하는 상용 복제 솔루션으로, MirrorMaker 2보다 고급 기능을 지원합니다.
  • Custom Producers: 직접 Producer/Consumer를 구현하여 데이터 동기화를 처리하는 방법도 가능합니다.

Kafka 클러스터 동기화는 MirrorMaker 2를 통해 비교적 쉽게 구현할 수 있습니다. 추가적인 설정이 필요하다면 구체적인 네트워크 구성과 보안 요구 사항을 알려주시면 더 자세히 도와드리겠습니다! 🚀

반응형