View a markdown version of this page

Risoluzione dei problemi relativi ad Amazon MSK Replicator - Amazon Managed Streaming per Apache Kafka

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi relativi ad Amazon MSK Replicator

Le seguenti informazioni possono aiutarti a risolvere i problemi con MSK Replicator. Vedi Risolvi i problemi del tuo cluster Amazon MSK altre funzionalità di Amazon MSK. Puoi anche pubblicare il problema in AWS re:Post.

Lo stato del replicatore passa da CREATING a FAILED

Cause comuni dell'errore di creazione di MSK Replicator:

  1. Verificate che i gruppi di sicurezza forniti per il cluster di destinazione dispongano di regole in uscita per consentire il traffico verso i gruppi di sicurezza del cluster di destinazione e che i gruppi di sicurezza del cluster di destinazione dispongano di regole in entrata che accettano il traffico proveniente dai gruppi di sicurezza Replicator.

  2. Per la replica tra regioni, verifica che il cluster di origine abbia la connettività multi-VPC attivata per il controllo degli accessi IAM e che la policy del cluster sia impostata sul cluster di origine.

  3. Verifica che il ruolo IAM fornito durante la creazione disponga delle autorizzazioni necessarie per leggere e scrivere sui cluster di origine e di destinazione, incluse le autorizzazioni per scrivere su argomenti.

  4. Verificate che la rete non ACLs stia bloccando la connessione tra MSK Replicator e i cluster.

  5. È possibile che i cluster di origine o di destinazione non siano completamente disponibili quando MSK Replicator ha tentato di connettersi. Ciò potrebbe essere dovuto a un carico eccessivo, all'utilizzo del disco o della CPU. Risolvi il problema con i broker e prova di nuovo a creare il replicatore.

Dopo aver eseguito le convalide precedenti, crea nuovamente il replicatore MSK.

Replicator sembra bloccato nello stato CREATING

La creazione di MSK Replicator può richiedere fino a 30 minuti. Attendi 30 minuti e controlla nuovamente lo stato del replicatore.

Replicator non replica dati o replica solo dati parziali

  1. Verifica che il tuo Replicator non stia riscontrando errori di autenticazione utilizzando la AuthError metrica di Amazon. CloudWatch Se questa metrica è superiore a 0, controlla la policy del ruolo IAM e assicurati che non siano impostate autorizzazioni di negazione per le autorizzazioni del cluster.

  2. Verifica che i cluster di origine e di destinazione non presentino problemi (troppe connessioni, disco a piena capacità o utilizzo elevato della CPU).

  3. Verifica che i cluster siano raggiungibili utilizzando la metrica. KafkaClusterPingSuccessCount Se questa metrica è 0 o non ha alcun datapoint, controlla le autorizzazioni di rete e dei ruoli IAM.

  4. Verifica che il tuo Replicator non stia riscontrando errori utilizzando la metrica. ReplicatorFailure Se superiore a 0, controlla il ruolo IAM per le autorizzazioni a livello di argomento.

  5. Verifica che l'espressione regolare nell'elenco degli argomenti consentiti corrisponda ai nomi degli argomenti che desideri replicare e che gli argomenti non vengano esclusi dall'elenco degli argomenti consentiti.

  6. Il Replicator può impiegare fino a 30 secondi per rilevare e creare nuovi argomenti. I messaggi prodotti prima della creazione dell'argomento nel cluster di destinazione non verranno replicati se la posizione iniziale è la più recente (impostazione predefinita).

Gli offset dei messaggi nel cluster di destinazione sono diversi da quelli del cluster di origine

MSK Replicator utilizza i messaggi dal cluster di origine e li produce nel cluster di destinazione, il che può portare a offset diversi. Se è stata attivata la sincronizzazione degli offset per gruppi di consumatori, MSK Replicator tradurrà automaticamente gli offset in modo che, dopo il failover, i consumatori possano riprendere l'elaborazione da dove l'avevano interrotta.

Replicator non sincronizza gli offset dei gruppi di consumatori

  1. Verificate che la replica dei dati funzioni come previsto.

  2. Verifica che l'espressione regolare nell'elenco degli utenti consentiti corrisponda ai gruppi di consumatori che desideri replicare.

  3. Verificate che MSK Replicator abbia creato l'argomento sul cluster di destinazione. Se il gruppo di consumatori nel cluster di origine ha utilizzato solo messaggi che non sono stati replicati, il gruppo di consumatori non verrà replicato nel cluster di destinazione. Una volta che il gruppo di consumatori inizia a leggere i nuovi messaggi replicati, MSK Replicator replicherà automaticamente il gruppo di consumatori.

