

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
<a name="msk-replicator-troubleshooting"></a>

Informasi berikut dapat membantu Anda memecahkan masalah dengan MSK Replicator. Lihat [Memecahkan masalah kluster MSK Amazon Anda](troubleshooting.md) fitur MSK Amazon lainnya. Anda juga dapat memposting masalah Anda ke [AWS re:Post](https://repost.aws/).

## Status replikator berubah dari CREATING menjadi FAILED
<a name="msk-replicator-ts-failed-state"></a>

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.

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

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

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

1. 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
<a name="msk-replicator-ts-stuck-creating"></a>

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
<a name="msk-replicator-ts-not-replicating"></a>

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.

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

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

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

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

1. 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
<a name="msk-replicator-ts-offset-mismatch"></a>

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
<a name="msk-replicator-ts-consumer-groups"></a>

1. Verifikasi bahwa replikasi data berfungsi seperti yang diharapkan.

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

1. 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
<a name="msk-replicator-ts-high-latency"></a>

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**    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/msk/latest/developerguide/msk-replicator-troubleshooting.html)

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

1. Latensi replikasi bervariasi menurut jarak pasangan Wilayah.

1. Verifikasi bahwa Replicator Anda tidak terhambat menggunakan metrik. `ThrottleTime` Jika di atas 0, sesuaikan kuota Kafka. Lihat [Mengelola throughput dengan kuota Kafka](msk-replicator-bp-quotas.md).

1. Periksa [AWS Service Health Dashboard](https://health.aws.amazon.com/health/status) untuk acara layanan MSK di Wilayah Anda.

## Pemecahan masalah menggunakan metrik ReplicatorFailure
<a name="msk-replicator-ts-replicator-failure"></a>

`ReplicatorFailure`Metrik 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](msk-replicator-logs.md). 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](client-access.md).

1. Buka konsol MSK Amazon di [https://console.aws.amazon.com/msk/rumah? region=us-east-1\#/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

   Dapatkan Replikator MSK dan target kluster MSK, dan [dapatkan titik akhir broker](get-bootstrap-console.md) dari kluster MSK target. ARNs 

1. Ekspor ARN Replikator MSK dan titik akhir broker:

   ```
   export TARGET_CLUSTER_SERVER_STRING=<BootstrapServerString>
   export REPLICATOR_ARN=<ReplicatorARN>
   export CONSUMER_CONFIG_FILE=<ConsumerConfigFile>
   ```

1. Di `<path-to-your-kafka-installation>/bin` direktori Anda, simpan skrip berikut sebagai**query-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](limits.md#request-msk-quota-increase).

**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.](https://kafka.apache.org/documentation/#topicconfigs_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](https://kafka.apache.org/documentation/#topicconfigs_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](https://kafka.apache.org/documentation/#topicconfigs_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
<a name="msk-replicator-ts-external"></a>

### MSK Replicator tidak dapat terhubung ke cluster Kafka yang dikelola sendiri
<a name="msk-replicator-ts-external-connect"></a>

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.

1. Verifikasi bahwa grup keamanan mengizinkan lalu lintas masuk dari subnet MSK Replicator di SASL\_SSL port (biasanya 9096).

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

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

### Kegagalan otentikasi SASL/SCRAM
<a name="msk-replicator-ts-external-sasl"></a>

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.

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

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

### Masalah sertifikat SSL
<a name="msk-replicator-ts-external-ssl"></a>

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.

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

1. Verifikasi bahwa sertifikat belum kedaluwarsa dan dikeluarkan oleh CA tepercaya.

### Kegagalan sinkronisasi offset grup konsumen untuk cluster yang dikelola sendiri
<a name="msk-replicator-ts-external-offsets"></a>

Jika offset grup konsumen tidak disinkronkan dengan benar:

1. Verifikasi `ConsumerGroupOffsetSyncFailure` metrik — seharusnya 0.

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

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