Mereplikasi data dari kluster Kafka ke Azure Event Hubs menggunakan Apache Kafka Mirror Maker 2

Tutorial ini menunjukkan cara mereplikasi data dari kluster Kafka yang ada ke Azure Event Hubs menggunakan Mirror Maker 2.

Gambar yang menunjukkan alur peristiwa dari Kafka MirrorMaker ke Azure Event Hubs.

Catatan

Sampel ini tersedia di GitHub

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat namespace layanan Azure Event Hubs
  • Menyiapkan atau menggunakan kluster Kafka yang ada
  • Mengonfigurasi Kafka Mirror Maker 2
  • Jalankan Kafka Mirror Maker 2

Pengantar

Apache Kafka MirrorMaker 2.0 (MM2) dirancang untuk membuatnya lebih mudah untuk mencerminkan atau mereplikasi topik dari satu kluster Kafka ke kluster lainnya. Mirror Maker menggunakan kerangka kerja Kafka Connect untuk menyederhanakan konfigurasi dan penskalaan. Untuk informasi lebih rinci tentang Kafka MirrorMaker, lihat panduan Kafka Mirroring/MirrorMaker.

Karena Azure Event Hubs kompatibel dengan protokol Apache Kafka, Anda dapat menggunakan Mirror Maker 2 untuk mereplikasi data antara kluster Kafka yang ada dan namespace layanan Azure Event Hubs.

Mirror Maker 2 secara dinamis mendeteksi perubahan pada topik dan memastikan properti topik sumber dan target disinkronkan, termasuk offset dan partisi. Ini dapat digunakan untuk mereplikasi data dua arah antara kluster Kafka dan namespace layanan Azure Event Hubs.

Prasyarat

Untuk menyelesaikan tutorial ini, pastikan Anda memiliki:

  • Baca artikel Azure Event Hubs untuk Apache Kafka.
  • Langganan Azure. Jika Anda tidak memilikinya, buat akun gratis sebelum Anda mulai.
  • Java Development Kit (JDK) 1.7+
    • Di Ubuntu, jalankan apt-get install default-jdk untuk menginstal JDK.
    • Pastikan untuk mengatur variabel lingkungan JAVA_HOME untuk mengarahkan ke folder tempat JDK dipasang.
  • Unduh dan pasang arsip biner Maven
    • Di Ubuntu, Anda dapat menjalankan apt-get install maven untuk memasang Maven.
  • Git
    • Di Ubuntu, Anda dapat menjalankan sudo apt-get install git untuk memasang Git.
  • Distribusi Apache Kafka
    • Unduh distribusi Apache Kafka pilihan (yang harus berisi distribusi Mirror Maker 2.)

Membuat namespace layanan Azure Event Hubs

Namespace layanan Azure Event Hubs diperlukan untuk mengirim dan menerima dari layanan Azure Event Hubs apa pun. Lihat Membuat pusat aktivitas untuk petunjuk membuat namespace layanan dan pusat aktivitas. Pastikan untuk menyalin string sambungan Azure Event Hubs untuk digunakan nanti.

Mengkloning proyek contoh

Sekarang setelah Anda memiliki string koneksi Azure Event Hubs, kloning Azure Event Hubs untuk repositori Kafka dan navigasi ke mirror-maker-2 subfolder:

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

Menyiapkan atau menggunakan kluster Kafka yang ada

Jika Anda tidak memiliki kluster Kafka yang ada, gunakan panduan mulai cepat Kafka untuk menyiapkan kluster Kafka dengan pengaturan yang diinginkan (atau gunakan kluster Kafka yang ada). Untuk tujuan pengujian, Anda juga dapat membuat beberapa topik di kluster Kafka yang baru dibuat dan menerbitkan data kepada mereka.

Jika Anda sudah memiliki kluster Kafka lokal atau di layanan cloud Kafka terkelola, maka Anda dapat menggunakannya untuk mereplikasi data yang ada ke Azure Event Hubs.

Mengonfigurasi Kafka Mirror Maker 2

Distribusi Apache Kafka dilengkapi dengan connect-mirror-maker.sh skrip yang dibundel dengan pustaka Kafka yang mengimplementasikan kluster Mirror Maker 2 terdistribusi. Ini mengelola Connect workers secara internal berdasarkan file konfigurasi. Driver MirrorMaker secara internal membuat dan menangani pasangan setiap konektor – Konektor MirrorSource, Konektor MirrorSink, Konektor MirrorCheckpoint , dan Konektor MirrorHeartbeat.

  1. Untuk mengonfigurasi Mirror Maker 2 untuk mereplikasi data, Anda perlu memperbarui file kafka-to-eh-connect-mirror-maker.properties konfigurasi Mirror Maker 2 untuk menentukan topologi replikasi.

  2. kafka-to-eh-connect-mirror-maker.properties Dalam file konfigurasi, tentukan alias kluster yang Anda rencanakan untuk digunakan untuk kluster Kafka (sumber) dan Azure Event Hubs (tujuan).

     # cluster aliases 
     clusters = source, destination
    
  3. Kemudian tentukan informasi koneksi untuk sumber Anda, yang merupakan kluster Kafka Anda.

     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. Tentukan informasi koneksi untuk tujuan, yang merupakan namespace layanan Azure Event Hubs yang Anda buat.

     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. Aktifkan alur replikasi dari kluster Kafka sumber ke namespace layanan Azure Event Hubs tujuan.

     source->destination.enabled = true
     source->destination.topics = .*
    
  6. Perbarui faktor replikasi topik jarak jauh dan topik internal yang dibuat Mirror Maker di tujuan.

     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. Kemudian Anda menyalin kafka-to-eh-connect-mirror-maker.properties file konfigurasi ke direktori konfigurasi distribusi Kafka dan dapat menjalankan skrip Mirror Maker 2 menggunakan perintah berikut.

     ./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
    
  8. Setelah eksekusi skrip berhasil, Anda akan melihat topik dan peristiwa Kafka direplikasi ke namespace Layanan Pusat Aktivitas Anda.

  9. Untuk memverifikasi bahwa peristiwa berhasil masuk ke Azure Event Hubs yang mendukung Kafka, lihat statistik ingress di portal Azure, atau jalankan konsumen terhadap Azure Event Hubs.

Sampel

Lihat sampel berikut di GitHub:

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Event Hubs for Kafka, lihat artikel berikut ini: