Apache Kafka Mirror Maker 2를 사용하여 Kafka 클러스터에서 Event Hubs로 데이터 복제

이 자습서에서는 Mirror Maker 2를 사용하여 기존 Kafka 클러스터에서 Azure Event Hubs로 데이터를 복제하는 방법을 보여 줍니다.

Image showing the flow of events from Kafka MirrorMaker to Event Hubs.

참고 항목

이 샘플은 GitHub에서 사용할 수 있습니다.

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • Event Hubs 네임스페이스 만들기
  • 기존 Kafka 클러스터 설정 또는 사용
  • Kafka Mirror Maker 2 구성
  • Kafka Mirror Maker 2 실행

소개

Apache Kafka MirrorMaker 2.0(MM2)은 한 Kafka 클러스터에서 다른 Kafka 클러스터로 토픽을 보다 쉽게 미러링하거나 복제할 수 있도록 설계되었습니다. Mirror Maker는 Kafka Connect 프레임워크를 사용하여 구성 및 크기 조정을 간소화합니다. Kafka MirrorMaker에 대한 자세한 내용은 Kafka 미러링/MirrorMaker 가이드를 참조하세요.

Azure Event Hubs는 Apache Kafka 프로토콜과 호환되므로 Mirror Maker 2를 사용하여 기존 Kafka 클러스터와 Event Hubs 네임스페이스 간에 데이터를 복제할 수 있습니다.

Mirror Maker 2는 토픽의 변경 내용을 동적으로 탐지하고 오프셋 및 파티션을 포함하여 원본 및 대상 토픽 속성이 동기화되도록 합니다. Kafka 클러스터와 Event Hubs 네임스페이스 간에 양방향으로 데이터를 복제하는 데 사용할 수 있습니다.

필수 조건

이 자습서를 완료하려면 다음이 설치되어 있어야 합니다.

  • Apache Kafka용 Event Hubs 문서를 참조하세요.
  • Azure 구독 구독이 없으면 시작하기 전에 계정을 만드세요.
  • JDK(Java Development Kit) 1.7+
    • Ubuntu에서 apt-get install default-jdk를 실행하여 JDK를 설치합니다.
    • JAVA_HOME 환경 변수가 반드시 JDK가 설치된 폴더를 지정하도록 설정합니다.
  • Maven 이진 보관 파일을 다운로드하여 설치합니다.
    • Ubuntu에서 apt-get install maven을 실행하여 Maven을 실행할 수 있습니다.
  • Git
    • Ubuntu에서 sudo apt-get install git를 실행하여 Git를 실행할 수 있습니다.
  • Apache Kafka 배포
    • 기본 Apache Kafka 배포를 다운로드합니다(Mirror Maker 2 배포를 포함해야 함).

Event Hubs 네임스페이스 만들기

Event Hubs 서비스와 통신하려면 Event Hubs 네임스페이스가 필요합니다. 네임스페이스 및 이벤트 허브를 만드는 방법에 대한 지침은 이벤트 허브 만들기를 참조하세요. 나중에 사용하기 위해 Event Hubs 연결 문자열을 복사합니다.

프로젝트 예제 복제

이제 Event Hubs 연결 문자열이 있으므로 Kafka용 Azure Event Hubs 리포지토리를 복제하고 mirror-maker-2 하위 폴더로 이동합니다.

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/mirror-maker-2

기존 Kafka 클러스터 설정 또는 사용

기존 Kafka 클러스터가 없는 경우 Kafka 빠른 시작 가이드를 사용하여 원하는 설정으로 Kafka 클러스터를 설정하거나 기존 Kafka 클러스터를 사용합니다. 테스트 목적으로 새로 만든 Kafka 클러스터에 몇 가지 토픽을 만들고 데이터를 게시할 수도 있습니다.

온-프레미스 또는 관리되는 Kafka 클라우드 서비스에 기존 Kafka 클러스터가 이미 있는 경우 이를 사용하여 기존 데이터를 Event Hubs에 복제할 수 있습니다.

Kafka Mirror Maker 2 구성

Apache Kafka 배포에는 분산 Mirror Maker 2 클러스터를 구현하는 Kafka 라이브러리와 함께 번들링된 connect-mirror-maker.sh 스크립트가 함께 제공됩니다. 이 스크립트는 구성 파일을 기반으로 내부적으로 Connect 작업자를 관리합니다. 내부적으로 MirrorMaker 드라이버는 MirrorSource Connector, MirrorSink Connector, MirrorCheckpoint ConnectorMirrorHeartbeat Connector와 같은 각 커넥터의 쌍을 만들고 처리합니다.

  1. 데이터를 복제하도록 Mirror Maker 2를 구성하려면 Mirror Maker 2 구성 파일 kafka-to-eh-connect-mirror-maker.properties를 업데이트하여 복제 토폴로지를 정의해야 합니다.

  2. kafka-to-eh-connect-mirror-maker.properties 구성 파일에서 Kafka 클러스터(원본) 및 Event Hubs(대상)에 사용할 클러스터 별칭을 정의합니다.

     # cluster aliases 
     clusters = source, destination
    
  3. 그런 다음, 원본에 대한 연결 정보(Kafka 클러스터)를 지정합니다.

     source.bootstrap.servers = your-kafka-cluster-hostname:9092
     #source.security.protocol=SASL_SSL
     #source.sasl.mechanism=PLAIN
     #source.sasl.jaas.config=<replace sasl jaas config of your Kafka cluster>;
    
  4. 사용자가 만든 Event Hubs 네임스페이스인 대상에 대한 연결 정보를 지정합니다.

     destination.bootstrap.servers = <your-enventhubs-namespace>.servicebus.windows.net:9093
     destination.security.protocol=SASL_SSL
     destination.sasl.mechanism=PLAIN
     destination.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username='$ConnectionString' password='<Your Event Hubs namespace connection string.>';
    
  5. 원본 Kafka 클러스터에서 대상 Event Hubs 네임스페이스로의 복제 흐름을 사용하도록 설정합니다.

     source->destination.enabled = true
     source->destination.topics = .*
    
  6. Mirror Maker가 대상에서 만드는 원격 토픽 및 내부 토픽의 복제 계수를 업데이트합니다.

     replication.factor=3
    
     checkpoints.topic.replication.factor=3
     heartbeats.topic.replication.factor=3
     offset-syncs.topic.replication.factor=3    
    
     offset.storage.replication.factor=3
     status.storage.replication.factor=3
     config.storage.replication.factor=3
    
  7. 그런 다음, kafka-to-eh-connect-mirror-maker.properties 구성 파일을 Kafka 배포의 구성 디렉터리에 복사하고 다음 명령을 사용하여 Mirror Maker 2 스크립트를 실행할 수 있습니다.

     ./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
    
  8. 스크립트를 성공적으로 실행하면 Kafka 토픽 및 이벤트가 Event Hubs 네임스페이스에 복제되는 것을 볼 수 있습니다.

  9. 이벤트가 Kafka 지원 Event Hubs에 도달하는지 확인하려면 Azure Portal에서 수신 통계를 살펴보거나 Event Hubs에 대해 소비자를 실행합니다.

샘플

GitHub에서 다음 샘플을 참조하세요.

다음 단계

Kafka용 Event Hubs에 대해 자세한 내용은 다음 문서를 참조하세요.