es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué el conector Debezium no puede conectarse a un broker activado con SASL?

Estoy intentando habilitar SASL/PLAIN para mi sistema de Kafka. En realidad funciona, lo he probado para el Registro de Esquemas y un productor de Java. El problema es que Kafka Connect no puede establecer una conexión cuando SASL está habilitado (al menos eso fue lo que pensé al principio). He proporcionado la configuración necesaria, pero parece que no afecta en absoluto. He editado mi archivo connect-avro-distributed.properties de la siguiente manera:

sasl.mechanism=PLAIN
security.protocol=SASL_PLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
  username="admin" \
  password="secret";

producer.sasl.mechanism=PLAIN
producer.security.protocol=SASL_PLAINTEXT
producer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
  username="admin" \
  password="secret";

consumer.sasl.mechanism=PLAIN
consumer.security.protocol=SASL_PLAINTEXT
consumer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
  username="admin" \
  password="secret";

Pero en el registro dice lo siguiente:

[2022-01-07 12:21:28,645] INFO Valores de ProducerConfig:
        sasl.mechanism = GSSAPI
        security.protocol = PLAINTEXT

Lo cual debería ser así:

[2022-01-07 12:21:28,645] INFO Valores de ProducerConfig:
        sasl.mechanism = PLAIN
        security.protocol = SASL_PLAINTEXT

Lo mismo ocurre con la configuración del consumidor. ¿Qué debo hacer? ¿Por qué utiliza los valores predeterminados? He reiniciado el servicio varias veces. Gracias de antemano.

Editar: Hay otro conector que se ejecuta sin problemas y tiene la configuración correcta para SASL.

Editar2: Parece que los conectores de Debezium necesitan más configuración en el lado del conector.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la instancia de Kafka Connect no está tomando la configuración SASL del archivo connect-avro-distributed.properties. Una posible razón podría ser que el archivo de propiedades no se encuentre en la ubicación correcta, o que el nombre o la ruta del archivo no estén configurados correctamente en el script de inicio de Kafka Connect.

    Para solucionar el problema, puedes intentar los siguientes pasos:

    1. Confirma la ubicación y el nombre del archivo connect-avro-distributed.properties. Por defecto, Kafka Connect buscará este archivo en el directorio $KAFKA_HOME/config, pero esto se puede sobrescribir configurando la variable de entorno KAFKA_CONNECT_OPTS.
    2. Verifica el script de inicio de Kafka Connect y asegúrate de que la opción -Dconfig.file esté configurada correctamente con la ruta completa al archivo connect-avro-distributed.properties. Por ejemplo, la opción debería estar configurada de la siguiente manera:

      export KAFKA_CONNECT_OPTS="-Dconfig.file=/ruta/al/connect-avro-distributed.properties"
      $KAFKA_HOME/bin/connect-distributed.sh /ruta/al/worker.properties
      

    3. Asegúrate de que la configuración SASL no esté siendo sobrescrita por otros archivos de configuración u opciones. Por ejemplo, si tienes un archivo connect-distributed.properties en el mismo directorio que connect-avro-distributed.properties, podría estar tomando la configuración SASL incorrecta de ese archivo en su lugar.
    4. Revisa los registros de Kafka Connect en busca de errores o advertencias relacionados con la configuración SASL. Puedes aumentar el nivel de registro para Kafka Connect configurando la variable de entorno KAFKA_LOG4J_OPTS antes de iniciar Kafka Connect. Por ejemplo:

      export KAFKA_LOG4J_OPTS="-Dlog4j.debug=true"
      

    5. Si todo lo demás falla, puedes intentar agregar la configuración SASL directamente al archivo de propiedades del worker (worker.properties) y ver si funciona. Por ejemplo:
      security.protocol=SASL_PLAINTEXT
      sasl.mechanism=PLAIN
      sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
                        username="admin" password="secret";
      

      Luego inicia Kafka Connect con el siguiente comando:

      $KAFKA_HOME/bin/connect-distributed.sh /ruta/al/worker.properties
      

    Como mencionaste que otro conector funciona correctamente con SASL, es posible que los conectores de Debezium requieran una configuración adicional para SASL. Es posible que debas consultar la documentación de Debezium o buscar ayuda en la comunidad de Debezium para obtener más asistencia.

Comments are closed.