View a markdown version of this page

Memecahkan masalah Amazon MSK Replicator - Amazon Managed Streaming untuk Apache Kafka

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:

  1. 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.

  2. 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.

  3. 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.

  4. Verifikasi bahwa jaringan ACLs Anda tidak memblokir koneksi antara MSK Replicator dan cluster Anda.

  5. 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

  1. Verifikasi bahwa Replicator Anda tidak mengalami kesalahan otentikasi menggunakan AuthError metrik di Amazon. CloudWatch Jika metrik ini di atas 0, periksa kebijakan peran IAM dan pastikan tidak ada izin penolakan yang ditetapkan untuk izin klaster.

  2. Verifikasi bahwa sumber dan kluster target Anda tidak mengalami masalah (terlalu banyak koneksi, disk pada kapasitas penuh, atau penggunaan CPU yang tinggi).

  3. Verifikasi bahwa cluster Anda dapat dijangkau menggunakan metrik. KafkaClusterPingSuccessCount Jika metrik ini adalah 0 atau tidak memiliki titik data, periksa izin peran jaringan dan IAM.

  4. Verifikasi bahwa Replicator Anda tidak mengalami kegagalan menggunakan ReplicatorFailure metrik. Jika di atas 0, periksa peran IAM untuk izin tingkat topik.

  5. Verifikasi bahwa ekspresi reguler dalam daftar izinkan cocok dengan nama topik yang ingin Anda tiru, dan topik tersebut tidak dikecualikan oleh daftar penolakan.

  6. 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

  1. Verifikasi bahwa replikasi data berfungsi seperti yang diharapkan.

  2. Verifikasi bahwa ekspresi reguler dalam daftar izinkan cocok dengan grup konsumen yang ingin Anda tiru.

  3. 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

  1. 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
    50167
    100334
    250833
    5001666
    10003333
  2. 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.

  3. Latensi replikasi bervariasi menurut jarak pasangan Wilayah.

  4. Verifikasi bahwa Replicator Anda tidak terhambat menggunakan metrik. ThrottleTime Jika di atas 0, sesuaikan kuota Kafka. Lihat Mengelola throughput dengan kuota Kafka.

  5. 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:

  1. Konfigurasikan klien yang dapat terhubung ke kluster MSK target dan siapkan alat CLI Apache Kafka. Lihat Connect ke kluster Amazon MSK Provisioned.

  2. 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

  3. Ekspor ARN Replikator MSK dan titik akhir broker:

    export TARGET_CLUSTER_SERVER_STRING=<BootstrapServerString> export REPLICATOR_ARN=<ReplicatorARN> export CONSUMER_CONFIG_FILE=<ConsumerConfigFile>
  4. Di <path-to-your-kafka-installation>/bin direktori 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." fi

    Jalankan 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_FILE

    Skrip 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: 1

Solusi: 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: 1

Solusi: Tingkatkan max.message.bytes konfigurasi 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: 1

Solusi: Perbarui message.timestamp.before.max.ms konfigurasi 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: 1

Solusi: Perbarui cluster target segment.bytes menjadi 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:

  1. Pastikan koneksi VPN atau Direct Connect Anda aktif dan tabel rute sudah benar.

  2. Verifikasi bahwa grup keamanan mengizinkan lalu lintas masuk dari subnet MSK Replicator di SASL_SSL port (biasanya 9096).

  3. Verifikasi resolusi DNS dari VPC ke nama host broker cluster yang dikelola sendiri.

  4. Periksa KafkaClusterPingSuccessCount metrik di Amazon CloudWatch — nilai 0 menunjukkan kegagalan konektivitas.

Kegagalan otentikasi SASL/SCRAM

Jika AuthError metrik bukan nol atau log Replicator menunjukkan SASL/SCRAM kesalahan:

  1. Verifikasi bahwa kredensil yang disimpan di AWS Secrets Manager cocok dengan kredensil pengguna SCRAM di klaster yang dikelola sendiri.

  2. Verifikasi bahwa pengguna SCRAM memiliki izin ACL yang diperlukan (Baca, Jelaskan tentang topik; Baca, Jelaskan pada grup konsumen; Jelaskan di cluster).

  3. Periksa AuthError metrik untuk mengonfirmasi kesalahan otentikasi dan identifikasi apakah sumber atau kluster target terpengaruh menggunakan ClusterAlias dimensi.

Masalah sertifikat SSL

Jika Replicator tidak dapat membuat koneksi aman ke cluster yang dikelola sendiri:

  1. Verifikasi bahwa certificate nilai di AWS Secrets Manager menyertakan rantai sertifikat CA lengkap dalam format PEM.

  2. Verifikasi bahwa pendengar SSL dikonfigurasi pada semua broker klaster yang dikelola sendiri.

  3. 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:

  1. Verifikasi ConsumerGroupOffsetSyncFailure metrik — seharusnya 0.

  2. Verifikasi bahwa kelompok konsumen secara aktif mengkonsumsi pada cluster sumber (kelompok konsumen yang tidak aktif mungkin tidak disinkronkan).

  3. Untuk replikasi dua arah, verifikasi yang synchroniseConsumerGroupOffsets disetel ke true pada kedua Replikator.