View a markdown version of this page

Solución de problemas de Amazon MSK Replicator - Transmisión administrada de Amazon para Apache Kafka

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solución de problemas de Amazon MSK Replicator

La siguiente información puede ayudarle a solucionar problemas con MSK Replicator. Consulte Solución de problemas del clúster de Amazon MSK para conocer otras funciones de Amazon MSK. También puede publicar el problema en AWS re:Post.

El estado del replicador pasa de CREATIVO a FALLIDO

Causas comunes del error de creación del MSK Replicator:

  1. Compruebe que los grupos de seguridad que proporcionó para el clúster de destino tengan reglas de salida que permitan el tráfico a los grupos de seguridad de su clúster de destino y que los grupos de seguridad de su clúster de destino tengan reglas de entrada que acepten el tráfico de los grupos de seguridad de Replicator.

  2. Para la replicación entre regiones, compruebe que el clúster de origen tenga activada la conectividad de varias VPC para el control de acceso de IAM y que la política de clúster esté configurada en el clúster de origen.

  3. Compruebe que la función de IAM proporcionada durante la creación tenga los permisos necesarios para leer y escribir en los clústeres de origen y destino, incluidos los permisos para escribir en los temas.

  4. Compruebe que su red ACLs no bloquee la conexión entre el MSK Replicator y sus clústeres.

  5. Es posible que los clústeres de origen o destino no estén completamente disponibles cuando el MSK Replicator intentó conectarse. Esto puede deberse a una carga excesiva, al uso del disco o al uso de la CPU. Solucione el problema con los agentes e intente crear el replicador de nuevo.

Tras hacer las validaciones anteriores, vuelva a crear el Replicador MSK.

El replicador parece atascado en el estado DE CREACIÓN

La creación de MSK Replicator puede tardar hasta 30 minutos. Espere 30 minutos y compruebe de nuevo el estado del replicador.

Replicator no replica datos o solo replica datos parciales

  1. Compruebe que su replicador no tenga errores de autenticación utilizando la AuthError métrica de Amazon CloudWatch. Si esta métrica es superior a 0, compruebe la política de funciones de IAM y asegúrese de que no se hayan establecido permisos de denegación para los permisos del clúster.

  2. Compruebe que los clústeres de origen y destino no tengan problemas (demasiadas conexiones, disco a plena capacidad o uso elevado de la CPU).

  3. Compruebe que se pueda acceder a los clústeres mediante la KafkaClusterPingSuccessCount métrica. Si esta métrica es 0 o no tiene ningún punto de datos, compruebe los permisos de red y de los roles de IAM.

  4. Compruebe que su replicador no tenga errores utilizando la métrica. ReplicatorFailure Si es superior a 0, compruebe la función de IAM para ver los permisos de nivel temático.

  5. Compruebe que la expresión regular de la lista de temas permitidos coincide con los nombres de los temas que desea replicar y que los temas no están excluidos de la lista de rechazados.

  6. El replicador puede tardar hasta 30 segundos en detectar y crear temas nuevos. Los mensajes generados antes de la creación del tema en el clúster de destino no se replicarán si la posición inicial es la última (opción predeterminada).

Los desplazamientos de mensajes en el clúster de destino son diferentes a las del clúster de origen

MSK Replicator consume los mensajes del clúster de origen y los envía al clúster de destino, lo que puede generar diferentes compensaciones. Si ha activado la sincronización de compensaciones de grupos de consumidores, MSK Replicator traducirá automáticamente las compensaciones para que, tras la conmutación por error, sus consumidores puedan reanudar el procesamiento casi desde donde lo dejaron.

Replicator no sincroniza las compensaciones de grupos de consumidores

  1. Compruebe que la replicación de datos funciona según lo previsto.

  2. Compruebe que la expresión regular de la lista de usuarios permitidos coincide con los grupos de consumidores que desea replicar.

  3. Compruebe que el Replicador MSK haya creado el tema en el clúster de destino. Si el grupo de consumidores del clúster de origen solo ha consumido los mensajes que no se han replicado, el grupo de consumidores no se replicará en el clúster de destino. Cuando su grupo de consumidores comience a leer los mensajes recién replicados, MSK Replicator replicará automáticamente el grupo de consumidores.

