Tutorial ini menunjukkan cara mereplikasi data antar-cluster Managed Service untuk Apache Kafka, dengan menggunakan konektor Sumber MirrorMaker 2.0.
Cluster dapat berada dalam project yang sama atau dalam project yang berbeda, dan dapat berada di region yang sama atau region yang berbeda. Untuk tutorial ini, Anda akan menyiapkan replikasi di seluruh region, tetapi dalam project yang sama. Namun, langkah-langkahnya sama untuk kombinasi lainnya.
Arsitektur
Untuk skenario ini, ada tiga cluster:
Cluster Kafka yang datanya direplikasi. Cluster ini disebut cluster sumber, karena merupakan sumber data.
Cluster Kafka tempat data yang direplikasi ditulis. Cluster ini disebut target cluster.
Connect cluster, yang memungkinkan Anda membuat dan mengelola konektor Sumber MirrorMaker 2.0.
Cluster Connect dilampirkan ke cluster target. Untuk meminimalkan latensi operasi tulis, tempatkan cluster Connect di region yang sama dengan cluster target.
Diagram berikut menunjukkan komponen ini:

Replikasi data dilakukan oleh konektor Sumber MirrorMaker 2.0. Dua konektor MirrorMaker 2.0 lainnya bersifat opsional untuk skenario ini:
Konektor Checkpoint MirrorMaker 2.0: Memungkinkan failover yang lancar, dengan memastikan bahwa konsumen di cluster target dapat melanjutkan pemrosesan dari titik yang sama dengan cluster sumber.
Konektor Detak Jantung MirrorMaker 2.0: Membuat pesan detak jantung berkala di cluster Kafka sumber, yang memungkinkan Anda memantau kondisi dan status replikasi data.
Tutorial ini tidak menggunakan konektor opsional ini. Untuk mengetahui informasi selengkapnya, lihat Kapan harus menggunakan MirrorMaker 2.0.
Sebelum memulai
Konsol
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Managed Kafka API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Managed Kafka API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Pastikan Anda memiliki peran berikut di project: Managed Kafka Cluster Editor, Managed Kafka Connect Cluster Editor, Managed Kafka Connector Editor
Memeriksa peran
-
Di konsol Google Cloud , buka halaman IAM.
Buka IAM - Pilih project.
-
Di kolom Akun utama, temukan semua baris yang mengidentifikasi Anda atau grup yang Anda termasuk di dalamnya. Untuk mengetahui grup mana saja yang Anda ikuti, hubungi administrator Anda.
- Untuk semua baris yang menentukan atau menyertakan Anda, periksa kolom Peran untuk melihat apakah daftar peran menyertakan peran yang diperlukan.
Memberikan peran
-
Di konsol Google Cloud , buka halaman IAM.
Buka IAM - Pilih project.
- Klik Grant access.
-
Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.
- Klik Pilih peran, lalu telusuri peran.
- Untuk memberikan peran tambahan, klik Add another role, lalu tambahkan tiap peran tambahan.
- Klik Simpan.
-
gcloud
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan Managed Kafka API, jika belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable managedkafka.googleapis.com
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan Managed Kafka API, jika belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable managedkafka.googleapis.com
-
Memberikan peran ke akun pengguna Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/managedkafka.clusterEditor, roles/managedkafka.connectClusterEditor, roles/managedkafka.connectorEditorgcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Ganti kode berikut:
PROJECT_ID: Project ID Anda.USER_IDENTIFIER: ID untuk akun pengguna Anda. Misalnya,myemail@example.com.ROLE: Peran IAM yang Anda berikan ke akun pengguna Anda.
Buat cluster Kafka sumber
Pada langkah ini, Anda akan membuat cluster Managed Service untuk Apache Kafka. Cluster ini adalah cluster sumber, yang berisi data untuk direplikasi.
Konsol
Buka halaman Managed Service untuk Apache Kafka > Clusters.
Klik Create.
Di kotak Nama cluster, masukkan nama untuk cluster.
Dalam daftar Region, pilih lokasi untuk cluster.
Untuk Network configuration, konfigurasikan subnet tempat cluster dapat diakses.
- Untuk Project, pilih project Anda.
- Untuk Network, pilih jaringan VPC di project Anda.
- Untuk Subnet, pilih subnet.
- Klik Done.
Klik Create.
Saat cluster sedang dibuat, status cluster adalah Creating. Setelah
cluster selesai dibuat, statusnya adalah Active.
gcloud
Untuk membuat cluster Kafka sumber, jalankan perintah
managed-kafka clusters create.
gcloud managed-kafka clusters create SOURCE_KAFKA_CLUSTER \
--location=SOURCE_REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/SOURCE_REGION/subnetworks/SOURCE_SUBNET \
--async
Ganti kode berikut:
SOURCE_KAFKA_CLUSTER: nama untuk cluster KafkaSOURCE_REGION: lokasi clusterUntuk mengetahui informasi tentang lokasi yang didukung, lihat Lokasi Managed Service untuk Apache Kafka.
PROJECT_ID: project ID AndaSOURCE_SUBNET: subnet tempat Anda ingin men-deploy cluster; misalnya,default
Perintah berjalan secara asinkron dan menampilkan ID operasi:
Check operation [projects/PROJECT_ID/locations/SOURCE_SUBNET/operations/OPERATION_ID] for status.
Untuk melacak progres operasi pembuatan, gunakan perintah
gcloud managed-kafka operations describe:
gcloud managed-kafka operations describe OPERATION_ID \
--location=SOURCE_REGION
Untuk mengetahui informasi selengkapnya, lihat Memantau operasi pembuatan cluster.
Membuat topik Kafka
Setelah cluster sumber siap, buat topik sebagai berikut:
Konsol
Buka halaman Managed Service untuk Apache Kafka > Clusters.
Klik nama cluster.
Di halaman detail cluster, klik Create Topic.
Di kotak Topic name, masukkan nama untuk topik.
Klik Create.
gcloud
Untuk membuat topik Kafka, jalankan perintah
managed-kafka topics create.
gcloud managed-kafka topics create TOPIC_NAME \
--cluster=SOURCE_KAFKA_CLUSTER \
--location=SOURCE_REGION \
--partitions=10 \
--replication-factor=3
Ganti kode berikut:
TOPIC_NAME: nama topik Kafka yang akan dibuatSOURCE_KAFKA_CLUSTER: nama cluster sumberSOURCE_REGION: region tempat Anda membuat cluster sumber
Buat cluster Kafka target
Pada langkah ini, Anda akan membuat cluster Managed Service untuk Apache Kafka kedua. Cluster ini adalah target cluster, tempat MirrorMaker 2.0 mereplikasi data.
Konsol
Buka halaman Managed Service untuk Apache Kafka > Clusters.
Klik Create.
Di kotak Nama cluster, masukkan nama untuk cluster.
Dalam daftar Region, pilih lokasi untuk cluster. Pilih region yang berbeda dengan tempat cluster sumber berada.
Untuk Konfigurasi jaringan, konfigurasi subnet tempat cluster target dapat diakses. Subnet harus berada di jaringan VPC yang sama dengan subnet cluster sumber.
- Untuk Project, pilih project Anda.
- Untuk Jaringan, pilih jaringan VPC yang sama dengan subnet cluster sumber.
- Untuk Subnet, pilih subnet.
- Klik Done.
Klik Create.
Saat cluster sedang dibuat, status cluster adalah Creating. Setelah
cluster selesai dibuat, statusnya adalah Active.
gcloud
Untuk membuat cluster Kafka target, jalankan perintah
managed-kafka clusters create.
gcloud managed-kafka clusters create TARGET_KAFKA_CLUSTER \
--location=TARGET_REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/TARGET_REGION/subnetworks/TARGET_SUBNET \
--async
Ganti kode berikut:
TARGET_KAFKA_CLUSTER: nama untuk cluster KafkaTARGET_REGION: lokasi cluster; pilih region yang berbeda dari lokasi cluster sumber.Untuk mengetahui informasi tentang lokasi yang didukung, lihat Lokasi Managed Service untuk Apache Kafka.
PROJECT_ID: project ID AndaTARGET_SUBNET: subnet tempat Anda ingin men-deploy cluster; misalnya,defaultPilih subnet di VPC yang sama dengan cluster sumber.
Membuat cluster Connect
Pada langkah ini, Anda akan membuat cluster Connect. Membuat cluster Connect biasanya memerlukan waktu 20-30 menit.
Sebelum memulai langkah ini, pastikan cluster Kafka target dari langkah sebelumnya telah dibuat sepenuhnya.
Konsol
Buka halaman Managed Service untuk Apache Kafka > Connect Clusters.
Klik Create.
Untuk Connect cluster name, masukkan string. Contoh:
my-connect-cluster.Untuk Primary Kafka cluster, pilih cluster Kafka target yang Anda buat pada langkah sebelumnya. (Jangan pilih cluster Kafka sumber Anda.)
Untuk Location, Network configuration, dan Worker subnet, Anda dapat menggunakan nilai default, atau menyesuaikannya dengan persyaratan spesifik Anda.
Untuk mengizinkan cluster Connect menyelesaikan domain DNS cluster sumber, lakukan langkah-langkah berikut:
Luaskan Resolvable DNS domains.
Klik Tambahkan domain DNS.
Dalam daftar Kafka cluster, pilih cluster Kafka sumber.
Klik Create.
Saat cluster sedang dibuat, status cluster adalah Creating. Setelah
cluster selesai dibuat, statusnya adalah Active.
gcloud
Untuk membuat cluster Connect, jalankan perintah
gcloud managed-kafka connect-clusters create.
gcloud managed-kafka connect-clusters create CONNECT_CLUSTER \
--location=TARGET_REGION \
--cpu=12 \
--memory=12GiB \
--primary-subnet=projects/PROJECT_ID/regions/TARGET_REGION/subnetworks/TARGET_SUBNET \
--kafka-cluster=TARGET_KAFKA_CLUSTER \
--dns-name=SOURCE_KAFKA_CLUSTER.SOURCE_REGION.managedkafka.PROJECT_ID.cloud.goog. \
--async
Ganti kode berikut:
CONNECT_CLUSTER: nama untuk cluster ConnectTARGET_REGION: region tempat Anda membuat cluster Kafka targetPROJECT_ID: project ID AndaTARGET_SUBNET: subnet tempat Anda membuat cluster Kafka targetTARGET_KAFKA_CLUSTER: nama cluster Kafka targetSOURCE_KAFKA_CLUSTER: nama cluster Kafka sumberSOURCE_REGION: region tempat Anda membuat cluster Kafka sumber
Perintah berjalan secara asinkron dan menampilkan ID operasi:
Check operation [projects/PROJECT_ID/locations/TARGET_REGION/operations/OPERATION_ID] for status.
Untuk melacak progres operasi pembuatan, gunakan perintah
gcloud managed-kafka operations describe:
gcloud managed-kafka operations describe OPERATION_ID \
--location=TARGET_REGION
Untuk mengetahui informasi selengkapnya, lihat Memantau operasi pembuatan cluster.
Membuat konektor Sumber MirrorMaker 2.0
Pada langkah ini, Anda akan membuat konektor Sumber MirrorMaker 2.0. Konektor ini mereplikasi pesan dari cluster Kafka sumber ke cluster Kafka target.
Konsol
Buka halaman Managed Service untuk Apache Kafka > Connect Clusters.
Klik nama cluster Connect.
Klik Buat konektor.
Untuk Nama konektor, masukkan string. Contoh:
mm2-connector.Di daftar Plugin konektor, pilih
MirrorMaker 2.0 Source.Untuk Source cluster, pilih Managed Service untuk Apache Kafka Cluster.
Di daftar Kafka cluster, pilih cluster sumber Anda.
Di kotak Nama topik yang dipisahkan koma atau regex topik, masukkan nama topik Kafka yang ingin Anda replikasi.
Klik Create.
gcloud
Jalankan perintah
gcloud managed-kafka clusters describeuntuk mendapatkan alamat bootstrap dari cluster Kafka sumber.gcloud managed-kafka clusters describe SOURCE_KAFKA_CLUSTER \ --location=SOURCE_REGION \ --project=PROJECT_ID \ --format="value(bootstrapAddress)"Ganti kode berikut:
SOURCE_KAFKA_CLUSTER: nama cluster Kafka sumberSOURCE_REGION: region cluster sumberPROJECT_ID: project ID Anda
Jalankan kembali perintah sebelumnya untuk mendapatkan alamat bootstrap cluster Kafka target.
gcloud managed-kafka clusters describe TARGET_KAFKA_CLUSTER \ --location=TARGET_REGION \ --project=PROJECT_ID \ --format="value(bootstrapAddress)"Ganti kode berikut:
TARGET_KAFKA_CLUSTER: nama cluster Kafka targetTARGET_REGION: region cluster target
Untuk membuat konektor Sumber MirrorMaker 2.0, jalankan perintah
gcloud managed-kafka connectors create.gcloud managed-kafka connectors create CONNECTOR_NAME \ --location=TARGET_REGION \ --connect-cluster=CONNECT_CLUSTER \ --configs=connector.class=org.apache.kafka.connect.mirror.MirrorSourceConnector,\ source.cluster.alias=source,\ source.cluster.bootstrap.servers=SOURCE_CLUSTER_BOOTSTRAP_ADDRESS,\ target.cluster.alias=target,\ target.cluster.bootstrap.servers=TARGET_CLUSTER_BOOTSTRAP_ADDRESS,\ tasks.max=3,\ topics=TOPIC_NAMEGanti kode berikut:
CONNECTOR_NAME: nama untuk konektor, sepertimm2-connectorCONNECT_CLUSTER: nama cluster Connect AndaSOURCE_CLUSTER_BOOTSTRAP_ADDRESS: alamat bootstrap cluster sumber, dari langkah 1.TARGET_CLUSTER_BOOTSTRAP_ADDRESS: alamat bootstrap cluster target, dari langkah 2.TOPIC_NAME: nama topik yang akan direplikasi. Parameter ini juga dapat menentukan daftar nama topik yang dipisahkan koma atau ekspresi reguler.
Konektor Sumber MirrorMaker 2.0 membuat topik baru di cluster target
bernama "source.TOPIC_NAME", dengan
TOPIC_NAME adalah nama topik di cluster
sumber.
Melihat hasilnya
Untuk memverifikasi bahwa pesan direplikasi, Anda dapat menggunakan alat command line Kafka. Untuk mengetahui informasi tentang cara menyiapkan Kafka CLI, lihat Menyiapkan mesin klien dalam dokumen Membuat dan menggunakan pesan dengan CLI.
Misalnya, untuk mengirim pesan ke cluster sumber, masukkan perintah berikut di command line:
export BOOTSTRAP=$(gcloud managed-kafka clusters describe SOURCE_KAFKA_CLUSTER \
--location=SOURCE_REGION \
--project=PROJECT_ID \
--format="value(bootstrapAddress)"
)
for msg in {1..10}; do
echo "message $msg"
done | kafka-console-producer.sh --topic TOPIC_NAME \
--bootstrap-server $BOOTSTRAP --producer.config client.properties
Untuk membaca pesan duplikat dari cluster target, masukkan perintah berikut di command line:
export BOOTSTRAP=$(gcloud managed-kafka clusters describe TARGET_KAFKA_CLUSTER \
--location=TARGET_REGION \
--project=PROJECT_ID \
--format="value(bootstrapAddress)"
)
kafka-console-consumer.sh --topic source.TOPIC_NAME --from-beginning \
--bootstrap-server $BOOTSTRAP --consumer.config client.properties
Outputnya akan terlihat seperti berikut:
message 1
message 2
message 3
message 4
[...]
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Konsol
Hapus cluster Connect.
Buka halaman Managed Service untuk Apache Kafka > Connect Clusters.
Pilih cluster Connect, lalu klik Delete.
Hapus cluster Kafka sumber.
Buka halaman Managed Service untuk Apache Kafka > Clusters.
Pilih cluster Kafka, lalu klik Delete.
Ulangi langkah sebelumnya untuk menghapus cluster Kafka target.
gcloud
Untuk menghapus cluster Connect, gunakan perintah
gcloud managed-kafka connect-clusters delete.gcloud managed-kafka connect-clusters delete CONNECT_CLUSTER \ --location=TARGET_REGION --asyncUntuk menghapus cluster Kafka sumber, gunakan perintah
gcloud managed-kafka clusters delete.gcloud managed-kafka clusters delete SOURCE_KAFKA_CLUSTER \ --location=SOURCE_REGION --asyncUlangi langkah sebelumnya untuk menghapus cluster Kafka target.
gcloud managed-kafka clusters delete TARGET_KAFKA_CLUSTER \ --location=TARGET_REGION --async
Langkah berikutnya
- Memecahkan masalah konektor MirrorMaker 2.0
- Pelajari lebih lanjut konektor MirrorMaker 2.0.
- Pelajari lebih lanjut Kafka Connect.