Nota

MSK Replicator ottimizza la sincronizzazione degli offset dei gruppi di consumatori per consentire ai consumatori di leggere dalla partizione dell'argomento quasi alla fine. Se i vostri gruppi di consumatori sono in ritardo rispetto al cluster di origine, potreste riscontrare un ritardo maggiore sul target. Man mano che i consumatori recuperano il ritardo, MSK Replicator ridurrà automaticamente il ritardo.

La latenza di replica è elevata o continua ad aumentare

  1. Verificate di avere il numero corretto di partizioni. La tabella seguente mostra il numero minimo di partizioni consigliato per la velocità effettiva desiderata.

    Velocità di trasmissione effettiva e numero minimo consigliato di partizioni
    Velocità di trasmissione effettiva (MB/s) Partizioni minime richieste
    50167
    100334
    250833
    5001666
    10003333
  2. Verifica di avere una capacità di lettura e scrittura sufficiente nei cluster. Il replicatore MSK funge da consumatore per il cluster di origine (uscita) e da produttore per il cluster di destinazione (ingresso). Fornisci la capacità del cluster per supportare il traffico di replica oltre ad altro traffico.

  3. La latenza di replica varia in base alla distanza della coppia di regioni.

  4. Verifica che il Replicator non venga limitato utilizzando la metrica. ThrottleTime Se superiore a 0, modifica le quote di Kafka. Per informazioni, consulta Gestione del throughput con le quote Kafka.

  5. Controllate il AWS Service Health Dashboard per gli eventi del servizio MSK nella vostra regione.

Risoluzione dei problemi utilizzando la metrica ReplicatorFailure

La ReplicatorFailure metrica consente di monitorare e rilevare i problemi di replica. Un valore diverso da zero indica in genere un errore di replica causato da limitazioni nelle dimensioni dei messaggi, violazioni degli intervalli di timestamp o problemi relativi alla dimensione dei batch di record. Se la consegna dei log è configurata per il replicatore, è possibile utilizzare i messaggi di registro consegnati per identificare l'errore specifico. Per ulteriori dettagli, consultare Registri di MSK Replicator. Se la consegna dei log non è configurata, seguite i passaggi seguenti per interrogare l'argomento sullo stato del replicatore per verificare la presenza di messaggi di errore.

Se la ReplicatorFailure metrica riporta un valore diverso da zero, segui questi passaggi per risolvere il problema:

  1. Configura un client in grado di connettersi al cluster MSK di destinazione e di configurare gli strumenti CLI di Apache Kafka. Per informazioni, consulta Connect a un cluster Amazon MSK Provisioned.

  2. Aprire la console Amazon MSK a https://console.aws.amazon.com/msk/casa? region=us-east-1#/home/.

    Ottieni gli endpoint ARNs del replicatore MSK e del cluster MSK di destinazione e ottieni gli endpoint broker del cluster MSK di destinazione.

  3. Esportazione dell'ARN di MSK Replicator e degli endpoint del broker:

    export TARGET_CLUSTER_SERVER_STRING=<BootstrapServerString> export REPLICATOR_ARN=<ReplicatorARN> export CONSUMER_CONFIG_FILE=<ConsumerConfigFile>
  4. Nella <path-to-your-kafka-installation>/bin directory, salvate lo script seguente come. 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

    Esegui questo script per interrogare i messaggi di errore di 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

    Questo script restituisce tutti gli errori con i relativi messaggi di eccezione e le partizioni tematiche interessate. Poiché l'argomento contiene tutti i messaggi di errore cronologici, iniziate l'indagine utilizzando l'ultimo messaggio. Di seguito è riportato un esempio di messaggio di errore:

    ReplicatorException: The request included a message larger than the max message size the server will accept. Topic: test, Partition: 1
Guasti e soluzioni comuni

Di seguito vengono descritti gli errori più comuni di MSK Replicator e come mitigarli.

Dimensione del messaggio superiore a max.request.size

Causa: la dimensione del singolo messaggio supera i 10 MB (il valore massimo predefinito).

Di seguito è riportato un esempio di questo tipo di messaggio di errore.

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

