데이터 엔지니어링
실시간 데이터 분석 환경 구축 - 03. Kafka 설치 및 실시간 데이터 스트리밍 구성
Tempo
2025. 3. 24. 08:00
Kafka를 구성하여 실시간 스트리밍 데이터를 Clickhouse로 처리하는 분석 환경을 구축합니다.
💡 이 글에서 다룰 내용:
- Kubernetes 환경에서 Kafka 설치 및 설정
- Helm 차트를 활용한 Kafka 배포
- Kafka 토픽 생성 및 데이터 스트리밍 테스트
1. Kafka란?
Kafka는 대용량 실시간 데이터 스트리밍을 위한 분산 메시징 플랫폼입니다.
ClickHouse와 함께 사용하면 실시간 데이터 수집 및 분석이 가능합니다.
📌 Kafka 주요 개념
개념 설명
Producer | 데이터를 Kafka에 보내는 역할 |
---|---|
Consumer | Kafka에서 데이터를 읽는 역할 |
Topic | 데이터가 저장되는 논리적 공간 |
Broker | Kafka 서버 (데이터를 저장하고 관리) |
*Zookeeper | Kafka의 클러스터 상태 관리 |
- Kafka 4.0 이상부터 Message queue를 이용한 처리가 가능하여 Zookeeper 설치가 필수가 아닙니다.(관련 링크)
2. Kubernetes에 Kafka 설치
Kafka를 직접 설정하는 것은 복잡하므로 Bitnami Helm 차트를 사용해 쉽게 배포합니다.
🔹 1) Helm 저장소 추가
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
🔹 2) Kafka 설치
value.yaml 파일 수정(bitnami kafka 3.9.0-debian-12-r12 버전 기준)
- 기본 values.yaml 파일(링크)
- 해당 파일을 복사하여 IDE(vscode 등)에서 편집합니다.
- replicaCount 수정
- 로컬 배포 테스트용으로 controller와 broker를 1개만 배포합니다.
controller:
를 검색(line:495) replicaCount 숫자를 1로 변경합니다.broker:
를 검색(line:956) replicaCount 숫자를 1로 변경합니다.
- auth 설정
- 이전에 배포한 clickhouse에서 접속하기 위해 auth를 설정합니다.
sasl:
을 검색(line:228) 하위의 interbroker, controller, client 의 password 값을 원하는 값으로 변경합니다.
helm install kafka bitnami/kafka -f ./kafka/values.yaml --create-namespace --namespace kafka
설치가 완료되면 다음 명령어로 Kafka가 정상적으로 실행되는지 확인합니다.
kubectl get pods -n kafka
출력 예시:
NAME READY STATUS RESTARTS AGE
kafka-broker-0 1/1 Running 0 44m
kafka-controller-0 1/1 Running 0 44m
3. Kafka 클러스터 설정 확인
Kafka가 정상적으로 작동하는지 확인하려면 Kafka CLI를 사용합니다.
🔹 1) Kafka Broker 상태 확인
kubectl get svc -n kafka
출력 예시:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kafka ClusterIP 10.108.250.227 <none> 9092/TCP 45m
kafka-broker-headless ClusterIP None <none> 9094/TCP,9092/TCP 45m
kafka-controller-headless ClusterIP None <none> 9094/TCP,9092/TCP,9093/TCP 45m
4. Kafka 토픽 생성 및 메시지 테스트
✅ 2025.03 기준 bitnami/kafka 설치 및 kafka-client 내 토픽 생성 및 메시지 테스트 문제
- kafka 설치 후에도 토픽 생성 및 확인이 되지 않습니다.(connection timeout)
- 이에 다음 글에서 redpanda-console을 설치하여 kafka 토픽을 관리합니다.
반응형