Docker 를 이용해 kafka를 구동할 수 있다.
나는 docker-compose를 이용해 kafka single broker 설치 방법에 대해 정리하고자 한다.
사전 준비
나는 Mac에서 Docker Desktop을 설치해서 수행했다.
docker-compose 설치 후 버전을 확인한다.
docker-compose 버전이 2 이상이여야 한다.
docker-compose --version
Docker compose 설정파일 작성하기
docker compose를 이용하기 위해선 docker-compose.yml 이 있어야 한다.
서비스를 구성하는 설정파일을 작성해야하며
docker-compose.yml 파일에는 다음과 같이 작성한다.
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 실행하기
docker-compose.yml 이 작성된 폴더로 이동해서 docker compose를 실행하게 해준다.
docker-compose up -d
-d 옵션은 컨테이너를 백그라운드로 실행하게 해준다.
Docker 확인하기
docker 가 정상적으로 실행되었는지 아래 명령어로 확인한다.
docker ps
만약 ps 로 했는데 컨테이너가 안보이면 생성에 실패한 것이다.
-a 옵션으로 모든 컨테이너를 출력하고 생성에 실패한 컨테이너를 지우고 다시 위의 과정을 수행한다.
생성이 안되었다면 로컬에서 사용하고 있는 포트번호와 겹쳐서 사용되고 있는건 아닌지 확인할 필요가 있다.
docker ps -a
kafka에 접속하기
생성된 카프카에 접속하고 싶다면 아래 명령어로 접속하면 된다.
kafka로 작성된 부분에 컨테이너 이름을 작성해주면 된다.
docker container exec -it kafka bash
카프카 테스트 하기
카프카 생성에 성공했으니 토픽을 만들고 테스트를 해보자.
아래 링크에서는 카프카 공식 홈페이지로 카프카 실행 명령어들을 확인할 수 있다.
https://kafka.apache.org/quickstart
Kafka 내부로 접속해서 실행하기
위의 명령어처럼 카프카 내부로 접속했다면 아래 과정을 사용하면 된다.
토픽생성하기
kafka-topics.sh --create --topic board_topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
프로듀서 실행하기
콘솔 명령어는 bin/ 폴더 경로 아래에서 해준다.
# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
컨슈머 실행하기
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning
토픽 목록 조회하기
kafka-topics.sh --list --bootstrap-server localhost:9092
토픽 정보보기
bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--topic test_topic \
--describe
test_topic의 프로듀서 내용 확인하기
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
test_topic의 컨슈머 내용 확인하기
--from-beginning 옵션으느 해당 토픽의 맨 처음 메시지부터 소비한다는 뜻이다.
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning
토픽의 파티션 수 변경하기
kafka-topics.sh --zookeeper localhost:9092 --alter --topic test_topic -partitions 2
- 카프카에서는 운영 중에 간단한 명령어로 토픽의 파티션 수를 늘려줄 수 있다.
- 주의할 점은 토픽의 파티션 수는 증가만 가능하고 감소는 불가능하다.
- 파티션만 증가했다고 메시지에 대한 전체 처리 성능이 좋아지는 것은 아니다.
- 파티션의 수만큼 컨슈머 역시 추가해주어야 한다.
해당 설정 값을 바꾼 후에는 반드시 kafka 를 재시작 해야 한다.
카프카 설치 시 가장 중요한 설정 4가지 라는 내용인데 참고해서 사용하면 좋을 것 같다.
'공부 > Docker' 카테고리의 다른 글
Docker를 사용해 mysql 설치하고 원격접속하기 (0) | 2023.09.06 |
---|---|
[Docker] Docker 사용해서 Jenkins 젠킨스 설치하기 (0) | 2022.05.25 |
[Docker error] docker-compose up error - ERROR: Version in "./docker-compose.yml" is invalid. (0) | 2022.02.19 |
docker-compose 설치하기 (0) | 2022.02.15 |
docker: Error response from daemon: exec: "nvidia-container-runtime-hook": executable file not found in $PATH. (0) | 2022.01.22 |