728x90
반응형

1. Docker 및 Docker compose 설치

 

Docker | 시작하기 :: 티포의개발일지 (tistory.com)

 

 

Docker | 시작하기

1. Docker 란? Docker란 컨테이너를 생성하고 관리하기 위한 도구이다. 여기서 컨테이너란 표준화된 소프트웨어 유닛을 말한다. 기본적으로 해당 코드를 실행하는데 필요한 종속성과 도구가 포함된

typo.tistory.com

 

 

Docker | Docker-Compose :: 티포의개발일지 (tistory.com)

 

Docker | Docker-Compose

1. Docker Compose 란? 'docker build'와 'docker run' 명령을 대체할 수 있는 도구 Dockerfile을 대체하지 않는다. 함께 작동한다. 이미지나 컨테이너를 대체하지 않는다. 다수의 호스트에서 다중 컨테이너를 관

typo.tistory.com

 

 

Docker | Docker-Compose

1. Docker Compose 란? 'docker build'와 'docker run' 명령을 대체할 수 있는 도구 Dockerfile을 대체하지 않는다. 함께 작동한다. 이미지나 컨테이너를 대체하지 않는다. 다수의 호스트에서 다중 컨테이너를 관

typo.tistory.com

 

2. Kafka 설치

 

docker-compose.yaml 파일을 생성한다.

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

 

- 설명

version: '2' //docker-compose 버전 지정
services: //docker-compose의 경우 docker 컨테이너로 수행될 서비스들은 services 하위에 기술
  zookeeper: //서비스 이름. service 하위에 작성하면 해당 이름으로 동작
    image: wurstmeister/zookeeper //도커 이미지
    container_name: zookeeper
    ports: //외부포트:컨테이너내부포트
      - "2181:2181" 
  kafka: 
    image: wurstmeister/kafka
    container_name: kafka
    ports: //외부포트:컨테이너내부포트
      - "9092:9092"
    environment://kafka 브로터를 위한 환경 변수 지정
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 //kafka가 zookeeper에 커넥션하기 위한 대상을 지정
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

 

아래 명령어를 실행한다.

$ docker-compose up -d

 

Docker Desktop으로 확인해본다.

 

3. Kafka 테스트

 

생성된 Kafka Container에 접속한다.

$ docker container exec -it kafka bash

 

토픽을 생성한다. 

# kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1

 

프로듀서를 실행한다.

// # bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
# kafka-console-producer.sh --broker-list localhost:9092 --topic pro-topic

 

 

컨슈머를 실행한다.

# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning

 

토픽 목록을 조회한다.

# kafka-topics.sh --list --bootstrap-server localhost:9092

토픽을 삭제한다.

# kafka-topics.sh --delete --topic test-topic --bootstrap-server localhost:9092

 


Zookeeper를 사용하지 않고 Docker Contrainer 쓰는 법

  kafka:
    image: bitnami/kafka:3.4
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_PROCESS_ROLES=broker,controller
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_LISTENERS=CONTROLLER://:9093,PLAINTEXT://:9092
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
      - KAFKA_CFG_DELETE_TOPIC_ENABLE=true
      - KAFKA_CFG_BROKER_ID=1
      - KAFKA_CFG_NODE_ID=1
      - KAFKA_ENABLE_KRAFT=yes
      - TZ=Asia/Seoul
728x90
반응형

+ Recent posts