본문 바로가기
IT/Docker.K8S

[Docker] Kafka

by 성준하이 2023. 9. 8.
반응형

docker 에 대한 설명과 kafka 에 대한 설명은 아래 참고 포스팅 참고 바란다.

 

1. 도커 명령어로 kafka 이미지 받아오기

-kafka 는 테스트를 하기 위해서는 zookeeper 도 필요하기에 두개의 이미지를 받아오고 둘다 띄워야한다. 

https://hub.docker.com/r/bitnami/kafka

 

Docker

 

hub.docker.com

https://hub.docker.com/r/bitnami/zookeeper

 

Docker

 

hub.docker.com

 

2. 도커를 띄우기 위한 docker-compose.yml 파일 생성

version: "2"

services:
  zookeeper:
    container_name: zookeeper
    image: docker.io/bitnami/zookeeper:3.8
    ports:
      - "2181:2181"
    volumes:
      - "zookeeper_data:/bitnami"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    hostname: kafka
    container_name: kafka
    image: docker.io/bitnami/kafka:3.4
    ports:
      - "9092:9092"
    volumes:
      - "kafka_data:/bitnami"
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
    depends_on:
      - zookeeper


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

3. docker-compose up -d 명령어 수행

 

4. 두개의 터미널 띄워서 하나는 producer / 하나는 consumer 역할 띄우기.

- docker exec -it kafka /bin/bash 
명령어를 사용하여 도커 내 카프카에 진입한다.

 

5. kafka내에서도 여러개의 공간을 만들수 있는데 이걸 topic 이라고 한다.
사용할 토픽을 만든다.

kafka-topics.sh --bootstrap-server localhost:9092 --create --topic kafkatest --partitions 1 --replication-factor 1

 

6. 이제 4번에서 띄운 2개의 터미널에서 각각 하나는 producer 역할을 하나는 consumer 역할을 수행할 명령어를 날린다.

kafka-console-producer.sh --bootstrap-server localhost:9092 --topic kafkatest

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafkatest

 

7. 그럼 아래 그림과 같이 두개의 터미널에서 쉘이 다음과 같고 producer에서 메세지를 날리면 consumer에서 메세지를 받는다.

참고로 위 yml 에서 kafka.hostname 부분이 있는데, 디폴트로 설정하면 자동으로 이름이 붙지만
스프링 등에서 listener consumer project 로 사용하려면 hostname 을 지정해줘야하기에 붙여줬다.
그리고 나서 hosts 파일을 수정하여 url 주소를 매핑하였다.
hosts파일 관련해서는 아래 참고 포스팅 참고 바란다.

그리고 만약 ui 에서 카프카를 확인하고 싶다면 

https://hub.docker.com/r/provectuslabs/kafka-ui

 

Docker

 

hub.docker.com

해당 이미지를 받은 후 

docker-compose.yml파일에 service부분에

  kafka-ui:
    image: provectuslabs/kafka-ui
    container_name: kafka-ui
    ports:
      - "8989:8080"
    restart: always
    environment:
      - KAFKA_CLUSTERS_0_NAME=kafka
      - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
      - KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181

를 추가해주고 docker-compose up 을 하면

localhost:8989 로 접근 가능하다.


참고 포스팅

https://thenicesj.tistory.com/88

 

Docker란?

이번 시간에는 도커를 다뤄볼 것이다. 얼마전 영상에서 saas / paas / iaas 를 다뤘는데 이와 비슷하면서도 다른 내용의 도커이니 좀더 알고 싶다면 아래 포스팅을 보고 오는것을 추천드린다. https://t

thenicesj.tistory.com

https://thenicesj.tistory.com/259

 

Apache Kafka 란?

Apache Kafka 에 대해서 알아보려고 한다. 카프카(Kafka)는 2011년 미국 링크드인(Linkedin)에서 개발했다. 카프카 이전에는 다음 그림과 같이 모든 것들이 서로 연관되어서 결합력이 높았다. 하지만 결합

thenicesj.tistory.com

https://thenicesj.tistory.com/684

 

반응형

'IT > Docker.K8S' 카테고리의 다른 글

docker-compose  (50) 2023.10.03
PV, PVC (Persistent Volume Claim)  (50) 2023.09.23
[Docker] Redis  (45) 2023.09.07
도커 명령어 정리  (56) 2023.09.06
docker 실습 part.4  (22) 2022.04.09

댓글