Docker Compose를 이용하여 Kafka를 실행해보자

배상규·2023년 9월 6일
0
post-thumbnail

Docker를 이용하여 Kafka를 구동시켜보자


  • 지금까지 kafka를 다운받아 cli로 구동시켜 보았다.
  • config파을 등을 변경하여 설정하는 있는 방법도 있지만, dokcer를 이용하여 kafka를 구동해 보자.
  • 단일 docker 서버의 클러스터링을 구현해 볼 것이다.
  • 이후 여러 docker 서버에서 클러스트링하는 방법도 실습하기로 한다.

Docker Compose 설정 파일 작성하기


  • docker compose를 이용하기 위하여 docker-compse.yml 파일을 작성한다
  • docker-compose-single.yml 파일을 생성하고 다음과 같이 작성하자.
version: '2'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  kafka1:
    image: confluentinc/cp-kafka:latest
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3

  kafka2:
    image: confluentinc/cp-kafka:latest
    ports:
      - "9093:9092"
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3

  kafka3:
    image: confluentinc/cp-kafka:latest
    ports:
      - "9094:9092"
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka3:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
  • version : Compse 파일의 버전을 지정한다.
  • image: Docker 이미지로 Confluent Inc.에서 제공하는 최신 ZooKeeper 이미지를 사용하고 있습니다.
  • ports: 호스트와 컨테이너 간의 포트 매핑을 설정합니다. 2181 포트는 호스트에서 접근 가능한 상태로 설정되어 있습니다.
  • environment: 환경 변수를 설정합니다. 여기서는 ZooKeeper의 클라이언트 포트(ZOOKEEPER_CLIENT_PORT)와 틱 시간(ZOOKEEPER_TICK_TIME)을 설정하고 있습니다.
  • environment: 환경 변수를 설정합니다. 이 설정은 각 브로커의 고유한 브로커 ID(KAFKA_BROKER_ID)를 설정하고, 브로커가 리스닝할 주소와 포트(KAFKA_ADVERTISED_LISTENERS, KAFKA_LISTENERS), ZooKeeper 연결 정보(KAFKA_ZOOKEEPER_CONNECT), 오프셋 토픽의 복제 팩터(KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR) 등을 설정합니다.

docker-compose 실행


docker-compose up -d 명령을 통해 컨테이너를 실행한다.

$ docker-compose up -d
[+] Running 5/5
 - Network docker_default        Created                                                                                                                                                                                                                                                                              0.7s 
 - Container docker-kafka3-1     Started                                                                                                                                                                                                                                                                              2.4s
 - Container docker-kafka2-1     Started                                                                                                                                                                                                                                                                              3.2s 
 - Container docker-zookeeper-1  Started                                                                                                                                                                                                                                                                              3.6s 
 - Container docker-kafka1-1     Started                                                                                                                                                                                                                                                                           

topic 생성 하기


$ $ docker-compose exec kafka1 kafka-topics --create --topic my-topic --bootstrap-server kafka1:9092 --replication-factor 3 --partitions 3

Created topic my-topic.

생성된 토픽 확인하기

$ docker-compose exec kafka1 kafka-topics --describe --topic my-topic --bootstrap-server kafka1:9092 
Topic: my-topic TopicId: tCgMk5P3TS2Flgmlznb7aA PartitionCount: 3       ReplicationFactor: 3    Configs: 
        Topic: my-topic Partition: 0    Leader: 3       Replicas: 3,2,1 Isr: 3,2,1
        Topic: my-topic Partition: 1    Leader: 1       Replicas: 1,3,2 Isr: 1,3,2
        Topic: my-topic Partition: 2    Leader: 2       Replicas: 2,1,3 Isr: 2,1,3
profile
기록에 성장을

0개의 댓글