Spring boot | Spring Apache Kafka 사용법 ( with Docker Container ) | Kafka 설치
1. Docker 및 Docker compose 설치
Docker | 시작하기 :: 티포의개발일지 (tistory.com)
Docker | 시작하기
1. Docker 란? Docker란 컨테이너를 생성하고 관리하기 위한 도구이다. 여기서 컨테이너란 표준화된 소프트웨어 유닛을 말한다. 기본적으로 해당 코드를 실행하는데 필요한 종속성과 도구가 포함된
typo.tistory.com
Docker | Docker-Compose :: 티포의개발일지 (tistory.com)
Docker | Docker-Compose
1. Docker Compose 란? 'docker build'와 'docker run' 명령을 대체할 수 있는 도구 Dockerfile을 대체하지 않는다. 함께 작동한다. 이미지나 컨테이너를 대체하지 않는다. 다수의 호스트에서 다중 컨테이너를 관
typo.tistory.com
Docker | Docker-Compose
1. Docker Compose 란? 'docker build'와 'docker run' 명령을 대체할 수 있는 도구 Dockerfile을 대체하지 않는다. 함께 작동한다. 이미지나 컨테이너를 대체하지 않는다. 다수의 호스트에서 다중 컨테이너를 관
typo.tistory.com
2. Kafka 설치
docker-compose.yaml 파일을 생성한다.
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- 설명
version: '2' //docker-compose 버전 지정
services: //docker-compose의 경우 docker 컨테이너로 수행될 서비스들은 services 하위에 기술
zookeeper: //서비스 이름. service 하위에 작성하면 해당 이름으로 동작
image: wurstmeister/zookeeper //도커 이미지
container_name: zookeeper
ports: //외부포트:컨테이너내부포트
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
ports: //외부포트:컨테이너내부포트
- "9092:9092"
environment://kafka 브로터를 위한 환경 변수 지정
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 //kafka가 zookeeper에 커넥션하기 위한 대상을 지정
volumes:
- /var/run/docker.sock:/var/run/docker.sock
아래 명령어를 실행한다.
$ docker-compose up -d
Docker Desktop으로 확인해본다.
3. Kafka 테스트
생성된 Kafka Container에 접속한다.
$ docker container exec -it kafka bash
토픽을 생성한다.
# kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
프로듀서를 실행한다.
// # bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
# kafka-console-producer.sh --broker-list localhost:9092 --topic pro-topic
컨슈머를 실행한다.
# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
토픽 목록을 조회한다.
# kafka-topics.sh --list --bootstrap-server localhost:9092
토픽을 삭제한다.
# kafka-topics.sh --delete --topic test-topic --bootstrap-server localhost:9092
Zookeeper를 사용하지 않고 Docker Contrainer 쓰는 법
kafka:
image: bitnami/kafka:3.4
container_name: kafka
ports:
- "9092:9092"
environment:
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_BROKER_ID=1
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_LISTENERS=CONTROLLER://:9093,PLAINTEXT://:9092
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
- KAFKA_CFG_DELETE_TOPIC_ENABLE=true
- KAFKA_CFG_BROKER_ID=1
- KAFKA_CFG_NODE_ID=1
- KAFKA_ENABLE_KRAFT=yes
- TZ=Asia/Seoul