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
name | mandatory | desc. |
---|
KAFKA_ADVERTISED_HOST_NAME | O | - |
KAFKA_CREATE_TOPICS | X | name:partition no: replica no |
KAFKA_ZOOKEEPER_CONNECT | O | 주키퍼 정보 |
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