0

I have created kogito quarkus application. And this application needs to some services to interact with. I created docker-compose file, which contains 7 services(zookeper, kafka, infinispan, management-console, task-console, keycloak and data-index). All services running except data-index service. data-index can't connected with kafka. Below my docker-compose file.

  version: '2.1'

  services:

    infinispan:
      image: infinispan/server:14.0.5.Final
      container_name: infinispan
      ports:
          - "11222:11222"
      command: "-c infinispan-demo.xml"
      volumes:
        - ./infinispan/infinispan.xml:/opt/infinispan/server/conf/infinispan-demo.xml:z
      healthcheck:
        test: [ "CMD", "curl", "-f", "http://localhost:11222/rest/v2/cache-managers/default/health/status" ]
        interval: 1s
        timeout: 1s
        retries: 50

    zookeeper:
      container_name: zookeeper
      image: strimzi/kafka:0.20.1-kafka-2.6.0
      command: [
        "sh", "-c",
        "bin/zookeeper-server-start.sh config/zookeeper.properties"
      ]
      ports:
        - "2181:2181"
      environment:
        LOG_DIR: "/tmp/logs"

    kafka:
      image: strimzi/kafka:0.20.1-kafka-2.6.0
      container_name: kafka
      command: [
        "sh", "-c",
        "bin/kafka-server-start.sh config/server.properties --override inter.broker.listener.name=$${KAFKA_INTER_BROKER_LISTENER_NAME} --override listener.security.protocol.map=$${KAFKA_LISTENER_SECURITY_PROTOCOL_MAP} --override listeners=$${KAFKA_LISTENERS} --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override zookeeper.connect=$${KAFKA_ZOOKEEPER_CONNECT}"
      ]
      depends_on:
        - zookeeper
      ports:
        - "9092:9092"
      environment:
        KAFKA_BROKER_ID: 0
        KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
        KAFKA_LISTENERS: INTERNAL://kafka:29092,EXTERNAL://kafka:9092
        KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:29092,EXTERNAL://localhost:9092
        KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
        KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
        KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
        KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
        LOG_DIR: "/tmp/logs"

    keycloak:
      container_name: keycloak
      image: quay.io/keycloak/keycloak:legacy
      ports:
        - "8480:8080"
      volumes:
        - ./keycloak/kogito-realm.json:/tmp/kogito-realm.json
      healthcheck:
        test: [ "CMD", "curl", "-f", "http://localhost:8080/auth/realms/kogito" ]
        interval: 1s
        timeout: 1s
        retries: 50
      environment:
        KEYCLOAK_USER: admin
        KEYCLOAK_PASSWORD: admin
        KEYCLOAK_IMPORT: /tmp/kogito-realm.json

    data-index:
      container_name: data-index
      image: quay.io/kiegroup/kogito-data-index-infinispan:1.41
      ports:
        - "8180:8080"
      depends_on:
        kafka:
          condition: service_started
        infinispan:
          condition: service_healthy
      volumes:
        - ./persistence/:/home/kogito/data/protobufs/
      environment:
        QUARKUS_INFINISPAN_CLIENT_USE_AUTH: "false"
        QUARKUS_INFINISPAN_CLIENT_HOSTS: infinispan:11222
        KAFKA_BOOTSTRAP_SERVERS: kafka:9092
        QUARKUS_HTTP_CORS_ORIGINS: "/.*/"
        KOGITO_DATA_INDEX_PROPS: -Dkogito.protobuf.folder=/home/kogito/data/protobufs/

    management-console:
    container_name: management-console
    image: quay.io/kiegroup/kogito-management-console:1.41
    ports:
      - 8280:8080
    depends_on:
      data-index:
        condition: service_started
      keycloak:
        condition: service_healthy
    volumes:
      - ./svg/:/home/kogito/data/svg/
    environment:
      KOGITO_DATAINDEX_HTTP_URL: http://${DOCKER_GATEWAY_HOST:-host.docker.internal}:8180/graphql
      QUARKUS_HTTP_CORS_ORIGINS: "/.*/"
      KOGITO_MANAGEMENT_CONSOLE_PROPS: -Dkogito.consoles.keycloak.config.url=http://localhost:8480/auth -Dkogito.consoles.keycloak.config.health-check-url=http://localhost:8480/auth/realms/kogito/.well-known/openid-configuration -Dkogito.svg.folder.path=/home/kogito/data/svg

    task-console:
      container_name: task-console
      image: quay.io/kiegroup/kogito-task-console:1.41
      ports:
        - 8380:8080
      depends_on:
        data-index:
          condition: service_started
        keycloak:
          condition: service_healthy
      environment:
        KOGITO_DATAINDEX_HTTP_URL: http://${DOCKER_GATEWAY_HOST:-host.docker.internal}:8180/graphql
        QUARKUS_HTTP_CORS_ORIGINS: "/.*/"
        KOGITO_TASK_CONSOLE_PROPS: -Dkogito.consoles.keycloak.config.url=http://localhost:8480/auth -Dkogito.consoles.keycloak.config.health-check-url=http://localhost:8480/auth/realms/kogito/.well-known/openid-configuration

 

I'm getting below log from data-index service:

[org.apa.kaf.cli.NetworkClient] (smallrye-kafka-consumer-thread-1) [Consumer clientId=kafka-consumer-kogito-processinstances-events, groupId=kogito-data-index-processinstances] Connection to node 0 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.

I specified environment variable on data-index like KAFKA_BOOTSTRAP_SERVERS: kafka:9092. But it tries to connect localhost rather than kafka. From data-index services terminal I write getent hosts kafka and it responds with 172.30.0.5 kafka.

maksnurgazy
  • 21
  • 1
  • 4

1 Answers1

2

The issue is the value passed to data-index in KAFKA_BOOTSTRAP_SERVERS. It references to the EXTERNAL Kafka listener (kafka:9092) and it needs to reference to the INTERNAL one (kafka:29092)

You need to change the value of this environment variable passed to the data-index to: KAFKA_BOOTSTRAP_SERVERS: kafka:29092

Neus Miras
  • 21
  • 1