카프카 docker compose.yaml

600g (Kim Dong Geun)·2021년 7월 22일
0

환경세팅 1편으로 포스팅 변경될 예정

도커 컴포즈 설정하는데, 이렇게 시간 걸리기 있는지 모르겠다.

docker hub docu에서는 docker compose up -d --scale kafka=3 으로 스케일링 해주고 있는 것 같은데, 왜 난 container 이름 규칙 때문에 생성되지 않는지 모르겠다. 그래서 각자 설정 해주기로 함...

도커 컴포즈 코드

  • .env
hostname=192.168.219.105
  • docker-compose.yaml
version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
  kafka-1:
    container_name: kafka-1
    image: wurstmeister/kafka:2.13-2.7.0
    ports:
      - "9093:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_HOST_NAME: "${hostname}"
      BOOTSTRAP_SERVERS: "${hostname}:9093, ${hostname}:9094, ${hostname}:9095"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper
  kafka-2:
    container_name: kafka-2
    image: wurstmeister/kafka:2.13-2.7.0
    ports:
      - "9094:9092"
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_HOST_NAME:  ${hostname}
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      BOOTSTRAP_SERVERS: ${hostname}:9093, ${hostname}:9094,  ${hostname}:9095
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper
  kafka-3:
    container_name: kafka-3
    image: wurstmeister/kafka:2.13-2.7.0
    ports:
      - "9095:9092"
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_HOST_NAME: ${hostname}
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      BOOTSTRAP_SERVERS: ${hostname}:9093, ${hostname}9094, ${hostname}:9095
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper

192.168.219.105 이부분은 internal ip이니 적당히 알아서 본인 ip로 변경하면된다.

도커 허브 레포에서는 멀티 브로커 구성시 localhost 로 ip를 설정하지 말라 권하고 있다.

발생한 문제점

사실 카프카 클러스터 구성이 되지 않아다.
카프카를 멀티 브로커로 구성하려하는데 아래와 같이 노드를 찾을 수 없다는 Error가 발생을 했다.

주말동안 문제를 찾으려고 꽤 시간을 많이 소비했는데 문제점은 다음과 같다.

KAFKA_ADVERTISED_HOST_NAME을 localhost로 잡아주면 발생하는 문제였다.
도커 컴포즈를 구성할때 왜 localhost로 잡으면 클러스터 구성이 되질 않는지에 꽃혀서 한동안 해매었다.

주키퍼에서 카프카 브로커들을 검색하는 과정에서 문제가 생기는 것 같다.
그래서 다른 카프카 클러스터 구성을 도커로 한것을 찾아보면 각자의 주키퍼를 만들고 환경 구성을 하는 것 같던데, 더 찾아보면 러닝커브가 길어질 것 같아서 나중에 찾아보도록 하겠다 그리고 르블랑 법칙

결론

도커 컴포즈, k8s가 지원하는 네트워크 레이어에 대해서 더 자세히 알아봐야 겠다 라는 생각이듬
아니면 k8s에 따로 카프카 클러스터 환경을 구축해보든가..

profile
수동적인 과신과 행운이 아닌, 능동적인 노력과 치열함

0개의 댓글