[Kafka] Docker 로 Kafka 설치하기

    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

    반응형

    댓글

    Designed by JB FACTORY