본문 바로가기
클라우드 및 인프라/Docker

Docker compose로 Kafka 설치하고 사용해보기

by 작은소행성 2022. 4. 27.

 

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

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

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가지 라는 내용인데 참고해서 사용하면 좋을 것 같다.

 

https://www.popit.kr/%ec%b9%b4%ed%94%84%ec%b9%b4-%ec%84%a4%ec%b9%98-%ec%8b%9c-%ea%b0%80%ec%9e%a5-%ec%a4%91%ec%9a%94%ed%95%9c-%ec%84%a4%ec%a0%95-4%ea%b0%80%ec%a7%80/

 

반응형