Docker로 Kafka 실행하기 (w. Zookeeper, Kafka-UI)

Kai·2024년 5월 26일
0

Kafka

목록 보기
3/6

✍️ 이 글에서 사용한 코드: 깃헙

☕ 개요


이번 글에서는 Docker + Kafka HelloWorld를 해보도록 하겠다.
Kafka와 Zookeeper 조합으로 구동할 것이고, GUI환경에서 Kafka를 관리할 수 있는 Kafka-UI까지 세팅해보도록 하겠다.

📒 Docker image 버전

  1. 카프카: bitnami/kafka:3.7.0
  2. 주키퍼: bitnami/zookeeper:3.9.2
  3. 카프카 GUI: provectuslabs/kafka-ui:0.7.2


🧙 Kafka & Zookeeper 실행


1) docker-compose.yml

services:
  zookeeper-0:
    image: bitnami/zookeeper:3.9.2
    container_name: zookeeper-0
    ports:
      - 2181:2181
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ALLOW_ANONYMOUS_LOGIN: yes

  kafka-0:
    image: bitnami/kafka:3.7.0
    container_name: kafka-0
    ports:
      - 9094:9094
    environment:
      ALLOW_PLAINTEXT_LISTENER: yes
      KAFKA_ENABLE_KRAFT: no
      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper-0:2181
      KAFKA_CFG_LISTENERS: PLAINTEXT://:9092,EXTERNAL://:9094
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://kafka-0:9092,EXTERNAL://localhost:9094
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT

  kafka-ui:
    image: provectuslabs/kafka-ui:v0.7.2
    container_name: kafka-ui
    depends_on:
      - kafka-0
    ports:
      - 8080:8080
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka-0:9092

먼저, 위와 같이 docker-compose.yml파일에 주키퍼, 카프카, 카프카-UI에 대한 설정을 한다.

🧐 일부 옵션에 대한 설명

  • KAFKA_ENABLE_KRAFT: Kafka 3.3.0 이상부터는 Zookeeper를 사용하지 않을 수 있는 KRAFT모드를 제공한다. 하지만, 이 글에서는 Zookeeper모드를 사용할 것이므로, no라고 세팅해준다.
  • KAFKA_CFG_LISTENERS: Kafka 브로커가 수신 대기할 주소와 포트를 설정.
  • KAFKA_CFG_ADVERTISED_LISTENERS: Kafka 브로커가 클라이언트에게 알리는 주소를 설정.
  • KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: 각 리스너가 사용할 보안 프로토콜을 설정.

2) 실행

docker-compose up -d

위 명령어를 통해서 Docker 컨테이너를 생성 및 실행한다.

그러면, 위와 같이 정상적으로 컨테이너가 실행된 것을 확인할 수 있다.

3) Zookeeper와 Kafka 연동 확인

아래의 과정이 정상적으로 수행됐다면, Zookeeper와 Kafka의 연동이 완료된 것이다. 👍

  1. Kafka 컨테이너 접속
docker exec -it kafka-0 sh
  1. Kafka 애플리케이션 경로로 이동
cd /opt/bitnami/kafka
  1. API 버전 스크립트 실행 & 결과
bash bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092

4) Kafka-UI 동작 확인

localhost:8080에 접속해보면, 위와 같이 정상적으로 브로커가 등록되어 있는 것을 확인할 수 있다.



🙏 참고


0개의 댓글