본문 바로가기
DevOps

Docker Compose를 통한 Kafka 환경 구성 및 Kafka Manager 구성 (1)

by devLog by Ronnie's 2022. 11. 22.

docker compose를 통하여 Kafka 환경 설정법에 대해서 정리한다. 추가적으로 Kafka Manager 중 하나인 CMAK 도 함께 구성한다. 

첫번째로는 docker-compose 개념과 yml 설정법과 docker-compose 명령어에 대해서 정리한다.

 

Docker Compose를 통한 Kafka 환경 구성 및 Kafka Manager 구성

 

Docker Compose를 통한 Kafka 환경 구성 및 Kafka Manager 구성 

 

docker-compose란?


일반적으로 서비스를 제공하는 하나의 시스템은 여러 개의 어플리케이션이 서로 의존성 있게 구성되어 서비스를 제공한다. 이때 하나의 어플리케이션마다 컨테이너가 존재한다고 한다면 각각의 컨테이너를 컨트롤해야하는데 이 상황에서 도커 컴포즈를 이용하면 여려 개의 컨테이너의 실행을 한 번에 관리할 수 있게 도와주어 편리하게 이용할 수 있다.

 

즉, 도커 컴포즈란 docker multi-container application 들을 정의하고 실행시키는 Tool이며 docker-compose.yml 파일을 만들어 서비스에 필요한 app 정보를 정의하고 실행할 수 있다.

 

 

docker-compose.yml 정의


  • 터미널 vi 를 통해 docker-compose.yml 생성
  • 카프카 환경 구성 가장 기본이 되는 docker-compose 설정
  • 카프카 환경 구성 zookeeper 설치 필요하여 같이 구성
  • CMAK 카프카 운영 모니터링 중의 하나이다. 
version: "3.2"
networks:
  kafka_net: 

services:
  zookeeper:
    image: zookeeper:3.5.8 
    container_name: zookeeper
    ports:
      - "2181:2181"
    networks:
      - kafka_net 

  kafka:
    image: wurstmeister/kafka:2.12-2.0.1
    container_name: kafka    
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    networks:
      - kafka_net

  kafka_manager:
    image: hlebalbau/kafka-manager:stable
    ports:
      - "9000:9000"
    depends_on:
      - kafka
      - zookeeper
    environment:
      ZK_HOSTS: "zookeeper:2181"
      APPLICATION_SECRET: "random-secret"
    networks:
      - kafka_net

 

yml 설정 설명


  • ports : host 포트를 docker 포트로 포워딩 해주는 설정
  • volumes : host 경로 또는 생성된 volume으로 마운트
  • links : container에서 다른 container로 접속하기 위한 설정, 이때 IP가 아닌 hostname으로 접속
  • environment : 환경 변수 추가
  • networks : 네트워크 설정 (각각의 컨테이너가 속해있는 네트워크에서만 서로 통신이 가능)
  • image : 사용할 도커 이미지
  • version : 1 서비스 종료 2 이상 사용 (docker compose 버전을 의미함)

 

 

docker-compose 명령어


  • docker-compose up : 서비스 시작, 컨테이너가 생성된 상태가 아니면 새로 생성 (없다면 다음과 같이 생성하게 )

  • docker-compose down : 서비스 종료, 이미지를 저장하지 않으면 그동안 작업했던 내용 삭제됨

  • docker-compose start : 존재하는 컨테이너 시작

  • docker-compose stop : 컨테이너 정지
  • docker-compose restart : 컨테이너 재시작
  • docker container ls : 컨테이너 실행 여부 확인 (docker ps : 도커 프로세스 확인) , 아래와 같이  zookeeper kafka 실행된 모습을 확인할 있다.

 

만약 docker-compose 실행 다음과 같은 에러가 발생한다면 해당 포트의 PID 값을 찾아 종료 재실행 해준다. (lsof -i TCP:2181)

 

 

다음 시간에는 Docker Desktop을 통해 확인하는 방법과 brew를 통해 설치하는 방법 및 CMAK에 접속하여 설정하는 방법에 대해서 정리한다.

 

 

 

참고 문서


* compose referene: https://docs.docker.com/compose/compose-file/

* docker-compose 설치https://docs.docker.com/docker-for-mac/install/

 

댓글