Soluzione: riduci le dimensioni dei singoli messaggi nell'argomento. Se non riesci, segui le istruzioni per richiedere un aumento del limite.

Dimensione del messaggio superiore alla dimensione massima dei messaggi accettata dal server

Causa: la dimensione del messaggio supera la dimensione massima dei messaggi del cluster di destinazione.

Di seguito è riportato un esempio di questo tipo di messaggio di errore.

ReplicatorException: The request included a message larger than the max message size the server will accept. Topic: test, Partition: 1

Soluzione: aumentare la max.message.bytes configurazione sul cluster o sull'argomento di destinazione. Vedi max.message.bytes.

Il timestamp non è compreso nell'intervallo

Causa: il timestamp del messaggio non rientra nell'intervallo consentito del cluster di destinazione.

Di seguito è riportato un esempio di questo tipo di messaggio di errore.

ReplicatorException: Timestamp 1730137653724 of message with offset 0 is out of range. The timestamp should be within [1730137892239, 1731347492239] Topic: test, Partition: 1

Soluzione: aggiorna la message.timestamp.before.max.ms configurazione del cluster di destinazione. Vedi message.timestamp.before.max.ms.

Batch di registrazione troppo grande

Causa: la dimensione del batch di record supera la dimensione del segmento impostata per l'argomento nel cluster di destinazione. MSK Replicator supporta una dimensione batch massima di 1 MB.

Di seguito è riportato un esempio di questo tipo di messaggio di errore.

ReplicatorException: The request included message batch larger than the configured segment size on the server. Topic: test, Partition: 1

Soluzione: aggiorna il cluster di destinazione in segment.bytes modo che sia almeno 1048576 (1 MB). Vedi segment.bytes.

Nota

Se la ReplicatorFailure metrica continua a emettere valori diversi da zero dopo aver applicato queste soluzioni, ripeti la procedura di risoluzione dei problemi finché la metrica non emette un valore pari a zero.

Risolvi i problemi di replica dai cluster Kafka autogestiti

MSK Replicator non può connettersi al cluster Kafka autogestito

Eseguite i seguenti controlli se MSK Replicator non riesce a connettersi al cluster Kafka autogestito:

  1. Verifica che la tua connessione VPN o Direct Connect sia attiva e che le tabelle di routing siano corrette.

  2. Verificare che i gruppi di sicurezza consentano il traffico in entrata dalle sottoreti MSK Replicator sulla SASL_SSL porta (in genere 9096).

  3. Verifica la risoluzione DNS dal VPC agli hostname dei broker di cluster autogestiti.

  4. Controlla la KafkaClusterPingSuccessCount metrica in Amazon CloudWatch : un valore pari a 0 indica un errore di connettività.

Errori di autenticazione SASL/SCRAM

Se la AuthError metrica è diversa da zero o i log di Replicator mostrano errori: SASL/SCRAM

  1. Verificare che le credenziali archiviate in AWS Secrets Manager corrispondano alle credenziali utente SCRAM sul cluster autogestito.

  2. Verificate che l'utente SCRAM disponga delle autorizzazioni ACL richieste (Leggi, descrivi sugli argomenti; Leggi, descrivi sui gruppi di consumatori; Descrivi sul cluster).

  3. Controlla la AuthError metrica per confermare gli errori di autenticazione e identificare se il cluster di origine o di destinazione è interessato dall'utilizzo della dimensione. ClusterAlias

Problemi relativi ai certificati SSL

Se il Replicator non è in grado di stabilire una connessione sicura al cluster autogestito:

  1. Verificate che il certificate valore in AWS Secrets Manager includa l'intera catena di certificati CA in formato PEM.

  2. Verifica che il listener SSL sia configurato su tutti i broker di cluster autogestiti.

  3. Verifica che il certificato non sia scaduto e sia emesso da una CA attendibile.

Errori di sincronizzazione dell'offset del gruppo di consumatori per i cluster autogestiti

Se gli offset dei gruppi di consumatori non vengono sincronizzati correttamente:

  1. Verifica la ConsumerGroupOffsetSyncFailure metrica: dovrebbe essere 0.

  2. Verifica che i gruppi di consumatori stiano utilizzando attivamente il cluster di origine (i gruppi di consumatori inattivi potrebbero non essere sincronizzati).

  3. Per la replica bidirezionale, verificate che synchroniseConsumerGroupOffsets sia impostata su entrambi i replicatori. true