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.

KafkaConnect no puede cargar el plugin.

Estoy desplegando KafkaCluster, KafkaConnect en K8s utilizando Strimzi.

  • Imagen del Clúster del Operador Strimzi: quay.io/strimzi/operator:0.26.1
  • Imagen de Kafka: quay.io/strimzi/kafka:0.26.1-kafka-3.0.0.

Estoy tratando de configurar KafkaConnector que se conecta a una base de datos de Postgres.

Estos son mis pasos:

  1. Construir un nuevo KafkaConnect a partir de esta imagen ‘quay.io/strimzi/kafka:0.26.1-kafka-3.0.0’. Esta nueva imagen tiene un complemento que descargo desde este enlace ‘https://debezium.io/documentation/reference/stable/connectors/postgresql.html#postgresql-deployment’
  2. Ejecuto esta nueva imagen en K8s, luego ingreso al contenedor de KafkaConnect. Tiene el complemento correctamente (‘/opt/kafka/plugins/debezium/debezium-connector-postgres’):
    enter image description here
  3. Creo un KafkaConnector que hace referencia a la clase ‘io.debezium.connector.postgresql.PostgresConnector’:
    apiVersion: "kafka.strimzi.io/v1beta2"
    kind: "KafkaConnector"
    metadata:
    name: dev-approvalflowservice-connector
    labels:
    strimzi.io/cluster: postgres-connect-cluster-1
    spec:
    class: io.debezium.connector.postgresql.PostgresConnector
    tasksMax: 2
    config:
    database.hostname: 10.14.101.204
    database.port: "5432"
    database.user: "debezium"
    database.password: "debezium"
    database.dbname: "approvalflowservice"
    database.server.name: "approvalflowservice"
    plugin.name: "pgoutput"
    slot.name: "approvalflowserviceslot"
    truncate.handling.mode: "include"
    table.include.list: "public.approval_flow"
  4. El problema es que KafkaConnect no puede cargar el complemento que ya agregué a la nueva imagen de KafkaConnect. Registro de KafkaConnect: log

Actualización

  1. Intenté cambiar la ubicación del complemento dentro de la nueva imagen de KafkaConnect (‘/opt/kafka/plugins/debezium-connector-postgres’):
    enter image description here
  2. El problema es el mismo: log

Gracias a todos.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución de problemas en la configuración del complemento KafkaConnect en un clúster de Strimzi Operator

    Contexto

    Como experto en IT especializado en Apache Kafka, Apache Kafka-Connect, Debezium y Strimzi, he implementado KafkaCluster y KafkaConnect en K8s utilizando la imagen del clúster del operador Strimzi: quay.io/strimzi/operator:0.26.1 e imagen de Kafka: quay.io/strimzi/kafka:0.26.1-kafka-3.0.0. Sin embargo, me enfrento a un problema al configurar KafkaConnector que se conecta a la base de datos de Postgres.

    Problema

    KafkaConnect no carga el complemento incluso después de agregarlo en la nueva imagen de KafkaConnect.

    Solución

    1. Primero, construya un nuevo KafkaConnect a partir de la imagen quay.io/strimzi/kafka:0.26.1-kafka-3.0.0. Esta nueva imagen debe tener el complemento descargable desde este enlace https://debezium.io/documentation/reference/stable/connectors/postgresql.html#postgresql-deployment.
    2. Ejecute esta nueva imagen en K8s y luego ejecute el contenedor KafkaConnect. Verifique si el complemento se encuentra correctamente en /opt/kafka/plugins/debezium/debezium-connector-postgres.

    3. Cree un nuevo KafkaConnector como se muestra en el fragmento de código a continuación. Debe hacer referencia a la clase io.debezium.connector.postgresql.PostgresConnector.

      apiVersion: "kafka.strimzi.io/v1beta2"
      kind: "KafkaConnector"
      metadata:
        name: dev-approvalflowservice-connector
        labels:
          strimzi.io/cluster: postgres-connect-cluster-1
      spec:
        class: io.debezium.connector.postgresql.PostgresConnector
        tasksMax: 2
        config:
          database.hostname: 10.14.101.204
          database.port: "5432"
          database.user: "debezium"
          database.password: "debezium"
          database.dbname: "approvalflowservice"
          database.server.name: "approvalflowservice"
          plugin.name: "pgoutput"
          slot.name: "approvalflowserviceslot"
          truncate.handling.mode: "include"
          table.include.list: "public.approval_flow"
      

    4. Si el complemento aún no se carga, verifique los registros de Kafka connect en busca de errores. El problema podría ser debido a una configuración incorrecta o incompleta.
    5. Intente cambiar la ubicación del complemento dentro de la nueva imagen de KafkaConnect a /opt/kafka/plugins/debezium-connector-postgres.

    6. Si el problema persiste, comparta los registros de conexión para seguir investigando.

    Espero que esto ayude a resolver el problema. Si tiene alguna pregunta o inquietud, hágamelo saber.

Comments are closed.