데이터 엔지니어링

실시간 데이터 분석 환경 구축 - 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 등)에서 편집합니다.
  1. replicaCount 수정
  • 로컬 배포 테스트용으로 controller와 broker를 1개만 배포합니다.
    controller: 를 검색(line:495) replicaCount 숫자를 1로 변경합니다.
    broker:를 검색(line:956) replicaCount 숫자를 1로 변경합니다.
  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 토픽을 관리합니다.
반응형