프로그래밍 노트/kafka

[kafka] Docker 사용하여 카프카 실행하기

깡냉쓰 2021. 6. 20. 18:07
728x90
반응형

실행에 앞서 PC에 docker가 설치되어 있어야 한다.

1. kafka-docker repository clone

$ git clone https://github.com/wurstmeister/kafka-docker

2. docker-compose-single-borker.yml 수정

해당 compose 파일을 사용하면 zookeeper-1대, broker(kafka)-1대 를 실행시킬 수 있다.
multi broker는 나중에 기회가 되면 셋팅 해보자.

로컬에서 실행하므로 KAFKA_ADVERTISED_HOST_NAME을 127.0.0.1로 수정한다.

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

3. docker container 실행

$ docker-compose -f docker-compose-single-broker.yml up

트러블 슈팅!!

기존 PC에서는 문제 없이 실행되었는데, 새로 구비한 개발장비에서 아래와 같은 오류가 나서 kafka가 올라가지 않는 현상이 발생했다.
-> kafka sed unmatched '@'
https://github.com/wurstmeister/kafka-docker/issues/652
docker-compose-single-broker.yml에 KAFKA_ADVERTISED_PORT=9092를 추가해줬더니 정상 동작하는 것을 확인했다.
(오류가 왜 났는지 디테일하게 찾아보지 않았음)

4. Topic 생성하기

kafka에서 제공하는 shell을 사용해야하기 때문에 kafka를 설치해야한다.

$ wget http://apache.mirror.cdnetworks.com/kafka/2.8.0/kafka_2.12-2.8.0.tgz
$ tar xzvf kafka_2.12-2.8.0.tgz

corn topic을 생성한다.

$ ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic corn

5. producer/consumer 사용해보기

터미널을 2개 띄어서 하나는 consumer, 하나는 producer로 사용해보자.

consumer

corn 토픽을 처음 offset부터 읽는다는 의미

$ $ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic corn --from-beginning

prooducer

$ ./kafka-console-producer.sh --broker-list localhost:9092 --topic corn

프로듀서를 실행하면 입력을 할 수 있는 창이 나타나고, 여기에 메시지를 입력하면 consumer가 발행된 메시지를 읽게 된다.

 

728x90
반응형