26Z03d

Young-Kyoo Kim·2026년 8월 3일

Kafka Topic이 정상적으로 생성되고, 128개 노드 분산 환경 및 StarRocks Routine Load로 데이터가 문제없이 들어갈 준비가 되었는지 검증하는 단계별 테스트 방법입니다.

Strimzi Operator 환경에서는 K8s 내부의 Kafka Pod 내에 이미 카프카 CLI 도구들(kafka-topics.sh, kafka-console-producer.sh, kafka-console-consumer.sh)이 내장되어 있어 별도 툴 설치 없이 바로 테스트가 가능합니다.


1단계: Topic 생성 상태 및 Partition/Replica 배치 확인

생성한 minio-aistor-object-events 토픽의 파티션 32개와 복제본(Replica) 설정이 제대로 바인딩되었는지 확인합니다.

# Kafka Pod(0번 파드) 내부로 들어가 Topic 상세 정보 확인
kubectl exec -it my-kafka-dual-role-0 -n kafka -- \
  bin/kafka-topics.sh --bootstrap-server localhost:9092 \
  --describe --topic minio-aistor-object-events

🔍 정상 출력 체크포인트

  • PartitionCount: 32: 파티션 개수가 32개인지 확인
  • ReplicationFactor: 3: 복제본 수가 3인지 확인
  • Partition: 0 ~ 31 목록이 출력되고, 각 파티션마다 Leader, Replicas, Isr 정보가 고르게 분산되어 있는지 확인합니다.

2단계: Console Producer / Consumer 수동 송수신 테스트

MinIO에서 들어올 실제 이벤트 Payload(JSON 형태)와 유사한 테스트 메시지를 발행해 보고, 정상적으로 Read가 되는지 검증합니다.

① Consumer 실행 (터미널 1번)

이벤트를 실시간으로 모니터링하기 위해 Consumer를 먼저 띄워둡니다.

kubectl exec -it my-kafka-dual-role-0 -n kafka -- \
  bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
  --topic minio-aistor-object-events \
  --from-beginning

② Producer 실행 및 테스트 메시지 전송 (터미널 2번)

새 터미널을 열고, MinIO AIStor의 Event Notification 형식과 유사한 Mock JSON 메시지를 전송합니다.

kubectl exec -it my-kafka-dual-role-0 -n kafka -- \
  bin/kafka-console-producer.sh --bootstrap-server localhost:9092 \
  --topic minio-aistor-object-events

Producer 입력 프롬프트(>)가 뜨면 아래 샘플 JSON 데이터를 복사해서 붙여넣고 엔터(Enter)를 누릅니다.

{"EventName":"s3:ObjectCreated:Put","Key":"bucket-a/logs/2026/08/03/app.log","Records":[{"s3":{"bucket":{"name":"bucket-a"},"object":{"key":"logs/2026/08/03/app.log","size":1048576}}}]}

결과 확인: 터미널 1번(Consumer) 화면에 위 메시지가 즉시 출력되면 Kafka 메시지 큐 송수신 연동은 100% 정상입니다.


3단계: StarRocks Routine Load 파이프라인 연동 상태 확인

StarRocks에서 Kafka Topic을 구동하는 Routine Load 상태가 RUNNING이고, Consumer Lag 없이 데이터를 정상 소비하고 있는지 확인합니다.

StarRocks FE(MySQL CLI)에 접속하여 아래 쿼리를 실행합니다.

USE minio_audit;

-- Routine Load 상태 상세 조회
SHOW ROUTINE LOAD FOR minio_event_load\G

🔍 핵심 모니터링 항목

  • State: 반드시 RUNNING 이어야 합니다. (만약 PAUSEDCANCELLED라면 ReasonOfStateChanged 항목에서 에러 메시지 확인)
  • Statistic: receivedBytes, toRows 등의 숫자가 정상적으로 증가하고 있는지 확인합니다.
  • Progress: 32개 파티션(0~31) 각각의 Offset 수치가 나오며, 현재 Kafka의 Latest Offset을 잘 따라가고 있는지(Lag 유무) 확인합니다.
-- StarRocks 테이블에 데이터가 정상 적재되었는지 쿼리
SELECT * FROM object_events ORDER BY event_time DESC LIMIT 10;

4단계: K8s 외부/MinIO 노드에서 Kafka 연결 및 포트 접근성 테스트

MinIO 128개 노드가 K8s 내부의 Kafka 서비스로 접근할 수 있는지(네트워크 연결성) 테스트합니다.

MinIO 노드 중 한 곳에 접속하여 Kafka Bootstrap 서비스 포트(9092 또는 NodePort/Ingress 포트)로 TCP 통신을 확인합니다.

# MinIO 노드에서 실행 (nc 또는 curl/telnet 활용)
nc -zv <KAFKA_BOOTSTRAP_IP_OR_DNS> 9092

succeeded! 또는 open 메시지가 뜨면 MinIO AIStor에서 Kafka로 Event Notification을 쏠 수 있는 L4/L7 네트워크 경로가 확보된 것입니다.


🛠️ 성능 및 부하 테스트 (선택 사항)

실제 Peak 트래픽인 3,000 TPS 버스트 상황을 모의 실험해 보려면 내장 벤치마크 툴을 사용할 수 있습니다.

# 3,000 TPS 속도로 총 10만 건의 테스트 메시지 발행 테스트
kubectl exec -it my-kafka-dual-role-0 -n kafka -- \
  bin/kafka-producer-perf-test.sh \
  --topic minio-aistor-object-events \
  --num-records 100000 \
  --record-size 2048 \
  --throughput 3000 \
  --producer-props bootstrap.servers=localhost:9092 acks=1

이 테스트를 통해 32개 파티션의 Throughput 지연 시간(Latency) 및 StarRocks Routine Load의 실시간 인제스천 추종 속도를 검증할 수 있습니다.

0개의 댓글