[무작정] Docker + Kafka

hyeon·2020년 12월 19일
0

0. 환경 및 준비

  • windows 10
  • kafka 버전 2.6.0 (현재 latest)
  • zookeeper 버전 3.4.13 (현재 latest)
  • docker와 docker-compose에 대한 이해
  • 적당한 ssh (난 mobaxterm)
  • 이럴 때 빠질 수 없는 공식문서 열어놓기 (버전은 꼭 확인하길)
    https://kafka.apache.org/quickstart

1. Kafka란

  • Producer(Leader/Follower) -> Broker -> Consumer
  • 뛰어난 호환성
  • 리더 관리를 위해 Zookeeper와 함께 사용

2. 구조

  • Kafka는 하나의 노드만 실행할 것이다.
  • Topic을 생성하고 하나의 메인, 하나의 레플리카를 만들 것이다.
  • 주키퍼는 어차피 필수이다.

3. docker-compose.yml

  • 이미 만들어져있는 친절한 이미지를 사용하도록 한다.
version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_CREATE_TOPICS: "Topic:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - ./vol:/var/run/docker.sock
    depends_on:
      - zookeeper
namemandatorydesc.
KAFKA_ADVERTISED_HOST_NAMEO-
KAFKA_CREATE_TOPICSXname:partition no: replica no
KAFKA_ZOOKEEPER_CONNECTO주키퍼 정보

4. docker 및 컨테이너 실행

// yaml 파일이 있는 디렉토리에서
> docker-compose up -d

// kafka 컨테이너 확인 
> docker ps

// 컨테이너 실행
> docker exec -it [container Id] /bin/bash

5. 토픽 확인하기

  • echo $PATH 를 통해 확인해보면, kafka의 bin 디렉이 이미 경로에 추가된 것을 확인할 수 있다.
  • 따라서 .sh 아무거나 아무데서나 실행할 수 있다.
$ kafka-topics.sh --describe --topic Topic --bootstrap-server localhost:9092

// Topic: Topic    PartitionCount: 1       ReplicationFactor: 1    Configs: segment.bytes=1073741824
//        Topic: Topic    Partition: 0    Leader: 1001    Replicas: 1001  Isr: 1001

6. 콘솔로 produce와 consume 해보기

  • 화면을 분할해서 왼쪽에는 producer 창, 오른쪽에는 consumer 창을 띄워 실시간으로 처리되는 것을 확인해봐도 좋다
// produce (빠져나갈 땐 Ctrl+C)
$ kafka-console-producer.sh --topic Topic --bootstrap-server localhost:9092

// consume (빠져나갈 땐 Ctrl+C)
$ kafka-console-consumer.sh --topic Topic --from-beginning --bootstrap-server localhost:9092

0개의 댓글