꾸물꾸물 졔의 개발공부

Kafka(4) - Kafka Docker 설치 본문

Database/Kafka

Kafka(4) - Kafka Docker 설치

체제 2022. 11. 23. 14:22

Docker 컨테이너로 kafka 를 설치하였다. 

  • Ubuntu 20.04 LTS
  • Docker version 20.10.21, build baeda1f

 

docker 컨테이너에 zookeeper 까지 한번에 설치할 수 있는 https://hub.docker.com/r/bitnami/kafka 를 사용하였다. 

$ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-kafka/master/docker-compose.yml > docker-compose.yml
$ docker-compose up -d

 

docker-compose.yml 

( kafka 설치 시 자동으로 작성되지만, 약간의 수정을 하였다. ) 

version: "2"
  
services:
  zookeeper:
    image: docker.io/bitnami/zookeeper:3.8
    ports:
      - "2181:2181"
    volumes:
      - "zookeeper_data:/bitnami"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: docker.io/bitnami/kafka:3.1
    hostname: kafka
    ports:
      - "8892:9092"
    volumes:
     - "kafka_data:/bitnami"
    environment:
            KAFKA_LISTENERS: PLAINTEXT://:9092
            KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://공인IP:8892
            KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
            ALLOW_PLAINTEXT_LISTENER: yes
    depends_on:
      - zookeeper

volumes:
  zookeeper_data:
          driver: local
  kafka_data:
          driver: local

KAFKA_LISTENERS & KAFKA_ADVERTISED_LISTENERS 설정

  •  KAFKA_ADVERTISED_LISTENERS 
    • kafka는 초기연결시에 해당 설정 주소를 노출시키고, client가 연결해서 접근
    • 즉, 해당 주소를 통해 외부에서 kafka 클러스터에 접속이 가능하다.  
    • {외부에서 접속가능한 공인 IP} : { 외부 접속 port } 
  • KAFKA_LISTENERS 
    • kafka 내부 클러스터 커뮤니케이션 발생시키는 설정 
    • {내부 IP (localhost)} : { 내부 kafka port }

 

KAFKA Port forwarding 포트 포워딩 

외부에서 내부 Kafka 도커 컨테이너에 접속하기 위해서, 포트 포워딩을 통해 외부-내부 주소를 연결하였다.

  • ports : "8892:9092" 
  • 외부에서 8892번 포트로 접근 → 컨테이너의 kafka 9092번 포트로 포워딩 → kafka 접속 

ex ) 공인 IP : 8892 로 접속하면 됨 

 

 docker-compose up -d  명령어로 docker-compose.yml 파일을 읽어들여 zookeeper 와 kafka 컨테이너를 실행한다.

 

 


 + Springboot 의 application.yml

spring:
  kafka:
    bootstrap-servers: 52.79.215.19:8892

외부 ( spring ) 에서 다음 주소로 Docker 컨테이너의 kafka로 접속

'Database > Kafka' 카테고리의 다른 글

Reactive Kafka - Sender , Springboot  (0) 2022.11.23
Kafka(5) - Kafka Docker 사용법  (0) 2022.11.23
Kafka(3) - Consumer 컨슈머  (0) 2022.11.23
Kafka(2) - Producer 프로듀서  (0) 2022.11.22
Kafka(1) - Kafka 란 ?  (0) 2022.11.22