Windows 환경에서 Docker를 설치해보자. (for Kafka)
작업관리자
(Ctrl
+ Alt
+ Del
) > 성능
탭에서 가상화가 사용중인지 확인제어판
> 관리 도구
에 Hyper-V 관리자가 있다면 성공Ctrl
+ R
> cmd
입력)에서 docker version
을 입력로컬 환경(
no cloud)에서Docker를 이용하여 Kafka 서버를 구축하는 방법에 대해 알아보자!
wurstmeister/kafka
를 선택하자.wurstmeister/kafka
공식 문서로 가기docker-compose
를 설치
Zookeeper
가 사전에 실행되어야 하기 때문에 compose
를 통해 실행하는 것이 좋다.docker-compose
는 설치된다.docker-compose에 KAFKA_ADVERTISED_HOST_NAME
를 개발자 본인의 도커 호스트 IP와 맞도록 변경해야 한다.
docker-compose.yml
파일이다.localhost
또는 127.0.0.1
과 같은 아이피를 사용하지 말자.또 다른 Kafka 이미지를 커스텀하고 싶다면, docker-compose.yml
에 환경 변수로써 추가하자.
message.max.bytes
와 같은 변수를 향상시키기 위해 KAFKA_MESSAGE_MAX_BYTES: 2000000
와 같이 설정하고, 자동으로 설정되는 Topic을 끄기 위해 KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
를 설정.LOG4J_
로 미리 설정된 환경 변수를 추가함으로써 KAFKA의 log4j
사용을 커스터마이징 할 수 있다. 이는 log4j.properties
와 매핑될 것이다.
LOG$J_LOGGER_KAFKA_AUTHORIZER_LOGGER=DEBUG, authorizerAppender
docker-compose.yml
을 생성version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
#build: .
image: wurstemister/zookeeper
ports:
- "9092"
environment:
DOCKER_API_VERSION: 1.22
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
KAFKA_ADVERTISED_HOST_NAME
는 사전 준비 두번째 사항에 따라 본인의 도커 호스트 IP와 동일하게 작성해야 한다. 하지만, 해당 블로그에서는 간단하게 환경을 구축하기 위해서 KAFKA_ADVERTISED_HOST_NAME
부분만 수정하여 싱글 브로커 환경으로 카프카를 생성할 것이다.docker-compose.yml
파일 작성을 마치고 파일이 저장된 위치에서 compose
를 실행해보자.docker-compose up -d
명령어를 통해서 이미지 다운 완료를 가르키는 done
이 떴으니 실제로 컨테이너가 실행되는지 확인해보자!Kafka
와 Zookeeper
컨테이너가 실행되고 있다.Kafka를 다운로드하고 실행해보자.
2.13
을 받았다. (docker-compose.yml
가 있는 파일 경로)Kafka
는 스칼라로 개발되었기 때문에 시스템에 JVM(+8)
이 설치되어 있어야 한다.필자는 Windows Poswershell
를 이용하여 리눅스 환경에서 실행할 것이다.
Zookeeper
는 Kafka
클러스터의 데이터들을 관리하기 위해 사용되기 때문에 Kafka
실행 전, Zookeeper
를 먼저 실행해야 한다.
kafka_2.13-3.0.0/bin
zookeeper-server-start.sh
: Zookeeper
서버를 실행하는 파일kafka-server-start.sh
: Kafka
서버 실행 파일kafka_2.13-3.0.0/config
zookeeper.properties
Zookeeper
의 서버 설정 파일clientPort=2181
server.properties
Kafka
의 서버 설정 파일bin/zookeeper-server-start.sh config/zookeeper.properties
#(Another Windows PowerShell)
bin/kafka-server-start.sh config/server.properties
위와 같은 명령어를 통해 Zookeeper
와 Kafka
를 실행하자.
❓아래와 같은 오류가 뜬다면 WSL 2를 설치 또는 재설정해야한다.
[0.003s][error][logging] Error opening log file '/c/Users/Manol/Downloads/kafka_2.13-2.7.0/kafka_2.13-2.7.0/bin/../logs/kafkaServer-gc.log': No such file or directory
[0.003s][error][logging] Error opening log file '/c/Users/Manol/downloads/kafka_2.13-2.7.0/kafka_2.13-2.7.0/bin/../logs/zookeeper-gc.log': No such file or directory
Kafka
실행 예제도 있다.Ubuntu 20.04 LTS
환경으로 바꿨다.해당 예제는 오류를 만난 필자로 인해
Ubuntu 20.04 LTS
환경에서 작업한 내용이다.
Topic
관련 옵션이 궁금할 때 : bin/kafka-topics.sh --help
(help 명령어)Topic
생성 (또 다른 창을 열어야 한다.
)bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
--create
: 새로운 토픽 생성 옵션--bootstrap-server
--replication-factor
Partition
복제 수server.properties
의 default.replication.factor
로 설정 가능--partitions
server.properties
의 num.partitions
로 설정 가능--topic
create
, alter
, describe
, delete
옵션에 사용할 토픽 이름\
로 escape.bin/kafka-topics.sh --list --bootstrap-server localhost:9092
bin/kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092
bin/kafka-topics.sh --delete --topic test --bootstrap-server localhost:9092
server.properties
의 delete.topic.enable=true
설정으로 가능 + 서버 재시작Producer
관련 옵션이 궁금할 때 : bin/kafka-console-producer.sh --help
(help 명령어)bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
Consumer
관련 옵션이 궁금할 때 : bin/kafka-console-consumer.sh --help
(help 명령어)bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
--from-beginning
offset
이 없으므로 가장 최신의 메시지 대신 가장 먼저 도착한 메시지부터 읽도록 하는 옵션입니다.