로컬에 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 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를 사용하면 된다.
현재 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._.