일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- state
- It
- java
- 자바
- 조건문
- 반복문
- Sequelize
- spring boot
- 개발자
- vue
- swagger
- kafka
- class
- 상속
- javascript
- AWS
- react
- file upload
- Nest.js
- node.js
- Producer
- 개발이 취미인 사람
- restful api
- props
- Kotlin
- SWIFT
- front-end
- 코틀린
- back-end
- component
- Today
- Total
개발이 취미인 사람
[Kafka] - 로컬 개발 환경 구축 본문
개요
안녕하세요 이번 시간에는 로컬 PC 환경에 Kafka 환경을 구축하고 토픽을 생성해서 콘솔 환경에서 메시지를 전송하고 메시지를 읽는 실습 시간을 가져보겠습니다.
혹시 이전 시간에 Kafka에 대한 기본 개념을 학습하고 오지 않으신 분들은 다음 링크를 통해 학습하고 오시는 걸 추천드리겠습니다.
개발환경 구축
물리적인 PC환경에 도커를 설치를 하거나 클라우드에 생성하는 방법도 있지만 Docker 환경에서 카프카를 구축하겠습니다.
아무래도 카프카 서버를 실제 구축해서 운영하는 부분보다는 토픽을 생성하고 메시지를 발송하고 수신하는 부분에 초점을 맞추도록 하겠습니다.
만약 로컬 환경에 Docker Desktop을 설치하지 않으신 분들은 꼭 설치하시면 감사하겠습니다.
자 그럼 Docker Desktop을 설치했다는 가정하에 아래 파일을 다운로드해 주신 다음 docker-compose -f ./kafka-single.yaml up -d 이라는 명령어를 실행시켜 줍니다.
kafka-single.yaml 파일 내용은 아래와 같습니다.
version: "3"
networks:
kafka-single:
driver: bridge
services:
kafka:
image: bitnami/kafka:latest
container_name: kafka-single
ports:
- "9092:9092"
environment:
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_NODE_ID=1
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_LOG_DIRS=/bitnami/kafka/data
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1
- KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=1
- KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1
- KAFKA_CFG_MIN_INSYNC_REPLICAS=1
volumes:
- ./.data/kafka:/bitnami/kafka/data
networks:
- kafka-single
많은 내용들이 있지만 상세한 환경변수 정보는 다음 링크를 통해 필요한 설정을 추가하시는 걸 추천드리겠습니다.
https://hub.docker.com/r/bitnami/kafka
위 yaml 파일을 보시면 중요한 부분 한 가지는 Zookeeper 서버를 설정하는 부분이 없습니다.
카프카는 3.5 버전부터는 Zookeeper 서버를 사용하지 않고 독립적인 카프카 실행 환경을 구축할 수 있게 변경되었습니다.
공식 문서 내용을 꼭 참고하시는 걸 추천드리겠습니다.
토픽 생성 및 메시지 발송
위 매뉴얼을 그대로 잘 따라 했다면 아래 이미지와 같이 kafka 서버가 실행되는 걸 확인할 수 있습니다.
그럼 이제 kafka-single 가상 환경에 접속해서 토픽을 생성하고 메시지 수신과 발신을 확인해 보겠습니다.
docker-compose 명령어를 실행시킨 디렉터리 위치로 이동합니다. 이동 후 아래와 같이 두 개의 터미널을 실행시킵니다.
이제 가상환경에 접속하기 위해 각 터미널에 다음과 같은 명령어를 실행시키겠습니다.
docker exec -it kafka-single /bin/bash
그럼 뭔가 처음 보는 이상한 글자가 보입니다.
위와 같은 이미지가 보인다면 정상적으로 접속이 되었습니다.
이제 순차적으로 토픽을 조회하고 생성해 보겠습니다.
- 토픽 조회
kafka-topics.sh --list --bootstrap-server localhost:9092
- 토픽 생성
kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
- 토픽 삭제
kafka-topics.sh --delete --topic test-topic --bootstrap-server localhost:9092
가장 먼저 토픽 조회 명령어를 실행해 보겠습니다. 아무 내용도 콘솔에 출력되지 않았다면 토픽이 존재하지 않다는 걸 알 수 있습니다.
그럼 test-topic이라는 토픽을 생성해 보겠습니다.
Created topic test-topic이라는 글자가 출력되면 정상적으로 토픽을 생성했다고 생각하시면 됩니다.
토픽 삭제 명령어도 실행시켜 다음과 같이 출력되면 성공입니다.
자 그럼 이제 Producer 콘솔과 Consumer 콘솔에 접속을 해보겠습니다.
- Producer 콘솔 실행
kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
- Consumer 콘솔 실행
kafka-console-consumer.sh --topic test-topic --bootstrap-server localhost:9092 --from-beginning
위 두 명령어를 실행하면 아래와 같은 화면을 확인할 수 있습니다.
Producer 콘솔에서 메시지를 입력해서 엔터를 치면 Consumer 콘솔에 메시지가 출력되는 걸 확인할 수 있습니다.
아래는 Kafka-ui 웹 사이트에서 확인한 내용입니다.
우리가 발송한 메시지가 메시지 큐에 잘 전송되고 컨슈머는 해당 데이터를 가져가는 걸 확인할 수 있습니다.
Kafka-ui yaml 파일은 아래 공유하도록 하겠습니다. 참고로 꼭! Kafka 서버를 먼저 실행시키고 Kafka-ui 서버를 실행해야 합니다.
이번 시간에는 로컬 환경에서 카프카를 가볍게 설정해서 토픽을 생성하고 메시지를 발송 수신 테스트를 진행했습니다.
처음 하시는 분들은 복잡할 수 있기 때문에 질문은 댓글로 부탁드리겠습니다.
'백앤드(Back-End) > Kafka' 카테고리의 다른 글
[Kafka] - Broker 리플리케이션(Replication) 동작 원리 (1) | 2024.10.15 |
---|---|
[Kafka] - Broker 메시지 복제와 커밋 ISR(In Sync Replica) (0) | 2024.08.02 |
[Kafka] - Kafka Consumer 메시지 소비 (0) | 2024.08.02 |
[Kafka] - Kafka Producer 메시지 생성 (0) | 2024.08.01 |
[Kafka] - 기본 개념 (0) | 2024.07.19 |