Kafka

[Kafka] 도커 컴포즈 + 카프카, 주키퍼 환경 구축

new_challenge 2020. 6. 18. 20:17
반응형

이번 포스팅은 도커 컴포즈를 사용하여

카프카와 쥬키퍼 클러스터를사용해보는 포스팅 입니다.

 

 

 

 

도커 컴포즈 생성

docker-compose.yml

아래 컴포즈 파일은 zookeeper 클러스터 1개와 kafka 클러스터 1개로 구성되어 있다

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper:3.4.6
    container_nme: zoo1
    ports:
      - "2181:2181"
    networks:
      - zooNkaf

  kafka:
    image: wurstmeister/kafka:2.12-2.0.1 # 특정 버전으로 지정
    container_name: kaf1
    environment:
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "test-topic:1:1"   # Topic명:Partition개수:Replica개수
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    networks:
      - zooNkaf

networks:
  zooNkaf:
    driver: bridge

 

도커 컴포즈 실행 및 확인

> 위 파일 생성 후, 해당 파일이 있는 위치에서 도커 컴포즈를 실행

$ docker-compose up

 

> 실행 중인 컨테이너 확인

$ docker ps

 

> 주키퍼 로그 확인

$ docker logs zoo1 [위에서 설정 한 컨테이너 이름]

 

 

> 카프카 로그 확인

$ docker logs kaf1

 

카프카 사용

카프카 바이너리 파일 다운 

아래 링크에서 도커 이미지 생성에 사용한 버전과 동일한 버전을 찾아서 다운로드 한다

kafka.apache.org/downloads

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

아래와 같은 순서로 파일 다운 > 압축 해제 > 해당 폴더 접근 

# 다운로드
$ wget https://archive.apache.org/dist/kafka/2.0.1/kafka_2.12-2.0.1.tgz

# 압축 해제
$ tar -zxvf kafka_2.12-2.0.1.tgz

# 압축 폴더 삭제
$ rm kafka_2.12-2.0.1.tgz

# 해당 폴더 접근
$ cd kafka_2.12-2.0.1

 

카프카 사용 및 테스트

생성된 토픽 리스트 확인

도커 컴포즈 파일안에 토픽 생성하는 내용이 있어서 기본으로 토픽 하나가 생성되어 있다 ( test_topic)

$ sh bin/kafka-topics.sh --zookeeper localhost:2181 --list

 

Producer / Consumer 사용

> 2개의 다른 콘솔 창을 준비한다

> 하나는 프로듀서 용 / 하나는 컨슈머 용

 

프로듀서 실행

# 프로듀서 실행

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

> 프로듀서 실행 후 입력 할 수 있게 되는데, 그곳에서 메세지를 보내면 컨슈머를 실행 한 창에서 메세지 확인이 가능

 

 

컨슈머 실행

# 컨슈머 실행

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

> 프로듀서에서 보낸 메세지를 확인 할 수 있다.

 

프로듀서와 컨슈머

 

새로운 토픽 생성

# 새로운 토픽 생성
$ bin/kafka-topics.sh --create --topic check-topic --partitions 1 --replication-factor 1 --zookeeper localhost:2181

# 토픽 리스트 확인
$ bin/kafka-topics.sh --zookeeper localhost:2181 --list

생성된 토픽 확인

 

도커 컴포즈 종료

$ docker-compose down

반응형