nota

MSK Replicator optimiza la sincronización de las compensaciones de los grupos de consumidores para los consumidores que lean casi al final de la partición temática. Si sus grupos de consumidores están rezagados en el clúster de origen, es posible que vea un retraso mayor en el clúster de destino. A medida que sus consumidores se pongan al día, el Replicador MSK reducirá automáticamente el retraso.

La latencia de replicación es alta o sigue aumentando

  1. Compruebe que tiene el número correcto de particiones. La siguiente tabla muestra el número mínimo de particiones recomendado para el rendimiento deseado.

    Rendimiento y número mínimo recomendado de particiones
    Rendimiento (MB/s) Se requieren particiones mínimas
    50167
    100334
    250833
    5001666
    1 0003333
  2. Compruebe que tiene suficiente capacidad de lectura y escritura en sus clústeres. El Replicador MSK actúa como consumidor del clúster de origen (salida) y como productor del clúster de destino (entrada). Aprovisione la capacidad del clúster para admitir el tráfico de replicación, además de otro tipo de tráfico.

  3. La latencia de replicación varía según la distancia entre pares de regiones.

  4. Compruebe que su replicador no se esté viendo limitado utilizando la métrica. ThrottleTime Si es superior a 0, ajuste las cuotas de Kafka. Consulte Administrar el rendimiento con cuotas de Kafka.

  5. Consulte el AWS Service Health Dashboard para ver los eventos de servicio de MSK en su región.

Solución de problemas mediante la métrica ReplicatorFailure

La ReplicatorFailure métrica le ayuda a monitorear y detectar problemas de replicación. Un valor distinto de cero normalmente indica un error de replicación provocado por limitaciones en el tamaño de los mensajes, infracciones del intervalo de fechas o problemas con el tamaño de los lotes de registros. Si ha configurado la entrega de registros para su replicador, puede usar los mensajes de registro entregados para identificar el error específico. Para obtener más información, consulte Registros de MSK Replicator. Si la entrega de registros no está configurada, siga los pasos que se indican a continuación para consultar los mensajes de error en el tema de estado del replicador.

Si la ReplicatorFailure métrica indica un valor distinto de cero, siga estos pasos para solucionar el problema:

  1. Configure un cliente que pueda conectarse al clúster de MSK de destino y que tenga configuradas las herramientas CLI de Apache Kafka. Consulte Conexión a un clúster de Amazon MSK aprovisionado.

  2. ¿Abrir la consola Amazon MSK en https://console.aws.amazon.com/msk/casa? region=us-east-1#/home/.

    Obtenga el replicador ARNs de MSK y el clúster de MSK de destino, y obtenga los puntos finales intermediarios del clúster de MSK de destino.

  3. Exporte el ARN de MSK Replicator y los puntos finales del broker:

    export TARGET_CLUSTER_SERVER_STRING=<BootstrapServerString> export REPLICATOR_ARN=<ReplicatorARN> export CONSUMER_CONFIG_FILE=<ConsumerConfigFile>
  4. En su <path-to-your-kafka-installation>/bin directorio, guarde el siguiente script como. 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

    Ejecute este script para consultar los mensajes de error de 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

    Este script muestra todos los errores junto con sus mensajes de excepción y las particiones de temas afectadas. Dado que el tema contiene todos los mensajes históricos de error, inicie la investigación con el último mensaje. El siguiente es un ejemplo de un mensaje de error:

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

A continuación, se describen las fallas comunes de MSK Replicator y cómo mitigarlas.

Tamaño del mensaje mayor que max.request.size

Causa: el tamaño del mensaje individual supera los 10 MB (el máximo predeterminado).

