⭐ Development/Tools & 개발 설정

[Kafka] Docker 로 Kafka 설치하기

최리 2021. 11. 10. 00:02

Docker 로 Kafka 를 local 에 세팅하자

1. docker-compose.yml 작성

version: '2'
services:
  zookeeper:
    container_name: zookeeper
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    container_name: kafka
    image: wurstmeister/kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_CREATE_TOPICS: "test-topic:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  • 가장 많이 사용하는 wurstmeister 이미지 사용
  • zookeeper 1 대로 설정하였다.
  • KAFKA_ADVERTISED_HOST_NAME: host
  • KAFKA_ADVERTISED_PORT : port number
  • KAFKA_CREATE_TOPICS "test-topic" 라는 topic 을 생성한다.
    TopicName:Partition개수:Replica개수
  • KAFKA_ZOOKEEPER_CONNECT: zookeeper 정보
  • 참고 : https://github.com/wurstmeister/kafka-docker

2. docker 실행 및 container 접속

컨테이너를 생성 / 실행

docker-compose -f docker-compose.yml up -d

docker ps -a

Docker kafka container 접속

docker exec -it kafka /bin/bash

docker exec -it [컨테이너명] /bin/bash

3. Kafka Topic

topic 생성

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

kafka-topics.sh : kafka-topics.sh shell script
--create : topic 생성
--topic : topic 명
--bootstarap.server : host:port, 대상 카프카 클러스터
--replication-factor : replica 갯수 지정 (복제본의 수)
--partitions : paritions 갯수 지정 (토픽을 몇개로 나눌 것인가)

topic 확인

// topic 목록 확인
kafka-topics.sh --list --bootstrap-server localhost:9092

// 상세 확인
kafka-topics.sh --describe --topic sample-topic --bootstrap-server localhost:9092

4. Producer - 메시지 전송

$ kafka-console-producer.sh --topic sample-topic --bootstrap-server localhost:9092

This is my first event
This is my second event

kafka-console-producer.sh: producer shell script

5. Consumer - 메시지 읽기

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

This is my first event
This is my second event

kafka-console-consumer.sh: consumer shell script
--from-beginning : 어디서부터 메시지를 가지고 올지 정의

6. 마치며

Docker 로 카프카를 설치하고 topic 생성 후 shell 을 실행하여 producer, consumer 동작을 확인해보자.

참고

https://kafka.apache.org/quickstart
https://soyoung-new-challenge.tistory.com/61
https://server-engineer.tistory.com/846

반응형