본문 바로가기
AMQP/Kafka

Kafka 세팅 docker compose yaml

by Bill Lab 2024. 9. 12.
728x90

Kafka 를 세팅하는 방법에는 여러가지가 있다.

 

1. on premise 로 직접 설치

 

2. docker 로 하나씩 띄우기

 

3. docker compose 로 한번에 띄우기 

 

4. K8S 내 yaml 로 띄우기

 

5. K8S 내 kustomise 로 띠우기

 

6. K8S 내 helm 으로 직접 설치하기

 

이글에서는 다양한 방법중 docker compose 를 이용하여 local 환경에서 가볍게 세팅하는 방법에 대해 알아보겠다.

우선 docker compose 를 사용하기 위한 설치는 필수!!

(brew setting 은 필수!!(mac 기준이다.)

brew install cask docker

 

설치한 다음 

docker -v 와

docker-compose -v 명령어를 실행하여 제대로 설치가 되었는지 확인해보자!

 

이미 docker 설치는 되었는데 docker compose 설치가 안되었으면

 

brew install cask docker-compose

를 실행하여 docker-compose 를 설치해준다!

 

제대로 설치되었으면, 위의 버전 명령어를 입력했을 시 제대로된 버전정보가 표시될 것이다.

(명령어를 인식하면 끝)

 

그럼 kafka를 docker-compose 기반으로 띄워보자!~

참고로 kafka 의 구성은 main 의 역할인 kafka와 헬스체크 등 보조적인 역할인 zookeeper 가있다.

(최근에 zookeeper 의 의존성을 없애기 위해 kafka 단독으로 개발하여 나온 툴이 있는데,

zookeeper 대비 개선점은 확인되지 않는다.)

 

version: "1"

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 3000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVER_ID: 1

  kafka-cluster1:
    image: confluentinc/cp-kafka:latest
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-cluster1:29092,EXTERNAL://localhost:9092
      KAFKA_NUM_PARTITIONS: 5
      KAFKA_DEFAULT_REPLICATION_FACTOR: 3

  kafka-cluster2:
    image: confluentinc/cp-kafka:latest
    ports:
      - "9093:9093"
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-cluster2:29093,EXTERNAL://localhost:9093
      KAFKA_NUM_PARTITIONS: 5
      KAFKA_DEFAULT_REPLICATION_FACTOR: 3

  kafka-cluster3:
    image: confluentinc/cp-kafka:latest
    ports:
      - "9094:9094"
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-cluster3:29094,EXTERNAL://localhost:9094
      KAFKA_NUM_PARTITIONS: 5
      KAFKA_DEFAULT_REPLICATION_FACTOR: 3

 

위의 docker compose 파일(파일명: docker-compose-kafka.yml)을 실행하려면

docker-compose -f docker-compose-kafka.yml up -d

를 입력하면 된다.

 

위에서 보면 알겠지만,

기본적인 config setting 은 docker compose 내부에 입력하여 컨테이너를 띄울때 해당 값으로

띄울 수 있고, 매번 들어가서 세팅할 필요가 없다는 장점이 있다!

 

728x90