로컬에서는 잘 되는데 ☘️

로컬에 Docker 기반 Kafka 서버 구축하고 테스트

by youngjun._.
먼저 docker가 설치되어있어야 합니다.

로컬 환경에 Docker를 통해 Kafka 서버를 구축해보자!

Kafka docker image는 wurstmeister/kafka 가 가장 많이 사용되고 있다. Github에서 Release 버전 및 튜토리얼도 확인이 가능하다.

1. docker-compose.yml 작성 및 실행

Kafka를 통한 pub/sub 기능만 테스트해볼 것이기 때문에 싱글 브로커만 구성한다.

또한, topic의 Partition과 Replica 개수도 각각 하나씩만 설정하였다.

version: '2'
services:
  zookeeper:
    container_name: local-zookeeper
    image: wurstmeister/zookeeper:3.4.6
    ports:
      - "2181:2181"
  kafka:
    container_name: local-kafka
    image: wurstmeister/kafka:2.13-2.8.1
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 # 싱글 브로커 환경
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_CREATE_TOPICS: "chat:1:1" # Topic 명 : Partition 개수 : Replica 개수
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

실행 : docker-compose up -d

종료 : docker-compose down

컨테이너 실행

 

Docker Desktop에서 아래와 같이 확인 가능하다.

Docker Desktop

docker ps - a 명령어로 확인해 볼 수도 있다.

명령어로 컨테이너 확인

2. Kafka 테스트

로컬에 Kafka를 또 설치하지 말고, Docker 컨테이너에 접근해서 테스트해보자.

2-1. docker 컨테이너 접속 후 topic 확인

docker container exec -it local-kafka bash

# 컨테이너 서버 접속 후
kafka-topics.sh --list --bootstrap-server localhost:9092

local-kafka 부분은 본인이 띄운 docker 컨테이너의 NAMES를 사용하면 된다.

docker container 접속 후 topic 확인

 

현재 Kafka에 토픽은 chat 하나가 생성되어있는 것이 확인된다.

 

이는 docker-compose.yml 파일에 18 line KAFKA_CREATE_TOPICS: "chat:1:1" 으로 토픽을 먼저 생성했기 때문이다.

 

Kafka 관련 명령어는 공식문서 Quick Start 에 자세히 설명되어있다.

 

2-2. kafka 메시지 pub/sub 테스트

터미널 2개에 각각 접속해서 producer, consumer 테스트를 해보자.

docker container exec -it local-kafka bash

# Producer 실행
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic chat

# Consumer 실행
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic chat

카프카 테스트

Reference

'BigData > Kafka' 카테고리의 다른 글

[Kafka] Quick Start  (0) 2020.11.26
[Kafka] Server 설정하기  (0) 2020.11.25
[Kafka] ZooKeeper 설정  (1) 2020.11.24
[Kafka] 설치하고 실행해보기  (0) 2020.11.23
Kafka란?  (0) 2020.10.13

블로그의 정보

개발하는만두

youngjun._.

활동하기