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:
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.
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.
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.
Verificate che la rete non ACLs stia bloccando la connessione tra MSK Replicator e i cluster.
È 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
Verifica che il tuo Replicator non stia riscontrando errori di autenticazione utilizzando la
AuthErrormetrica 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.Verifica che i cluster di origine e di destinazione non presentino problemi (troppe connessioni, disco a piena capacità o utilizzo elevato della CPU).
Verifica che i cluster siano raggiungibili utilizzando la metrica.
KafkaClusterPingSuccessCountSe questa metrica è 0 o non ha alcun datapoint, controlla le autorizzazioni di rete e dei ruoli IAM.Verifica che il tuo Replicator non stia riscontrando errori utilizzando la metrica.
ReplicatorFailureSe superiore a 0, controlla il ruolo IAM per le autorizzazioni a livello di argomento.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.
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
Verificate che la replica dei dati funzioni come previsto.
Verifica che l'espressione regolare nell'elenco degli utenti consentiti corrisponda ai gruppi di consumatori che desideri replicare.
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
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 50 167 100 334 250 833 500 1666 1000 3333 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.
La latenza di replica varia in base alla distanza della coppia di regioni.
Verifica che il Replicator non venga limitato utilizzando la metrica.
ThrottleTimeSe superiore a 0, modifica le quote di Kafka. Per informazioni, consulta Gestione del throughput con le quote Kafka.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:
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.
Aprire la console Amazon MSK a https://console.aws.amazon.com/msk/casa? region=us-east-1#/home/.
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>Nella
<path-to-your-kafka-installation>/bindirectory, 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." fiEsegui 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_FILEQuesto 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: 1Soluzione: 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: 1Soluzione: aumentare la
max.message.bytesconfigurazione 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: 1Soluzione: aggiorna la
message.timestamp.before.max.msconfigurazione 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: 1Soluzione: aggiorna il cluster di destinazione in
segment.bytesmodo 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:
Verifica che la tua connessione VPN o Direct Connect sia attiva e che le tabelle di routing siano corrette.
Verificare che i gruppi di sicurezza consentano il traffico in entrata dalle sottoreti MSK Replicator sulla SASL_SSL porta (in genere 9096).
Verifica la risoluzione DNS dal VPC agli hostname dei broker di cluster autogestiti.
Controlla la
KafkaClusterPingSuccessCountmetrica 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
Verificare che le credenziali archiviate in AWS Secrets Manager corrispondano alle credenziali utente SCRAM sul cluster autogestito.
Verificate che l'utente SCRAM disponga delle autorizzazioni ACL richieste (Leggi, descrivi sugli argomenti; Leggi, descrivi sui gruppi di consumatori; Descrivi sul cluster).
Controlla la
AuthErrormetrica 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:
Verificate che il
certificatevalore in AWS Secrets Manager includa l'intera catena di certificati CA in formato PEM.Verifica che il listener SSL sia configurato su tutti i broker di cluster autogestiti.
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:
Verifica la
ConsumerGroupOffsetSyncFailuremetrica: dovrebbe essere 0.Verifica che i gruppi di consumatori stiano utilizzando attivamente il cluster di origine (i gruppi di consumatori inattivi potrebbero non essere sincronizzati).
Per la replica bidirezionale, verificate che
synchroniseConsumerGroupOffsetssia impostata su entrambi i replicatori.true