Lo siguiente es un ejemplo de este tipo de mensaje de error.

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

Solución: reduzca el tamaño de los mensajes individuales de su tema. Si no puede, siga las instrucciones para solicitar un aumento del límite.

Tamaño del mensaje mayor que el tamaño máximo de mensaje que el servidor acepta

Causa: el tamaño del mensaje supera el tamaño máximo de mensaje del clúster de destino.

Lo siguiente es un ejemplo de este tipo de mensaje de error.

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

Solución: aumente la max.message.bytes configuración del tema o clúster de destino. Consulte max.message.bytes.

La marca de tiempo está fuera del intervalo

Causa: la marca de tiempo del mensaje está fuera del rango permitido por el clúster de destino.

Lo siguiente es un ejemplo de este tipo de mensaje de error.

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

Solución: actualice la configuración del clúster de message.timestamp.before.max.ms destino. Consulte message.timestamp.before.max.ms.

Lote de registros demasiado grande

Causa: el tamaño del lote de registros supera el tamaño de segmento establecido para el tema en el clúster de destino. El Replicador de MSK admite un tamaño máximo de lote de 1 MB.

Lo siguiente es un ejemplo de este tipo de mensaje de error.

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

Solución: actualice el clúster de destino segment.bytes para que sea al menos 1048576 (1 MB). Consulte segment.bytes.

nota

Si la ReplicatorFailure métrica sigue emitiendo valores distintos de cero después de aplicar estas soluciones, repita el proceso de solución de problemas hasta que la métrica emita un valor cero.

Solucione los problemas de replicación desde clústeres Kafka autogestionados

MSK Replicator no se puede conectar al clúster Kafka autogestionado

Realice las siguientes comprobaciones si MSK Replicator no puede conectarse a su clúster Kafka autogestionado:

  1. Compruebe que su conexión VPN o Direct Connect esté activa y que las tablas de enrutamiento sean correctas.

  2. Compruebe que los grupos de seguridad permitan el tráfico entrante desde las subredes de MSK Replicator en el SASL_SSL puerto (normalmente 9096).

  3. Compruebe la resolución de DNS de la VPC a los nombres de host del agente de clústeres autogestionado.

  4. Comprueba la KafkaClusterPingSuccessCount métrica en Amazon CloudWatch : un valor de 0 indica un fallo de conectividad.

Fallos de autenticación de SASL/SCRAM

Si la AuthError métrica es distinta de cero o los registros del Replicador muestran errores: SASL/SCRAM

  1. Compruebe que las credenciales almacenadas en AWS Secrets Manager coincidan con las credenciales de usuario de SCRAM del clúster autogestionado.

  2. Compruebe que el usuario de SCRAM tiene los permisos de ACL necesarios (leer, describir los temas, leer y describir los grupos de consumidores y describir los temas).

  3. Compruebe la AuthError métrica para confirmar los errores de autenticación e identificar si el clúster de origen o de destino se ve afectado mediante la ClusterAlias dimensión.

Problemas con los certificados SSL

Si el replicador no puede establecer una conexión segura con el clúster autogestionado:

  1. Compruebe que el certificate valor de AWS Secrets Manager incluya toda la cadena de certificados de CA en formato PEM.

  2. Compruebe que el agente de escucha SSL esté configurado en todos los agentes de clústeres autogestionados.

  3. Compruebe que el certificado no haya caducado y que lo haya emitido una CA de confianza.

El grupo de consumidores compensa los errores de sincronización en los clústeres autogestionados

Si las compensaciones de los grupos de consumidores no se sincronizan correctamente:

  1. Compruebe la ConsumerGroupOffsetSyncFailure métrica: debe ser 0.

  2. Compruebe que los grupos de consumidores consumen activamente en el clúster de origen (es posible que los grupos de consumidores inactivos no estén sincronizados).

  3. Para la replicación bidireccional, compruebe que synchroniseConsumerGroupOffsets esté configurada true en ambos replicadores.