Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memecahkan masalah Amazon MSK Replicator
Informasi berikut dapat membantu Anda memecahkan masalah dengan MSK Replicator. Lihat Memecahkan masalah kluster MSK Amazon Anda fitur MSK Amazon lainnya. Anda juga dapat memposting masalah Anda ke AWS re:Post
Status replikator berubah dari CREATING menjadi FAILED
Penyebab umum kegagalan pembuatan MSK Replicator:
Verifikasi bahwa grup keamanan yang Anda berikan untuk kluster target memiliki aturan keluar untuk mengizinkan lalu lintas ke grup keamanan kluster target Anda, dan bahwa grup keamanan klaster target Anda memiliki aturan masuk yang menerima lalu lintas dari grup keamanan Replicator.
Untuk replikasi lintas wilayah, verifikasi bahwa cluster sumber Anda telah mengaktifkan konektivitas multi-VPC untuk kontrol akses IAM dan kebijakan klaster disiapkan di cluster sumber.
Verifikasi bahwa peran IAM yang diberikan selama pembuatan memiliki izin yang diperlukan untuk membaca dan menulis ke sumber dan kluster target Anda, termasuk izin untuk menulis ke topik.
Verifikasi bahwa jaringan ACLs Anda tidak memblokir koneksi antara MSK Replicator dan cluster Anda.
Ada kemungkinan bahwa sumber atau target cluster tidak sepenuhnya tersedia ketika MSK Replicator mencoba untuk terhubung. Ini mungkin karena beban yang berlebihan, penggunaan disk, atau penggunaan CPU. Perbaiki masalah dengan broker dan coba lagi pembuatan Replicator.
Setelah Anda melakukan validasi di atas, buat MSK Replicator lagi.
Replikator tampak macet dalam status CREATING
Pembuatan MSK Replicator dapat memakan waktu hingga 30 menit. Tunggu selama 30 menit dan periksa status Replicator lagi.
Replicator tidak mereplikasi data atau mereplikasi hanya sebagian data
Verifikasi bahwa Replicator Anda tidak mengalami kesalahan otentikasi menggunakan
AuthErrormetrik di Amazon. CloudWatch Jika metrik ini di atas 0, periksa kebijakan peran IAM dan pastikan tidak ada izin penolakan yang ditetapkan untuk izin klaster.Verifikasi bahwa sumber dan kluster target Anda tidak mengalami masalah (terlalu banyak koneksi, disk pada kapasitas penuh, atau penggunaan CPU yang tinggi).
Verifikasi bahwa cluster Anda dapat dijangkau menggunakan metrik.
KafkaClusterPingSuccessCountJika metrik ini adalah 0 atau tidak memiliki titik data, periksa izin peran jaringan dan IAM.Verifikasi bahwa Replicator Anda tidak mengalami kegagalan menggunakan
ReplicatorFailuremetrik. Jika di atas 0, periksa peran IAM untuk izin tingkat topik.Verifikasi bahwa ekspresi reguler dalam daftar izinkan cocok dengan nama topik yang ingin Anda tiru, dan topik tersebut tidak dikecualikan oleh daftar penolakan.
Diperlukan waktu hingga 30 detik bagi Replicator untuk mendeteksi dan membuat topik baru. Pesan yang dihasilkan sebelum topik dibuat di kluster target tidak akan direplikasi jika posisi awal terbaru (default).
Offset pesan di cluster target berbeda dari cluster sumber
MSK Replicator mengkonsumsi pesan dari cluster sumber dan memproduksinya ke cluster target, yang dapat menyebabkan offset yang berbeda. Jika Anda telah mengaktifkan sinkronisasi offset grup konsumen, MSK Replicator akan secara otomatis menerjemahkan offset sehingga setelah failover, konsumen Anda dapat melanjutkan pemrosesan dari dekat tempat mereka tinggalkan.
Replicator tidak menyinkronkan offset grup konsumen
Verifikasi bahwa replikasi data berfungsi seperti yang diharapkan.
Verifikasi bahwa ekspresi reguler dalam daftar izinkan cocok dengan grup konsumen yang ingin Anda tiru.
Verifikasi bahwa MSK Replicator telah membuat topik pada cluster target. Jika grup konsumen Anda di cluster sumber hanya mengkonsumsi pesan yang belum direplikasi, grup konsumen tidak akan direplikasi ke cluster target. Setelah grup konsumen Anda mulai membaca pesan yang baru direplikasi, MSK Replicator akan secara otomatis mereplikasi grup konsumen.
catatan
MSK Replicator mengoptimalkan sinkronisasi offset grup konsumen untuk konsumen yang membaca dari dekat akhir partisi topik. Jika grup konsumen Anda tertinggal di cluster sumber, Anda mungkin melihat lag yang lebih tinggi pada target. Saat konsumen Anda mengejar ketinggalan, MSK Replicator akan secara otomatis mengurangi lag.
Latensi replikasi tinggi atau terus meningkat
Pastikan Anda memiliki jumlah partisi yang tepat. Tabel berikut menunjukkan jumlah minimum partisi yang disarankan untuk throughput yang Anda inginkan.
Throughput dan jumlah minimum partisi yang disarankan Throughput (MB/s) Diperlukan partisi minimum 50 167 100 334 250 833 500 1666 1000 3333 Pastikan Anda memiliki kapasitas baca dan tulis yang cukup di cluster Anda. MSK Replicator bertindak sebagai konsumen untuk cluster sumber Anda (jalan keluar) dan sebagai produsen untuk cluster target Anda (ingress). Menyediakan kapasitas cluster untuk mendukung lalu lintas replikasi selain lalu lintas lainnya.
Latensi replikasi bervariasi menurut jarak pasangan Wilayah.
Verifikasi bahwa Replicator Anda tidak terhambat menggunakan metrik.
ThrottleTimeJika di atas 0, sesuaikan kuota Kafka. Lihat Mengelola throughput dengan kuota Kafka.Periksa AWS Service Health Dashboard
untuk acara layanan MSK di Wilayah Anda.
Pemecahan masalah menggunakan metrik ReplicatorFailure
ReplicatorFailureMetrik membantu Anda memantau dan mendeteksi masalah replikasi. Nilai bukan nol biasanya menunjukkan kegagalan replikasi yang disebabkan oleh batasan ukuran pesan, pelanggaran rentang stempel waktu, atau masalah ukuran batch rekaman. Jika pengiriman log telah dikonfigurasi untuk replikator, Anda dapat menggunakan pesan log terkirim untuk mengidentifikasi kegagalan tertentu. Untuk detail selengkapnya, lihat Log Replikator MSK. Jika pengiriman log tidak dikonfigurasi, ikuti langkah-langkah di bawah ini untuk menanyakan topik status replikator untuk pesan kesalahan.
Jika ReplicatorFailure metrik melaporkan nilai bukan nol, ikuti langkah-langkah berikut untuk memecahkan masalah:
Konfigurasikan klien yang dapat terhubung ke kluster MSK target dan siapkan alat CLI Apache Kafka. Lihat Connect ke kluster Amazon MSK Provisioned.
Buka konsol MSK Amazon di https://console.aws.amazon.com/msk/rumah? region=us-east-1#/home/
. Dapatkan Replikator MSK dan target kluster MSK, dan dapatkan titik akhir broker dari kluster MSK target. ARNs
Ekspor ARN Replikator MSK dan titik akhir broker:
export TARGET_CLUSTER_SERVER_STRING=<BootstrapServerString> export REPLICATOR_ARN=<ReplicatorARN> export CONSUMER_CONFIG_FILE=<ConsumerConfigFile>Di
<path-to-your-kafka-installation>/bindirektori Anda, simpan skrip berikut sebagaiquery-replicator-failure-message.sh.#!/bin/bash # Script: Query MSK Replicator Failure Message # Description: This script queries exceptions from AWS MSK Replicator status topics # It takes a replicator ARN and bootstrap server as input and searches for replicator exceptions # in the replicator's status topic, formatting and displaying them in a readable manner # # Required Arguments: # --replicator-arn: The ARN of the AWS MSK Replicator # --bootstrap-server: The Kafka bootstrap server to connect to # --consumer.config: Consumer config properties file # Usage Example: # ./query-replicator-failure-message.sh --replicator-arn <replicator-arn> --bootstrap-server <bootstrap-server> --consumer.config <consumer.config> print_usage() { echo "USAGE: $0 ./query-replicator-failure-message.sh --replicator-arn <replicator-arn> --bootstrap-server <bootstrap-server> --consumer.config <consumer.config>" echo "--replicator-arn <String: MSK Replicator ARN> REQUIRED: The ARN of AWS MSK Replicator." echo "--bootstrap-server <String: server to connect to> REQUIRED: The Kafka server to connect to." echo "--consumer.config <String: config file> REQUIRED: Consumer config properties file." exit 1 } # Initialize variables replicator_arn="" bootstrap_server="" consumer_config="" # Parse arguments while [[ $# -gt 0 ]]; do case "$1" in --replicator-arn) if [ -z "$2" ]; then echo "Error: --replicator-arn requires an argument." print_usage fi replicator_arn="$2"; shift 2 ;; --bootstrap-server) if [ -z "$2" ]; then echo "Error: --bootstrap-server requires an argument." print_usage fi bootstrap_server="$2"; shift 2 ;; --consumer.config) if [ -z "$2" ]; then echo "Error: --consumer.config requires an argument." print_usage fi consumer_config="$2"; shift 2 ;; *) echo "Unknown option: $1"; print_usage ;; esac done # Check for required arguments if [ -z "$replicator_arn" ] || [ -z "$bootstrap_server" ] || [ -z "$consumer_config" ]; then echo "Error: --replicator-arn, --bootstrap-server, and --consumer.config are required." print_usage fi # Extract replicator name and suffix from ARN replicator_arn_suffix=$(echo "$replicator_arn" | awk -F'/' '{print $NF}') replicator_name=$(echo "$replicator_arn" | awk -F'/' '{print $(NF-1)}') echo "Replicator name: $replicator_name" # List topics and find the status topic topics=$(./kafka-topics.sh --command-config client.properties --list --bootstrap-server "$bootstrap_server") status_topic_name="__amazon_msk_replicator_status_${replicator_name}_${replicator_arn_suffix}" # Check if the status topic exists if echo "$topics" | grep -Fq "$status_topic_name"; then echo "Found replicator status topic: '$status_topic_name'" ./kafka-console-consumer.sh --bootstrap-server "$bootstrap_server" --consumer.config "$consumer_config" --topic "$status_topic_name" --from-beginning | stdbuf -oL grep "Exception" | stdbuf -oL sed -n 's/.*Exception:\(.*\) Topic: \([^,]*\), Partition: \([^\]*\).*/ReplicatorException:\1 Topic: \2, Partition: \3/p' else echo "No topic matching the pattern '$status_topic_name' found." fiJalankan skrip ini untuk menanyakan pesan kegagalan MSK Replicator:
<path-to-your-kafka-installation>/bin/query-replicator-failure-message.sh --replicator-arn $REPLICATOR_ARN --bootstrap-server $TARGET_CLUSTER_SERVER_STRING --consumer.config $CONSUMER_CONFIG_FILESkrip ini menampilkan semua kesalahan dengan pesan pengecualian dan partisi topik yang terpengaruh. Karena topik berisi semua pesan kegagalan historis, mulailah penyelidikan menggunakan pesan terakhir. Berikut ini adalah contoh pesan kegagalan:
ReplicatorException: The request included a message larger than the max message size the server will accept. Topic: test, Partition: 1
Kegagalan dan solusi umum
Berikut ini menjelaskan kegagalan MSK Replicator umum dan cara menguranginya.
- Ukuran pesan lebih besar dari max.request.size
-
Penyebab: Ukuran pesan individual melebihi 10 MB (maksimum default).
Berikut ini adalah contoh dari jenis pesan kegagalan ini.
ReplicatorException: The message is 20635370 bytes when serialized which is larger than 10485760, which is the value of the max.request.size configuration. Topic: test, Partition: 1Solusi: Kurangi ukuran pesan individual dalam topik Anda. Jika Anda tidak bisa, ikuti instruksi untuk meminta kenaikan batas.
- Ukuran pesan lebih besar dari ukuran pesan maksimal yang akan diterima server
-
Penyebab: Ukuran pesan melebihi ukuran pesan maksimum kluster target.
Berikut ini adalah contoh dari jenis pesan kegagalan ini.
ReplicatorException: The request included a message larger than the max message size the server will accept. Topic: test, Partition: 1Solusi: Tingkatkan
max.message.byteskonfigurasi pada cluster target atau topik. Lihat max.message.bytes. - Timestamp berada di luar jangkauan
-
Penyebab: Stempel waktu pesan berada di luar rentang yang diizinkan kluster target.
Berikut ini adalah contoh dari jenis pesan kegagalan ini.
ReplicatorException: Timestamp 1730137653724 of message with offset 0 is out of range. The timestamp should be within [1730137892239, 1731347492239] Topic: test, Partition: 1Solusi: Perbarui
message.timestamp.before.max.mskonfigurasi cluster target. Lihat message.timestamp.before.max.ms. - Rekam batch terlalu besar
-
Penyebab: Ukuran batch rekaman melebihi ukuran segmen yang ditetapkan untuk topik di kluster target. MSK Replicator mendukung ukuran batch maksimum 1 MB.
Berikut ini adalah contoh dari jenis pesan kegagalan ini.
ReplicatorException: The request included message batch larger than the configured segment size on the server. Topic: test, Partition: 1Solusi: Perbarui cluster target
segment.bytesmenjadi setidaknya 1048576 (1 MB). Lihat segment.bytes.
catatan
Jika ReplicatorFailure metrik terus memancarkan nilai bukan nol setelah menerapkan solusi ini, ulangi proses pemecahan masalah hingga metrik memancarkan nilai nol.
Memecahkan masalah replikasi dari cluster Kafka yang dikelola sendiri
MSK Replicator tidak dapat terhubung ke cluster Kafka yang dikelola sendiri
Lakukan pemeriksaan berikut jika MSK Replicator tidak dapat terhubung ke cluster Kafka yang dikelola sendiri:
Pastikan koneksi VPN atau Direct Connect Anda aktif dan tabel rute sudah benar.
Verifikasi bahwa grup keamanan mengizinkan lalu lintas masuk dari subnet MSK Replicator di SASL_SSL port (biasanya 9096).
Verifikasi resolusi DNS dari VPC ke nama host broker cluster yang dikelola sendiri.
Periksa
KafkaClusterPingSuccessCountmetrik di Amazon CloudWatch — nilai 0 menunjukkan kegagalan konektivitas.
Kegagalan otentikasi SASL/SCRAM
Jika AuthError metrik bukan nol atau log Replicator menunjukkan SASL/SCRAM kesalahan:
Verifikasi bahwa kredensil yang disimpan di AWS Secrets Manager cocok dengan kredensil pengguna SCRAM di klaster yang dikelola sendiri.
Verifikasi bahwa pengguna SCRAM memiliki izin ACL yang diperlukan (Baca, Jelaskan tentang topik; Baca, Jelaskan pada grup konsumen; Jelaskan di cluster).
Periksa
AuthErrormetrik untuk mengonfirmasi kesalahan otentikasi dan identifikasi apakah sumber atau kluster target terpengaruh menggunakanClusterAliasdimensi.
Masalah sertifikat SSL
Jika Replicator tidak dapat membuat koneksi aman ke cluster yang dikelola sendiri:
Verifikasi bahwa
certificatenilai di AWS Secrets Manager menyertakan rantai sertifikat CA lengkap dalam format PEM.Verifikasi bahwa pendengar SSL dikonfigurasi pada semua broker klaster yang dikelola sendiri.
Verifikasi bahwa sertifikat belum kedaluwarsa dan dikeluarkan oleh CA tepercaya.
Kegagalan sinkronisasi offset grup konsumen untuk cluster yang dikelola sendiri
Jika offset grup konsumen tidak disinkronkan dengan benar:
Verifikasi
ConsumerGroupOffsetSyncFailuremetrik — seharusnya 0.Verifikasi bahwa kelompok konsumen secara aktif mengkonsumsi pada cluster sumber (kelompok konsumen yang tidak aktif mungkin tidak disinkronkan).
Untuk replikasi dua arah, verifikasi yang
synchroniseConsumerGroupOffsetsdisetel ketruepada kedua Replikator.