kafka

카프카 다운로드

몽게구름 2025. 8. 31. 00:50

docker에서 카프카를 생성하는 법.

 

 

먼저 docker compose를 사용하기 위해 kafka를 다운받을 폴더를 생성한다.

그 후 docker-compose.yml 파일을 생성한다.

version: "3.9"
services:
  kafka:
    image: apache/kafka:latest
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_NODE_ID: 1
      KAFKA_PROCESS_ROLES: broker,controller
      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:29093

      # listeners에 CONTROLLER가 반드시 포함되어야 함
      KAFKA_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:29093
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092

      # controller.listener.names는 위 listeners에 있는 이름과 정확히 일치해야 함
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER

      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
    volumes:
      - kafka_data:/var/lib/kafka
volumes:
  kafka_data:

 

 

그 후 docker compose up -d 를 사용하여 도커에 카프카를 생성한다.

 

# 1.exec로 바로 실행
docker exec -it kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

# 2.컨테이너 쉘에 한번 들어가서 여러 명령 실행
docker exec -it kafka /bin/sh
# 진입 후
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test

# 3.docker compose exec 사용
docker compose exec kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

 

1번 방법으로 카프카가 정상적으로 동작 되는지 확인 해보자.

 

/** 토픽 생성 **/
docker exec -it kafka /opt/kafka/bin/kafka-topics.sh `
  --bootstrap-server localhost:9092 `
  --create --topic test --partitions 1 --replication-factor 1
  
  
/** 메시지 생성 **/
docker exec -it kafka /opt/kafka/bin/kafka-console-producer.sh `
--bootstrap-server localhost:9092 `
--topic test
>h1
>h2
//메시지를 다 썻다면 ctrl+c로 빠져 나오자
  
  
 /**메시지 확인 **/
docker exec -it kafka /opt/kafka/bin/kafka-console-consumer.sh `
--bootstrap-server localhost:9092
--topic test `
--partition 0`
--offset 0`
--max-messages 10

 

 

정상적으로 토픽 생성 / 메시지 생성 / 메시지 조회 가 되는것을 확인 할수 있다.

 

 

ps. 아직 카프카가 어렵다...

또한 카프카가 버전이 올라가면서 zookeeper가 제거 되면 kafka만 받으면 kraft 모드로 동작을 한다.

그래서 이제는 kafka 도커 이미지 하나로 다 된다고 한다.