-
docker 로 kafka 설치docker 2021. 12. 22. 23:43
https://github.com/wurstmeister/kafka-docker 를 이용해 kafka 를 설치한다.
https://github.com/windbird123/kafka-docker 에는 아래의 수정이 적용되어 있어 docker-compose.yml 의 volumes 항목만 수정해 바로 docker-compose 로 실행할 수 있다.
kafka-docker clone
git clone https://github.com/wurstmeister/kafka-docker.git
Dockerfile 수정
# 설치할 kafka, scala 버전을 변경해 준다. # https://github.com/wurstmeister/kafka-docker#tags-and-releases 참고 ARG kafka_version=2.4.1 ARG scala_version=2.12 # docker-compose.yml 에서 /kafka mount 위치를 명시적으로 지정하도록 수정할 예정이므로 # VOLUME 부분을 주석 처리해 준다. #VOLUME ["/kafka"]
docker-compose.yml 수정
kafka 항목에 environment, volumes 를 아래와 같이 수정한다.
kafka: build: . ports: # 명시적으로 9092->9092 port 를 연결 - "9092:9092" environment: DOCKER_API_VERSION: 1.22 # 현재 host 의 hostname(or ip) KAFKA_ADVERTISED_HOST_NAME: localhost # LEADER_NOT_AVAILABLE 가 발생할 경우 # 참고: https://17billion.github.io/kafka/2017/09/01/kafka_leader_not_available.html KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://localhost:9092' KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 # 기타 환경 설정 KAFKA_MESSAGE_MAX_BYTES: 10000000 KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' KAFKA_DELETE_TOPIC_ENABLE: 'true' volumes: - /var/run/docker.sock:/var/run/docker.sock # kafka 데이터를 저장할 위치를 명시적으로 마운트 한다. - /mydir/kafka/data:/kafka
docker-compose 실행
# 최신 버전 docker 가 설치되었다면 docker compose up -d # 혹은 docker-compose 가 설치되었다면 docker-compose up -d
kafka 동작 테스트
kafka download
Dockerfile 에 정의한 kafka, scala 버전과 일치하는 kafka 를 다운로드 한다.
wget https://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.1.tgz tar xvfz kafka_2.12-2.4.1.tgz
topic 생성
test 이름으로 topic 을 생성한다.
cd kafka_2.12-2.4.1/ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 4 --topic test
consumer 실행
test topic 을 consume 하는 consumer 를 실행한다.
bin/kafka-console-consumer.sh --topic test --bootstrap-server localhost:9092 --from-beginning
producer 실행
새로운 터미널을 열어 producer 를 실행한다.
bin/kafka-console-producer.sh --topic test --broker-list localhost:9092
producer 와 consumer 연동 확인
- producer 가 실행된 터미널 abc123 입력후 엔터
- consumer 터미널에서 abc123 을 읽어 출력되는 것 확인
(참고) topic 삭제
bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
'docker' 카테고리의 다른 글
docker 로 elasticsearch 7 설치 (0) 2023.11.21 docker error "TLS handshake timeout" (0) 2022.06.24 docker 로 mysql 설치하고 접속하기 (0) 2021.11.07 docker 로 postgresql 설치하고 접속하기 (0) 2021.11.07 docker container 에서 zombie 프로세스 발생 문제 (0) 2021.10.14