Skip to content

Quick Start

¿Cómo levantar kafka en entorno local?

La manera más sencilla de levantar un cluster de kafka es con docker. Puede descargar Docker desde https://www.docker.com/

  1. Cree un archivo docker-compose.yml
  2. Agregue las siguientes lineas.

    version: '2'
    
    services:
      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
        command: [
          "sh", "-c",
          "bin/kafka-server-start.sh config/server.properties --override listeners=$${KAFKA_LISTENERS} --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override zookeeper.connect=$${KAFKA_ZOOKEEPER_CONNECT} --override inter.broker.listener.name=$${KAFKA_INTER_BROKER_LISTENER_NAME} --override listener.security.protocol.map=$${KAFKA_LISTENER_SECURITY_PROTOCOL_MAP}"
        ]
        depends_on:
          - zookeeper
        ports:
          - "9092:9092"
          - "9094:9094"
        environment:
          LOG_DIR: "/tmp/logs"
          KAFKA_ADVERTISED_HOST_NAME: localhost
          KAFKA_LISTENERS: "INTERNAL://:29092,EXTERNAL://: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_ZOOKEEPER_CONNECT: zookeeper:2181
          KAFKA_CREATE_TOPICS: "storage-topic:1:1:compact,global-id-topic:1:1:compact,input-topic:1:1:compact,logx-topic:1:1:compact,dbx-topic:1:1:compact"
    
      kafdrop:
       image: obsidiandynamics/kafdrop
       restart: "no"
       ports:
         - "9000:9000"
       environment:
         KAFKA_BROKERCONNECT: kafka:29092
         JVM_OPTS: "-Xms16M -Xmx48M -Xss180K -XX:-TieredCompilation -XX:+UseStringDeduplication -noverify"
       depends_on:
         - "kafka"
    
      registry:
        image: apicurio/apicurio-registry-mem
        ports:
          - "8081:8080"
        environment:
          KAFKA_BOOTSTRAP_SERVERS: localhost:9092
          APPLICATION_ID: registry_id
          APPLICATION_SERVER: localhost:9000
    

  3. En una terminal, posicionese dentro de la carpeta que contiene el compose y corra el siguiente comando

docker-compose up

De esta manera ya tenemos corriendo kafka entre otras aplicaciones en nuestro local.

Configuración

kafka se encuentra escuchando en http://localhost:9092

Podemos conectarnos a kafka a través de Kafdrop que viene configurado en el compose. Para esto entramos en: http://localhost:9000/ dock

Podemos jugar un poco más con el contenedor de kafka.

Vamos a crear un topic para validar que este funcionando correctamente, para eso ejecutamos los siguientes comandos en CLI.

$ docker exec -it {CONTAINER_ID} bash
Una vez dentro del contenedor, nos posicionamos y creamos el topic "test-documentation"

$ cd /opt/kafka/bin


$ ./kafka-topics.sh --bootstrap-server localhost:9092  \
 --topic test-documentation  \
 --partitions 3  \
 --replication-factor 1 \
 --create
Podemos ver el Topic creado en kafdrop, simplemente refrescamos y deberiamos ver el topic.