docker compose를 활용한 카프카 클러스터 구축하기

임태빈·2022년 1월 2일
0

docker

목록 보기
1/3

안녕하세요.
갈비만두를 좋아하는 개발자 임태빈입니다.

카프카 클러스터를 도커 컴포즈를 활용해서 만들어보려고 합니다.

먼저 코드부터 공유드리겠습니다.

version: "3.7"

services:
  broker1:
    image: tae2089/kafka:1.7
    container_name: broker1
    hostname: broker1
    environment:
      - MYID=1
      - ZOO_SERVERS=server.1=broker1:2888:3888 server.2=broker2:2888:3888
      - KAFKA_LISTENER=PLAINTEXT://0.0.0.0:9092
      - KAFKA_ADVERTISED_LISTENER=PLAINTEXT://${HOSTIP}:9092
      - PORT=9092
      - BROKER=${hostIP}
      - ZOO_CONNECT=broker1:2181,broker2:2182
    tty: true
    ports:
      - "2181:2181"
      - "9092:9092"
    depends_on:
      - broker2

  broker2:
    image: tae2089/kafka:1.7
    container_name: broker2
    hostname: broker2
    environment:
      - MYID=2
      - ZOO_SERVERS=server.1=broker1:2888:3888 server.2=broker2:2888:3888
      - KAFKA_LISTENER=PLAINTEXT://0.0.0.0:9093
      - KAFKA_ADVERTISED_LISTENER=PLAINTEXT://${HOSTIP}:9093
      - PORT=9093
      - BROKER=${hostIP}
      - ZOO_CONNECT=broker1:2181,broker2:2182
    tty: true
    ports:
      - "2182:2181"
      - "9093:9093"
networks:
  bridge:

해당 코드를 구현하면서 많은 어려움이 이었습니다.

그중 listeners와 advertised.listeners에 대해 자세히 알지 못한채 진행했던게 화근이 되었습니다..ㅠㅠ

listeners는 카프카 브로커가 내부적으로 바인딩하는 주소이며
advertised.listeners는 카프카 프로듀서, 컨슈머에게 노출할 주소. 설정하지 않을 경우 디폴트로 listners 설정이 적용됩니다.

이를 꼭 기억해야합니다!!!

그리고 도커에서 127.0.0.1내부에서 사용하면 내부IP로 할당되기에 나중에 다른 브로커와 연결할때 인식을 못하는 경우가 발생할 수 있다. 이 점도 꼭 아셔야 합니다!!

여기에 broker를 추가적으로 연결하기를 원하신다면 여기에 예시를 작성해 두었습니다.

주의할 점으로 해당 코드는 공부용으로 만든 코드라 보안 설정은 안되어 있습니다. 또한, hostIP를 확인해서 잘 넣어야 합니다. 127.0.0.1로 하면 리스너가 인식을 하지 못해 에러가 발생하는 점을 꼭 기억하셔야 합니다!!

profile
golang과 서버 개발을 하고 있는 개발자입니다.

0개의 댓글